示例#1
0
        public async Task <IActionResult> Edit(string UserId, UserEditViewModel userEditVM)
        {
            if (!ModelState.IsValid)
            {
                return(View(userEditVM));
            }

            var user = await _context.Users.FindAsync(UserId);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{UserId}'.");
            }

            var ChangeLog = new UsersChangeLog
            {
                HRID                 = user.HRID,
                StaffId              = user.StaffId,
                FirstName            = user.FirstName,
                MiddleName           = user.MiddleName,
                LastName             = user.LastName,
                Address              = user.Address,
                City                 = user.City,
                State                = user.State,
                ZipCode              = user.ZipCode,
                Country              = user.Country,
                Email                = user.Email,
                EmailConfirmed       = user.EmailConfirmed,
                PhoneNumber          = user.PhoneNumber,
                PhoneNumberConfirmed = user.PhoneNumberConfirmed,
                UserName             = user.UserName,
                HomeEmail            = user.HomeEmail,
                HomeEmailConfirmed   = user.HomeEmailConfirmed,
                CreatedAt            = user.CreatedAt,
                DeletedAt            = user.DeletedAt,
                UpdatedAt            = DateTime.Now
            };
            await _context.UsersChangeLog.AddAsync(ChangeLog);

            await _context.SaveChangesAsync();

            user.StaffId   = userEditVM.StaffId;
            user.Address   = userEditVM.Address;
            user.City      = userEditVM.City;
            user.State     = userEditVM.State;
            user.ZipCode   = userEditVM.ZipCode;
            user.Country   = userEditVM.Country;
            user.HomeEmail = userEditVM.HomeEmail;
            user.CreatedAt = ChangeLog.CreatedAt;
            user.UpdatedAt = ChangeLog.UpdatedAt;
            _context.Users.Update(user);
            await _context.SaveChangesAsync();

            var username = userEditVM.Username;

            if (userEditVM.Username != username)
            {
                var setUsernameResult = await _userManager.SetUserNameAsync(user, userEditVM.Username);

                if (!setUsernameResult.Succeeded)
                {
                    throw new ApplicationException($"Unexpected error occurred setting username for user with ID '{user.Id}'.");
                }
            }

            var email = user.Email;

            if (userEditVM.Email != email)
            {
                var setEmailResult = await _userManager.SetEmailAsync(user, userEditVM.Email);

                if (!setEmailResult.Succeeded)
                {
                    throw new ApplicationException($"Unexpected error occurred setting email for user with ID '{user.Id}'.");
                }
            }

            var phoneNumber = user.PhoneNumber;

            if (userEditVM.PhoneNumber != phoneNumber)
            {
                var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, userEditVM.PhoneNumber);

                if (!setPhoneResult.Succeeded)
                {
                    throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'.");
                }
            }

            StatusMessage = "Profile has been updated";
            return(RedirectToAction(nameof(Edit), new { @UserId = UserId }));
        }
        public async Task <IActionResult> Index(IndexViewModel model)
        {
            if (!ModelState.IsValid)
            {
                return(View(model));
            }

            var user = await _userManager.GetUserAsync(User);

            if (user == null)
            {
                throw new ApplicationException($"Unable to load user with ID '{_userManager.GetUserId(User)}'.");
            }

            var ChangeLog = new UsersChangeLog {
                HRID                 = user.HRID,
                StaffId              = user.StaffId,
                FirstName            = user.FirstName,
                MiddleName           = user.MiddleName,
                LastName             = user.LastName,
                Address              = user.Address,
                City                 = user.City,
                State                = user.State,
                ZipCode              = user.ZipCode,
                Country              = user.Country,
                Email                = user.Email,
                EmailConfirmed       = user.EmailConfirmed,
                PhoneNumber          = user.PhoneNumber,
                PhoneNumberConfirmed = user.PhoneNumberConfirmed,
                UserName             = user.UserName,
                HomeEmail            = user.HomeEmail,
                HomeEmailConfirmed   = user.HomeEmailConfirmed,
                UpdatedAt            = DateTime.Now
            };
            await _context.UsersChangeLog.AddAsync(ChangeLog);

            await _context.SaveChangesAsync();

            user.Address   = model.Address;
            user.City      = model.City;
            user.State     = model.State;
            user.ZipCode   = model.ZipCode;
            user.Country   = model.Country;
            user.HomeEmail = model.HomeEmail;
            user.UpdatedAt = ChangeLog.UpdatedAt;
            _context.Users.Update(user);
            await _context.SaveChangesAsync();

            var email = user.Email;

            if (model.Email != email)
            {
                var setEmailResult = await _userManager.SetEmailAsync(user, model.Email);

                if (!setEmailResult.Succeeded)
                {
                    throw new ApplicationException($"Unexpected error occurred setting email for user with ID '{user.Id}'.");
                }
            }

            var phoneNumber = user.PhoneNumber;

            if (model.PhoneNumber != phoneNumber)
            {
                var setPhoneResult = await _userManager.SetPhoneNumberAsync(user, model.PhoneNumber);

                if (!setPhoneResult.Succeeded)
                {
                    throw new ApplicationException($"Unexpected error occurred setting phone number for user with ID '{user.Id}'.");
                }
            }

            StatusMessage = "Your profile has been updated";
            return(RedirectToAction(nameof(Index)));
        }