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