public IActionResult PostToken([FromRoute] string bvn, [FromQuery] string otp = "") { Logger.LogInformation("UsersController GetToken method called"); ApplicationUser user = null; try { user = UserRepository.Get(x => x.BVN == bvn) .FirstOrDefault(); } catch (Exception ex) { Logger.LogError(ex, "Error while logging user in"); return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new string[] { "Could not complete request. Please retry later, or contact the support team" }))); } if (user == null || user.ShouldDelete) { return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new List <string> { "You do not have an account with us kindly proceed to signup." }))); } TransactionToken transactionToken = null; try { transactionToken = TransactionTokenRepository.Get(x => x.OTP == otp && !x.IsUsed && !(x.ExpiryDate < DateTime.Now)) .FirstOrDefault(); } catch (Exception ex) { Logger.LogError(ex, "Error while logging user in"); return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new string[] { "Could not complete request. Please retry later, or contact the support team" }))); } if (transactionToken == null) { return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new List <string> { "Invalid or expired token. Please provide a valid token." }))); } // TODO // Process payment transactionToken.IsUsed = true; try { TransactionTokenRepository.Update(transactionToken); } catch (Exception ex) { Logger.LogError(ex, "Error while logging user in"); return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new string[] { "Could not complete request. Please retry later, or contact the support team" }))); } return(Ok(new DataResponseDTO <string>("Payment Successful!"))); }
public IActionResult GetToken([FromRoute] string bvn, [FromQuery] string amount = "0.00") { Logger.LogInformation("UsersController GetToken method called"); ApplicationUser user = null; try { user = UserRepository.Get(x => x.BVN == bvn) .FirstOrDefault(); } catch (Exception ex) { Logger.LogError(ex, "Error while logging user in"); return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new string[] { "Could not complete request. Please retry later, or contact the support team" }))); } if (user == null || user.ShouldDelete) { return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new List <string> { "You do not have an account with us kindly proceed to signup." }))); } var transactionToken = new TransactionToken(); try { transactionToken.Amount = double.Parse(amount); } catch (Exception ex) { Logger.LogError(ex, "Error while logging user in"); return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new string[] { "Invalid amount entered. Please enter a valid amount for the transaction" }))); } transactionToken.UserId = user.Id; while (TransactionTokenRepository.Get(x => x.OTP == transactionToken.OTP).Count() != 0) { transactionToken.OTP = Helper.GetRandomToken(30); } try { TransactionTokenRepository.Insert(transactionToken); } catch (Exception ex) { Logger.LogError(ex, "Error while logging user in"); return(BadRequest(new ErrorResponseDTO(HttpStatusCode.BadRequest, new string[] { "Could not complete request. Please retry later, or contact the support team" }))); } var transactionTokenDTO = Mapper.Map <TransactionTokenResponseDTO>(transactionToken); transactionTokenDTO.User = Mapper.Map <UserProfileSummaryDTO>(user); return(Ok(new DataResponseDTO <TransactionTokenResponseDTO>(transactionTokenDTO, HttpStatusCode.OK))); }