Beispiel #1
0
        private CommandResult CheckValidData(SaveUserViewModel model)
        {
            if (model == default || model.FirstName == default || model.LastName == default)
            {
                return(CommandResult.Failed(new CommandResultError()
                {
                    Code = (int)HttpStatusCode.BadRequest,
                    Description = MessageErrors.SomeDataEmptyOrInvalid
                }));
            }

            if (CheckEmailExist(model.Email, model.Id))
            {
                return(CommandResult.Failed(new CommandResultError()
                {
                    Code = (int)HttpStatusCode.NotAcceptable,
                    Description = MessageErrors.DataIsExists.Replace("{0}", "Email")
                }));
            }

            if (CheckPhoneNumberExist(model.PhoneNumber, model.Id))
            {
                return(CommandResult.Failed(new CommandResultError()
                {
                    Code = (int)HttpStatusCode.NotAcceptable,
                    Description = MessageErrors.DataIsExists.Replace("{0}", "Phone number")
                }));
            }

            return(null);
        }
Beispiel #2
0
 public virtual ActionResult UpdateUser([Bind(Exclude = "Password, ConfirmPassword")] SaveUserViewModel userViewModel)
 {
     return(new ServiceAction(this)
            .Put(SessionKey.Empty)
            .WithCommand(
                () =>
     {
         return _adminService.UpdateUser(userViewModel.Id, userViewModel.Firstname, userViewModel.Lastname,
                                         userViewModel.Nickname, userViewModel.Username, userViewModel.GroupId);
     })
            .Execute());
 }
Beispiel #3
0
        public User mapSaveUser(SaveUserViewModel user, IUserService service)
        {
            string passwordHash = service.generatePasswordHash(user.password);
            var    userItem     = new UserData
            {
                Email        = user.email,
                FirstName    = user.firstName,
                LastName     = user.lastName,
                PhoneNumber  = user.phoneNumber,
                PasswordHash = passwordHash,
            };

            return(new User(userItem));
        }
        public async Task <IActionResult> SaveUser([FromBody] SaveUserViewModel user)
        {
            if (user == null)
            {
                return(Json(BadRequest()));
            }
            var userItem = mapper.mapSaveUser(user, service);
            var findUser = await userRepository.getUserByEmail(user.email);

            if (findUser != null)
            {
                return(Json(BadRequest("User with given email already exists")));
            }
            await userRepository.Add(userItem);

            return(Json(Ok(userItem)));
        }
Beispiel #5
0
        //[Authorize(Policy = PermissionGroup.AdminHRM)]
        public async Task <IActionResult> SaveUserInfoAsync([FromBody] SaveUserViewModel model)
        {
            var result = await _saveUserCommand.ExecuteAsync(model);

            return(StatusCode(result.GetStatusCode(), result.GetData()));
        }
