예제 #1
0
        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);
        }
예제 #2
0
        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);
        }