public ActionResult ValidateTransaction(ValidateTransactionRequest request) { if (string.IsNullOrEmpty(request.VendorId)) { return(Json(new ValidateTransactionResponse { Approved = false }, JsonRequestBehavior.AllowGet)); } var vendor = _repository.GetVendorById(request.VendorId); if (vendor == null) { return(Json(new ValidateTransactionResponse { Approved = false, DenialReason = DenialReasons.VendorNotFound }, JsonRequestBehavior.AllowGet)); } if (!vendor.Enabled) { return(Json(new ValidateTransactionResponse { Approved = false, DenialReason = DenialReasons.VendorNotEnabled }, JsonRequestBehavior.AllowGet)); } var sum = _repository.GetTransactionSum(request.VendorId, request.UserId, DateTime.Now); if (sum > vendor.MonthlyPerUserCap) { return(Json(new ValidateTransactionResponse { Approved = false, DenialReason = DenialReasons.TransactionOverMonthlyLimit }, JsonRequestBehavior.AllowGet)); } var insertedTransaction = _repository.InsertTranzaction(request); if (insertedTransaction == null) { return(Json(new ValidateTransactionResponse { Approved = false }, JsonRequestBehavior.AllowGet)); } insertedTransaction.Approved = true; insertedTransaction.CurrentMonthUserSpend = _repository.GetTransactionSum(request.VendorId, request.UserId, DateTime.Now); return(Json(insertedTransaction, JsonRequestBehavior.AllowGet)); }
public ValidateTransactionResponse InsertTranzaction(ValidateTransactionRequest transaction) { using (SqlConnection connection = PEXSqlConnection) { var t = new ValidateTransactionResponse(); connection.Open(); using (SqlCommand c = new SqlCommand($"INSERT INTO [dbo].[Transaction] OUTPUT Inserted.UserId, Inserted.VendorID, Inserted.TransactionDate, Inserted.TransactionAmount VALUES('{transaction.UserId}', '{transaction.VendorId}', {transaction.TransactionAmount}, GETDATE())", connection)) { var a = c.ExecuteReader(); if (a.Read() && a.GetValue(0) != DBNull.Value) { t.UserId = a.GetString(0).Trim(); t.VendorId = a.GetString(1).Trim(); t.TransactionDateTime = a.GetDateTime(2).ToString("yyyy-MM-dd'T'HH:mm:ss.fffK", CultureInfo.InvariantCulture);; t.TransactionAmount = a.GetInt64(3); } } return(t); } }
protected override void StartConsuming() { ValidateTransactionRequest.StartConsumer(); }