public ActionResult SupplierPayment(ClientPaymentViewModel payment) { try { ModelState.Clear(); var branchId = _db.ClientInfos.Where(x => x.SupplierId == payment.CustomerId).Select(x => x.BranchId).FirstOrDefault() ?? _db.BranchInfos.Where(x => x.BranchName == "Main").Select(x => x.Id).FirstOrDefault(); payment.BranchId = branchId; payment.Channel = Channel.IsSupplier; payment.Status = Status.Active; TryValidateModel(payment); if (!ModelState.IsValid) { return(Json(new { Flag = false, Msg = "Invalid payment info." })); } if (payment.PaymentAmount > payment.DueAmount) { return(Json(new { Flag = false, Msg = "Payment amount cannot be greater than Due amount." })); } if (payment.PaymentAmount > payment.ServiceAmount) { return(Json(new { Flag = false, Msg = "Payment amount cannot be greater than Service amount." })); } using (var dbTransaction = _db.Database.BeginTransaction()) { try { var clientPayment = new CustomerPayment { BranchId = payment.BranchId, CustomerId = payment.CustomerId, PaymentDate = payment.PaymentDate, PaymentAmount = payment.PaymentAmount, EntryDate = DateTime.Now, Status = payment.Status, Channel = payment.Channel, UserType = UserType.IsAdmin, EntryBy = _db.Users.First(x => x.UserName == User.Identity.Name).Id }; _db.CustomerPayments.Add(clientPayment); _db.SaveChanges(); dbTransaction.Commit(); return(Json(new { Flag = true, Msg = "Payment successfully added." })); } catch (Exception ex) { dbTransaction.Rollback(); return(Json(new { Flag = false, Msg = ex.Message })); } } } catch (Exception ex) { return(Json(new { Flag = false, Msg = ex.Message })); } }
public ActionResult AddPayment() { var Clients = _context.TableClients.ToList(); var viewModel = new ClientPaymentViewModel { ClientPayments = new ClientPayments { datePaid = DateTime.Now }, Client = Clients }; return(View(viewModel)); }
public ActionResult Save(ClientPayments clientPayments) { if (!ModelState.IsValid) { var clientPayment = new ClientPaymentViewModel() { ClientPayments = clientPayments, Client = _context.TableClients.ToList() }; return(View("AddPayment", clientPayment)); } _context.TableClientPayments.Add(clientPayments); var clientInDb = _context.TableClients.Single(c => c.id == clientPayments.ClientsId); clientInDb.balance = clientInDb.balance + clientPayments.amountPaid; _context.SaveChanges(); return(RedirectToAction("Index", "ClientPayments")); }