コード例 #1
0
        public async Task <IActionResult> Modify(string id, [FromForm] UserModifyPostModel model)
        {
            var file   = Request.Form.Files.Count > 0 ? Request.Form.Files.First() : null;
            var result = await userService.ModifyUser(model, id, file);

            if (!result.Error)
            {
                return(Ok(result.DataResult));
            }

            return(BadRequest(result.ErrorMessage));
        }
コード例 #2
0
        public async Task <ServiceResultModel <UserModifyPostModel> > ModifyUser(UserModifyPostModel model, string id, IFormFile file)
        {
            var result = new ServiceResultModel <UserModifyPostModel>();

            var user = await userManager.FindByIdAsync(id);

            if (user != null && !user.Deleted)
            {
                var errorMessage = ValidateUserData(model.Email, model.Username, user.UserName);

                if (errorMessage != null)
                {
                    result.Error        = true;
                    result.ErrorMessage = errorMessage;
                }
                else
                {
                    if (model.Password != null && model.Password.Length >= passwordMinimumLenght)
                    {
                        var isPasswordValid = await userManager.CheckPasswordAsync(user, model.Password);

                        if (!isPasswordValid)
                        {
                            var token = await userManager.GeneratePasswordResetTokenAsync(user);

                            await userManager.ResetPasswordAsync(user, token, model.Password);
                        }
                    }

                    user.UpdatedAt = DateTime.Now;

                    user.UserName = model.Username;
                    user.Email    = model.Email;
                    user.FullName = model.FullName;
                    user.Phone    = model.Phone;
                    user.Address  = model.Address;
                    user.Avatar   = model.AvatarFile != null ?
                                    model.Avatar : await fileService.GenerateFileSource(file, userAvatarsFolderName, model.Username.ToLower());

                    user.City       = model.City;
                    user.Country    = model.Country;
                    user.PostalCode = model.PostalCode;

                    var updateResult = await userManager.UpdateAsync(user);

                    if (updateResult.Succeeded)
                    {
                        result.DataResult = model;
                    }
                    else
                    {
                        result.Error        = true;
                        result.ErrorMessage = UserMessages.ModifyUserError();
                    }
                }
            }
            else
            {
                result.Error        = true;
                result.ErrorMessage = UserMessages.UserNotExist();
            }

            return(result);
        }