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)); } }
public async Task <IActionResult> ConfirmAccount([FromBody] UserAccountConfirmationModel model) { var result = await _userService.ConfirmAccount(model); return(WrapResponse(result, HttpStatusCode.OK)); }