Ejemplo n.º 1
0
        public async Task <IdentityResult> RegisterAsync(RegisterBaseViewModel ViewModel)
        {
            DateTime BirthDateMiladi = _convertDate.ConvertShamsiToMiladi(ViewModel.BirthDate);
            var      user            = new ApplicationUser {
                UserName = ViewModel.UserName, Email = ViewModel.Email, PhoneNumber = ViewModel.PhoneNumber, RegisterDate = DateTime.Now, IsActive = true, BirthDate = BirthDateMiladi, EmailConfirmed = ViewModel.EmailConfirmed, PhoneNumberConfirmed = ViewModel.PhoneNumberConfirmed
            };
            IdentityResult result = await _userManager.CreateAsync(user, ViewModel.Password);

            if (result.Succeeded)
            {
                return(await AddRoleToUser("کاربر", user));
            }
            else
            {
                return(result);
            }
        }
        public async Task <IActionResult> Edit(UsersViewModel ViewModel)
        {
            if (ModelState.IsValid)
            {
                var User = await _userManager.FindByIdAsync(ViewModel.Id);

                if (User == null)
                {
                    return(NotFound());
                }
                else
                {
                    IdentityResult Result;
                    var            RecentRoles = await _userManager.GetRolesAsync(User);

                    if (ViewModel.Roles == null)
                    {
                        ViewModel.Roles = new string[] { }
                    }
                    ;

                    var DeleteRoles = RecentRoles.Except(ViewModel.Roles);
                    var AddRoles    = ViewModel.Roles.Except(RecentRoles);

                    Result = await _userManager.RemoveFromRolesAsync(User, DeleteRoles);

                    if (Result.Succeeded)
                    {
                        Result = await _userManager.AddToRolesAsync(User, AddRoles);

                        if (Result.Succeeded)
                        {
                            User.FirstName   = ViewModel.FirstName;
                            User.LastName    = ViewModel.LastName;
                            User.Email       = ViewModel.Email;
                            User.PhoneNumber = ViewModel.PhoneNumber;
                            User.UserName    = ViewModel.UserName;
                            User.BirthDate   = _converDate.ConvertShamsiToMiladi(ViewModel.PersianBirthDate);

                            Result = await _userManager.UpdateAsync(User);

                            await _userManager.UpdateSecurityStampAsync(User);

                            if (Result.Succeeded)
                            {
                                ViewBag.AlertSuccess = "ذخیره تغییرات با موفقیت انجام شد.";
                            }
                        }
                    }

                    if (Result != null)
                    {
                        foreach (var item in Result.Errors)
                        {
                            ModelState.AddModelError("", item.Description);
                        }
                    }
                }
            }

            ViewBag.AllRoles = _roleManager.GetAllRoles();
            return(View(ViewModel));
        }