Exemplo n.º 1
0
        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));
        }
Exemplo n.º 2
0
 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();
 }