public async Task <UpdateProfileResponse> UpdateProfile(UpdateProfileRequest request) { var response = new UpdateProfileResponse(); var user = await _sessionManager.GetUser(); var dbRequest = new Repositories.DatabaseRepos.UserRepo.Models.UpdateUserRequest() { Id = user.Id, Username = request.Username, Email_Address = request.EmailAddress, First_Name = request.FirstName, Last_Name = request.LastName, Mobile_Number = request.MobileNumber, Updated_By = user.Id }; using (var uow = _uowFactory.GetUnitOfWork()) { await uow.UserRepo.UpdateUser(dbRequest); uow.Commit(); } await _sessionManager.DehydrateSession(); // user has changed await _sessionManager.WriteSessionLogEvent(new Models.ManagerModels.Session.CreateSessionLogEventRequest() { EventKey = SessionEventKeys.UserUpdatedProfile, }); response.Notifications.Add("Profile updated successfully", NotificationTypeEnum.Success); return(response); }
public async Task <UpdateUserResponse> UpdateUser(UpdateUserRequest request) { var sessionUser = await _sessionManager.GetUser(); 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 Repositories.DatabaseRepos.UserRepo.Models.GetUserByIdRequest() { Id = request.Id }); var dbRequest = new Repositories.DatabaseRepos.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, Updated_By = sessionUser.Id, }; await uow.UserRepo.UpdateUser(dbRequest); uow.Commit(); } await CreateOrDeleteUserRoles(request.RoleIds, request.Id, sessionUser.Id); await _sessionManager.WriteSessionLogEvent(new Models.ManagerModels.Session.CreateSessionLogEventRequest() { EventKey = SessionEventKeys.UserUpdated, Info = new Dictionary <string, string>() { { "User_Id", request.Id.ToString() } } }); response.Notifications.Add($"User {request.Username} has been updated", NotificationTypeEnum.Success); return(response); }