示例#1
0
        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));
            }
        }