public CommonSResponse <AuthenticateResponse> Authenticate(AuthenticateRequest model, string clientIpAddress)
        {
            List <ValidationResult> validationRequest = model.ValidateModelData(true);

            if (validationRequest.Count > 0)
            {
                string message = string.Join(", ", validationRequest.Select(u => u.ErrorMessage).ToArray());

                return(new CommonSResponse <AuthenticateResponse>
                {
                    Status = false,
                    Code = "E-002",
                    Message = message,
                });
            }

            UserVM user = _userRepository.GetOne(new UserVM {
                Email = model?.Email
            });

            if (user == null)
            {
                return(new CommonSResponse <AuthenticateResponse>
                {
                    Status = false,
                    Code = "E-002",
                    Message = "Account not found!",
                });
            }

            using SHA256 hasher = SHA256.Create();

            string modelPassword = Convert
                                   .ToBase64String(hasher.ComputeHash(Encoding.ASCII.GetBytes(model?.Password)));

            if (
                string.Equals(
                    user.Password,
                    modelPassword,
                    StringComparison.InvariantCulture
                    )
                )
            {
                string token = user.GenerateJwtToken(_appSettings.Secret, _appSettings);

                AuthenticateResponse data = new AuthenticateResponse(user, token);

                _logger.LogInformation("Login User {0} from IP {1} Success",
                                       user.Email,
                                       clientIpAddress
                                       );

                return(new CommonSResponse <AuthenticateResponse>
                {
                    Status = true,
                    Code = "S",
                    Message = "Authentication Successed!",
                    Data = data,
                });
            }
            else
            {
                _logger.LogInformation("Login User {0} from IP {1} Failed by Wrong Password",
                                       user.Email,
                                       clientIpAddress
                                       );
            }

            return(new CommonSResponse <AuthenticateResponse>
            {
                Status = false,
                Code = "E-002",
                Message = "Password Doesn't Match!",
            });
        }