public async Task <ActionResult> Create(AdminViewModel model) { try { ModelState.Remove("Ger_ActivationStartDate"); ModelState.Remove("Ger_ActivationEndDate"); if (ModelState.IsValid) { if (await adminsService.IsNationalIdAlreadyExists(model.NationalId)) { TempData[Constants.ErrorMessage] = Messages.NationalIdAlreadyExists; await model.FillRolesList(adminsService); return(View(model)); } if (adminsService.IsEmailExists(model.Email)) { TempData[Constants.ErrorMessage] = Messages.EmailAlreadyExists; await model.FillRolesList(adminsService); return(View(model)); } if (adminsService.IsPhoneNumberExists(model.MobileNumber)) { TempData[Constants.ErrorMessage] = Messages.MobileNumberAlreadyExists; await model.FillRolesList(adminsService); return(View(model)); } if (Request.Form.Files?.Count > 0) { MemoryStream ms = new MemoryStream(); Request.Form.Files["ProfileImage"].CopyTo(ms); model.ProfileImageData = ms.ToArray(); Request.Form.Files["SignatureImage"].CopyTo(ms); model.SignatureImageData = ms.ToArray(); ms.Close(); ms.Dispose(); model.ProfileImage = await SaveFile(Request.Form.Files["ProfileImage"]); model.SignatureImage = await SaveFile(Request.Form.Files["SignatureImage"]); } var admin = new Admin { FirstName = model.FirstName, SecondName = model.SecondName, ThirdName = model.ThirdName, LastName = model.LastName, NationalId = model.NationalId, EmplyeeNo = model.EmplyeeNo, MobileNumber = model.MobileNumber, Email = model.Email, IsActive = model.IsActive, ActivationStartDate = model.ActivationStartDate, ActivationEndDate = model.ActivationEndDate, Title = model.Title, CanApprove = model.CanApprove, ProfileImage = model.ProfileImage, SignatureImage = model.SignatureImage, IsManager = model.IsManager, DepartmentCode = model.DepartmentCode, ProfileImageData = model.ProfileImageData, SignatureImageData = model.SignatureImageData, Password = hasherService.ComputeSha256Hash(model.MobileNumber), Roles = model.SelectedRolesIds.Select(i => new AdminRole { RoleId = i }).ToList() }; await adminsService.Add(admin, sessionService.User.Id); TempData[Constants.SuccessMessage] = Messages.CreateSuccess; return(RedirectToAction("Index", "Admins")); } await model.FillRolesList(adminsService); return(View(model)); } catch (Exception ex) { TempData[Constants.ErrorMessage] = Messages.ResourceManager.GetString(ex.Message); await model.FillRolesList(adminsService); return(View(model)); } }