public static CardDebitRequest CreateDebitRequest(string pPath, string pAPIKey, CardDebitRequest pDebitRequest) { try { return(ApiRestServices.CreateObject <CardDebitRequest>(pPath + "/card-debit-request", pAPIKey, "card_debit_request", pDebitRequest)); } catch (ApplicationException ae) { throw new ApplicationException(ae.Message); } }
public static CardDebitRequest CreateDebitRequest(string pPath, string pAPIKey, CardDebitRequest pDebitRequest) { return(ApiRestServices.CreateObject <CardDebitRequest>(pPath + "/card-debit-request", pAPIKey, "card_debit_request", pDebitRequest)); }
public ActionResult CardDebit(CardDebitRequest request) { string username = Request.Form["username"]; if (String.IsNullOrEmpty(username)) { ModelState.AddModelError("username", "Username cannot be empty"); } if (String.IsNullOrEmpty(request.TransactionID)) { ModelState.AddModelError("TransactionID", "This field cannot be empty!"); } if (String.IsNullOrEmpty(request.TimeStamp.ToShortDateString())) { ModelState.AddModelError("TimeStamp", "This field cannot be empty!"); } if (String.IsNullOrEmpty(request.CardID)) { ModelState.AddModelError("CardID", "This field cannot be empty!"); } if (String.IsNullOrEmpty(request.Amount.ToString())) { ModelState.AddModelError("Amount", "This field cannot be empty!"); } if (String.IsNullOrEmpty(request.Remarks)) { ModelState.AddModelError("Remarks", "This field cannot be empty!"); } if (!String.IsNullOrEmpty(request.Remarks)) { string pattern = "^[a-zA-Z]+,[0-9]+\\.[0-9]{2},[0-9]+\\.[0-9]{2},[a-zA-z]+$"; if (!System.Text.RegularExpressions.Regex.IsMatch(request.Remarks, pattern)) { ModelState.AddModelError("Remarks", "Incorrect format (eg. Petrol,1.20,3.40,pump)"); } } Transaction transaction = new Transaction { Amount = request.Amount, CardID = request.CardID, Remarks = request.Remarks, TimeStamp = request.TimeStamp, TransactionID = request.TransactionID }; Transaction tempTransaction = db.Transactions.Find(request.TransactionID); if (tempTransaction != null) { ModelState.AddModelError("TransactionID", "Duplicate transaction ID"); } CardDetail card = db.CardDetails.FirstOrDefault(c => c.CardID == request.CardID); if (card == null) { ModelState.AddModelError("CardID", "Card not found"); } else { if (card.Balance < request.Amount) { ModelState.AddModelError("Amount", "Low balance in card!"); } if (card.UserName != username) { ModelState.AddModelError("CardID", "Card doesnt belong to this user!"); } } if (ModelState.IsValid) { transaction.Username = card.UserName; transaction.CardType = card.CardType; transaction.VehicleNumber = card.VehicleNumber; transaction.Status = 1; transaction.Type = "Debit"; db.Transactions.Add(transaction); //Subtracting balance from card card.Balance -= transaction.Amount; //Discount transaction IQueryable <Discount> discountsOnCard = db.Discounts.Where(m => m.CardID == request.CardID); if (discountsOnCard.Count() > 0) { //Transaction on card exists IQueryable <Discount> discountOnCardOnDate = discountsOnCard.Where(m => m.Date == request.TimeStamp); if (discountOnCardOnDate.Count() > 0) { // Transaction on same day exists Discount discount = discountOnCardOnDate.FirstOrDefault(); discount.TotalAmount += request.Amount; db.Entry(discount).State = EntityState.Modified; } else { //Transaction on same day doesnt exists Discount discount = new Discount { CardID = request.CardID, Date = request.TimeStamp, TotalAmount = request.Amount, Username = card.UserName }; db.Discounts.Add(discount); } } else { Discount discount = new Discount { CardID = request.CardID, Date = request.TimeStamp, TotalAmount = request.Amount, Username = card.UserName }; db.Discounts.Add(discount); } db.Entry(card).State = EntityState.Modified; try { db.SaveChanges(); } catch (DbUpdateException) { ModelState.AddModelError("", "Something went wrong!"); } return(RedirectToAction("CardDebit", new { message = "Transaction recorded" })); } return(View()); }