Beispiel #6
0
        public async Task <CommandResult> ExecuteAsync(SaveUserViewModel model)
        {
            try
            {
                CommandResult isNotValidData = CheckValidData(model);

                if (isNotValidData != null)
                {
                    return(isNotValidData);
                }

                var user = await _userRepository.GetByIdAsync(model.Id);

                if (user == null)
                {
                    if (model.Password.IsEmpty())
                    {
                        return(CommandResult.Failed(new CommandResultError()
                        {
                            Code = (int)HttpStatusCode.BadRequest,
                            Description = MessageErrors.SomeDataEmptyOrInvalid
                        }));
                    }

                    user = new CsmsUser()
                    {
                        Id          = 0,
                        UserCode    = model.UserCode,
                        Username    = model.UserName,
                        Password    = BCrypt.HashPassword(model.Password, BCrypt.GenerateSalt()),
                        FirstName   = model.FirstName,
                        MiddleName  = model.MiddleName,
                        LastName    = model.LastName,
                        Email       = model.Email,
                        PhoneNumber = model.PhoneNumber,
                        CitizenID   = model.CitizenId,
                        Gender      = model.Gender,
                        Salary      = model.Salary,
                        BranchId    = model.BranchId,
                        Birthday    = model.Birthday,
                        RoleId      = model.RoleId,
                        StatusId    = model.StatusId
                    };

                    await _userRepository.InsertAsync(user);

                    userInfoViewModel = await _getUserInfoByUserIdQuery.ExecuteAsync(user.Id);
                }
                else
                {
                    user.UserCode = model.UserCode;
                    user.Username = model.UserName;
                    user.Password = (user.Password == model.Password || model.Password.IsEmpty())
                        ? user.Password : BCrypt.HashPassword(model.Password, BCrypt.GenerateSalt());
                    user.FirstName   = model.FirstName;
                    user.MiddleName  = model.MiddleName;
                    user.LastName    = model.LastName;
                    user.Email       = model.Email;
                    user.PhoneNumber = model.PhoneNumber;
                    user.CitizenID   = model.CitizenId;
                    user.Gender      = model.Gender;
                    user.Salary      = model.Salary;
                    user.BranchId    = model.BranchId;
                    user.Birthday    = model.Birthday;
                    user.RoleId      = model.RoleId;
                    user.StatusId    = model.StatusId;

                    await _userRepository.UpdateAsync(user);

                    userInfoViewModel = await _getUserInfoByUserIdQuery.ExecuteAsync(user.Id);
                }

                return(CommandResult.SuccessWithData(userInfoViewModel));
            }
            catch (Exception)
            {
                return(CommandResult.Failed(new CommandResultError()
                {
                    Code = (int)HttpStatusCode.InternalServerError,
                    Description = MessageErrors.InternalServerError
                }));
            }
        }
Beispiel #7
0
        public async Task <IHttpActionResult> SaveUser(SaveUserBindingModel model)
        {
            var result = new SaveUserViewModel();

            IdentityResult  identityResult = null;
            ApplicationUser user           = null;

            if (string.IsNullOrEmpty(model.Data.Id))
            {
                user = new ApplicationUser()
                {
                    UserName = model.Data.UserName, Email = model.Data.Email
                };

                identityResult = await UserManager.CreateAsync(user, model.Data.Password);
            }
            else
            {
                user = await UserManager.FindByIdAsync(model.Data.Id);

                user.UserName = model.Data.UserName;
                user.Email    = model.Data.Email;

                identityResult = await UserManager.UpdateAsync(user);
            }

            if (!identityResult.Succeeded)
            {
                result.Result = false;
                if (identityResult.Errors != null)
                {
                    var firstError = identityResult.Errors.First();
                    result.Message = firstError;
                }
            }
            else
            {
                foreach (var roleId in user.Roles.Where(x => !model.Data.Roles.Contains(x.RoleId)).ToList())
                {
                    var role = await RoleManager.FindByIdAsync(roleId.RoleId);

                    if (await UserManager.IsInRoleAsync(user.Id, role.Name))
                    {
                        var rolesResult = await UserManager.RemoveFromRoleAsync(user.Id, role.Name);

                        if (!rolesResult.Succeeded)
                        {
                            result.Result = false;
                            if (rolesResult.Errors != null)
                            {
                                var firstError = rolesResult.Errors.First();
                                result.Message = firstError;
                            }
                            break;
                        }
                    }
                }

                foreach (var role in model.Data.Roles)
                {
                    if (!await UserManager.IsInRoleAsync(user.Id, role))
                    {
                        var rolesResult = await UserManager.AddToRoleAsync(user.Id, role);

                        if (!rolesResult.Succeeded)
                        {
                            result.Result = false;
                            if (rolesResult.Errors != null)
                            {
                                var firstError = rolesResult.Errors.First();
                                result.Message = firstError;
                            }
                            break;
                        }
                    }
                }

                result.Result = true;
            }

            if (result.Result)
            {
                var notificationHub = GetHub <NotificationHub, INotificationHub>();

                var connectionId = _requestReader.Read(HttpHeaders.Request.SignalRConnectionId);
                if (!string.IsNullOrEmpty(connectionId))
                {
                    notificationHub.Clients.AllExcept(connectionId).UpdateModel(new NotificationModel()
                    {
                        Username = UserName,
                        Action   = string.Format("Ha salvato l'user {0}", model.Data.UserName)
                    });
                }
            }

            return(Ok(result));
        }