public async Task <UpdateUserResponse> UpdateUser(UpdateUserRequest request) { var session = await _sessionService.GetAuthenticatedSession(); var response = new UpdateUserResponse(); var duplicateResponse = await _accountService.DuplicateUserCheck(new DuplicateUserCheckRequest() { EmailAddress = request.EmailAddress, Username = request.Username, MobileNumber = request.MobileNumber, UserId = request.Id }); if (duplicateResponse.Notifications.HasErrors) { response.Notifications.Add(duplicateResponse.Notifications); return(response); } using (var uow = _uowFactory.GetUnitOfWork()) { var user = await uow.UserRepo.GetUserById(new Infrastructure.Repositories.UserRepo.Models.GetUserByIdRequest() { Id = request.Id }); var dbRequest = new Infrastructure.Repositories.UserRepo.Models.UpdateUserRequest() { Id = request.Id, Username = request.Username, First_Name = request.FirstName, Last_Name = request.LastName, Mobile_Number = request.MobileNumber, Email_Address = request.EmailAddress, Password_Hash = user.Password_Hash, Registration_Confirmed = request.RegistrationConfirmed, Updated_By = session.User.Entity.Id, }; if (!string.IsNullOrEmpty(request.Password)) { dbRequest.Password_Hash = PasswordHelper.HashPassword(request.Password); } await uow.UserRepo.UpdateUser(dbRequest); uow.Commit(); } await CreateOrDeleteUserRoles(request.RoleIds, request.Id, session.User.Entity.Id); await _sessionService.WriteSessionLogEvent(new Models.ServiceModels.Session.CreateSessionLogEventRequest() { EventKey = SessionEventKeys.UserUpdated }); response.Notifications.Add($"User {request.Username} has been updated", NotificationTypeEnum.Success); return(response); }
public async Task <UpdateProfileResponse> UpdateProfile(UpdateProfileRequest request) { var response = new UpdateProfileResponse(); var session = await _sessionService.GetAuthenticatedSession(); var dbRequest = new Infrastructure.Repositories.UserRepo.Models.UpdateUserRequest() { Id = session.User.Entity.Id, Username = request.Username, Email_Address = request.EmailAddress, First_Name = request.FirstName, Last_Name = request.LastName, Mobile_Number = request.MobileNumber, Password_Hash = session.User.Entity.Password_Hash, Registration_Confirmed = session.User.Entity.Registration_Confirmed, Updated_By = session.User.Entity.Id }; if (!string.IsNullOrEmpty(request.Password)) { dbRequest.Password_Hash = PasswordHelper.HashPassword(request.Password); } using (var uow = _uowFactory.GetUnitOfWork()) { await uow.UserRepo.UpdateUser(dbRequest); uow.Commit(); } // rehydrate user in session due to profile updating await _sessionService.RehydrateSession(); await _sessionService.WriteSessionLogEvent(new Models.ServiceModels.Session.CreateSessionLogEventRequest() { EventKey = SessionEventKeys.UserUpdatedProfile }); response.Notifications.Add("Profile updated successfully", NotificationTypeEnum.Success); return(response); }