Esempio n. 1
0
        public ActionResult InsurancePayment(String id)
        {
            if (Session["userId"] == null)
            {
                return(RedirectToAction("Login", "Account"));
            }
            InsurancePaymentViewModel ipvm = ORM.DbMethods.GetInsurancePaymentData(id);

            return(View(ipvm));
        }
Esempio n. 2
0
 public ActionResult InsurancePayment(InsurancePaymentViewModel ipvm)
 {
     ORM.DbMethods.MakeInsurancePayment(ipvm);
     if (ipvm.InsuranceType == "Car insurance")
     {
         return(RedirectToAction("DetailedCarInsuranceView", "Insurance", new { id = ipvm.InsuranceId }));
     }
     else
     {
         return(RedirectToAction("DetailedHomeInsurance", "Insurance", new { id = ipvm.InsuranceId }));
     }
 }
        public InsurancePaymentListModel Create(IEnumerable <EventCustomer> eventCustomers, IEnumerable <Event> events, IEnumerable <Customer> customers, IEnumerable <Order> orders, IEnumerable <OrderedPair <long, string> > packages,
                                                IEnumerable <OrderedPair <long, string> > tests, IEnumerable <InsuranceDetailViewModel> insuranceDetailViewModels)
        {
            var model = new InsurancePaymentListModel();
            var insurancePaymentModels = new List <InsurancePaymentViewModel>();

            eventCustomers.ToList().ForEach(ec =>
            {
                var eventModel = events.First(e => e.Id == ec.EventId);

                var order = orders.First(o => o.EventId == ec.EventId && o.CustomerId == ec.CustomerId);

                var customer = customers.First(c => c.CustomerId == ec.CustomerId);

                var package = packages.FirstOrDefault(p => p.FirstValue == order.Id);

                var test = tests.Where(p => p.FirstValue == order.Id).ToList();

                var orderPurchased = string.Empty;

                if (package != null && !test.IsNullOrEmpty())
                {
                    orderPurchased = package.SecondValue + " + " + string.Join(" + ", test.Select(t => t.SecondValue).ToArray());
                }
                else if (!test.IsNullOrEmpty())
                {
                    orderPurchased = string.Join(" + ", test.Select(t => t.SecondValue).ToArray());
                }
                else if (package != null)
                {
                    orderPurchased = package.SecondValue;
                }

                var insuranceAmount     = 0m;
                var insurancePaidAmount = 0m;

                var paymentInstruments = new List <OrderedPair <string, decimal> >();

                if (order.PaymentsApplied != null && order.PaymentsApplied.Any())
                {
                    foreach (var paymentInstrument in order.PaymentsApplied)
                    {
                        if (paymentInstrument is InsurancePayment)
                        {
                            var insurancePayment = paymentInstrument as InsurancePayment;
                            insuranceAmount     += insurancePayment.AmountToBePaid;
                            insurancePaidAmount += insurancePayment.Amount;
                        }
                    }

                    var creditCardPayments = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.CreditCard).Select(pa => pa).ToArray();
                    if (creditCardPayments.Any())
                    {
                        paymentInstruments.Add(new OrderedPair <string, decimal>(creditCardPayments.First().PaymentType.Name, creditCardPayments.Sum(cc => cc.Amount)));
                    }

                    var eCheckPayments = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.ElectronicCheck).Select(pa => pa).ToArray();
                    if (eCheckPayments.Any())
                    {
                        paymentInstruments.Add(new OrderedPair <string, decimal>(eCheckPayments.First().PaymentType.Name, eCheckPayments.Sum(cc => cc.Amount)));
                    }

                    var checkPayments = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.Check).Select(pa => pa).ToArray();
                    if (checkPayments.Any())
                    {
                        paymentInstruments.Add(new OrderedPair <string, decimal>(checkPayments.First().PaymentType.Name, checkPayments.Sum(cc => cc.Amount)));
                    }

                    var cashPayments = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.Cash).Select(pa => pa).ToArray();
                    if (cashPayments.Any())
                    {
                        paymentInstruments.Add(new OrderedPair <string, decimal>(cashPayments.First().PaymentType.Name, cashPayments.Sum(cc => cc.Amount)));
                    }

                    var gcPayments = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.GiftCertificate).Select(pa => pa).ToArray();
                    if (gcPayments.Any())
                    {
                        paymentInstruments.Add(new OrderedPair <string, decimal>(gcPayments.First().PaymentType.Name, gcPayments.Sum(cc => cc.Amount)));
                    }

                    var insurancePayments = order.PaymentsApplied.Where(pa => pa.PaymentType == PaymentType.Insurance).Select(pa => pa).ToArray();
                    if (insurancePayments.Any())
                    {
                        paymentInstruments.Add(new OrderedPair <string, decimal>(insurancePayments.First().PaymentType.Name, insurancePayments.Sum(cc => cc.Amount)));
                    }
                }

                var insurancePaymentModel = new InsurancePaymentViewModel
                {
                    CustomerId         = customer.CustomerId,
                    CustomerName       = customer.NameAsString,
                    EventId            = eventModel.Id,
                    EventDate          = eventModel.EventDate,
                    EventName          = eventModel.Name,
                    CustomerOrder      = orderPurchased,
                    Status             = insurancePaidAmount >= insuranceAmount ? InsurancePaymentStatus.Settled.GetDescription() : InsurancePaymentStatus.NotSettled.GetDescription(),
                    PaymentInstruments = paymentInstruments,
                    InsuranceDetail    = insuranceDetailViewModels.First(idvm => idvm.EventCustomerId == ec.Id),
                    DiscountedTotal    = order.DiscountedTotal,
                    OrderId            = order.Id
                };
                insurancePaymentModels.Add(insurancePaymentModel);
            });

            model.Collection = insurancePaymentModels;
            return(model);
        }