예제 #1
0
        public async Task <Result <UserConfirmationStatus> > ConfirmAccount(UserAccountConfirmationModel model)
        {
            try
            {
                var user = await _userResolver.GetUser();

                if (user != null)
                {
                    var code = await _systemCodeRepository.GetSingle(sc => sc.UserId == user.Id && sc.Code == model.Code);

                    if (code != null)
                    {
                        if (code.ExpirationDate >= DateTime.Now)
                        {
                            var entity = _userRepository.GetSingle(user.Id);

                            entity.IsConfirmed = true;

                            _userRepository.Update(entity);
                            await _userRepository.Commit();

                            return(new Result <UserConfirmationStatus>());
                        }
                        else
                        {
                            ErrorResult error = GenerateError("Code is after expiration date, regenerate the code", "Code", "Code is after expiration date, regenerate the code", ErrorStatus.ObjectNotFound);
                            return(new Result <UserConfirmationStatus>(error));
                        }
                    }
                    else
                    {
                        ErrorResult error = GenerateError("Invalid code", "Code", "Invalid code", ErrorStatus.InvalidModel);
                        return(new Result <UserConfirmationStatus>(error));
                    }
                }
                else
                {
                    ErrorResult error = GenerateError("User is not logged in", "Id", "", ErrorStatus.Forbidden);
                    return(new Result <UserConfirmationStatus>(error));
                }
            }
            catch (Exception ex)
            {
                ErrorResult error = GenerateError(ex);
                return(new Result <UserConfirmationStatus>(error));
            }
        }
예제 #2
0
        public async Task <IActionResult> ConfirmAccount([FromBody] UserAccountConfirmationModel model)
        {
            var result = await _userService.ConfirmAccount(model);

            return(WrapResponse(result, HttpStatusCode.OK));
        }