public async Task <IActionResult> ChangeUser(ChangeUserViewModel model) { if (ModelState.IsValid) { var path = model.ImageUrl; if (model.ImageFile != null) { path = await _imageHelper.UploadImageAsync(model.ImageFile, "People"); } var user = await _userHelper.GetUserByEmailAsync(User.Identity.Name); if (user != null) { if (await _userHelper.IsUserInRoleAsync(user, "Admin")) { var admin = _converterHelper.ToAdmin(model, path); await _adminRepository.UpdateAsync(admin); ViewBag.UserMessage = "User updated"; } else if (await _userHelper.IsUserInRoleAsync(user, "Client")) { var client = _converterHelper.ToClient(model, path); await _clientRepository.UpdateAsync(client); ViewBag.UserMessage = "User updated"; } else if (await _userHelper.IsUserInRoleAsync(user, "Secretary")) { var secretary = _converterHelper.ToSecretary(model, path); await _secretaryRepository.UpdateAsync(secretary); ViewBag.UserMessage = "User updated"; } else if (await _userHelper.IsUserInRoleAsync(user, "Mechanic")) { var mecanic = _converterHelper.ToMecanic(model, path); await _mechanicRepository.UpdateAsync(mecanic); ViewBag.UserMessage = "User updated"; } } else { ModelState.AddModelError(string.Empty, "User not found."); } } return(View(model)); }