Пример #1
0
        public async Task <IActionResult> RegisterFarmer([FromBody] RegisterFarmerViewModel model)
        {
            try
            {
                var salt         = Guid.NewGuid().ToString();
                var password     = $"{model.Password + salt}";
                var passwordHash = _userManager.PasswordHasher.HashPassword(new User(), password);
                var farmer       = new Farmer {
                    FirstName = model.FirstName, LastName = model.LastName, Address = model.Address, Email = model.Email, Phone = model.Phone
                };
                var user = new User {
                    UserName = model.Email, Email = model.Email, HashSalt = salt, PasswordHash = passwordHash, PhoneNumber = model.Phone
                };
                var result = await _farmerRepository.RegisterFarmer(user, farmer);

                switch (result.Status)
                {
                case Status.Success:
                    var token = await GetToken(user);

                    var response = new TokenRequestModel
                    {
                        Status  = "success",
                        Message = "account registration successful",
                        Token   = new JwtSecurityTokenHandler().WriteToken(token),
                        Expires = token.ValidTo,
                        Data    = result.Data
                    };
                    return(CreatedAtAction("profile", "farmer", null, response));

                default:
                    return(BadRequest(new ErrorModel {
                        Status = "error", Message = $"cannot register user {model.Email}", Data = result.Data
                    }));
                }
            }
            catch (Exception ex)
            {
                var response = new ErrorModel
                {
                    Status  = "error",
                    Message = $"{ex.Message}",
                };
                return(BadRequest(response));
            }
        }