public async Task <ChargeDetails> PrepareOrderForPayment(Order order, AddressViewModel shippingAddress, PaymentDetailsViewModel paymentDetails) { var details = new ChargeDetails { ID = order.Id, Items = order.OrderItems.Select(item => new ItemDetails() { Name = item.ItemOrdered.ProductName, ItemNumber = item.ItemOrdered.CatalogItemId, UnitPrice = item.UnitPrice, Amount = item.Units, LineTotal = item.UnitPrice * item.Units }).ToList(), Address = new Flaky.Data.Address() { FirstLine = shippingAddress.Street, City = shippingAddress.City, State = shippingAddress.State, Country = shippingAddress.Country, ZipCode = shippingAddress.ZipCode }, PaymentDetails = new Flaky.Data.PaymentDetails() { Brand = paymentDetails.Brand, CardNumber = paymentDetails.CardNumber, CardHolderName = paymentDetails.CardHolderName, CVC = paymentDetails.CVC, ExperationMonth = paymentDetails.ExperationMonth, ExperationYear = paymentDetails.ExperationYear } }; details.Taxes = await _billingClient.CalculateTax(details); details.TotalAmmount = details.Items.Sum(item => item.LineTotal) + details.Taxes.Sum(tax => tax.Amount); return(details); }
public ActionResult BillingPopUp(int Id) { AuleaseEntities db = new AuleaseEntities(); //Checking to make sure the component is in the new database or old database Component singleComp = db.Components.Where(n => n.Id == Id).Single(); // The condition checks if any billing charges exist in the new database // If no charges exist then fetch info from old db. if (singleComp.Leases.OrderByDescending(n => n.EndDate).First().Charges.Where(n => n.Type == singleComp.Type).Count() < 1 || singleComp.Leases.OrderByDescending(n => n.EndDate).First().Charges.Where(n => n.Type == singleComp.Type).Single().Tax == null) { var oldGroup = singleComp.Leases.OrderByDescending(n => n.EndDate).First().SystemGroup; LeasingDatabaseMVC.OldAuleaseEntities olddb = new LeasingDatabaseMVC.OldAuleaseEntities(); if (olddb.Billings.Where(n => n.SerialNumber == singleComp.SerialNumber).Count() == 0) { return(View()); } LeasingDatabaseMVC.Billing oldSingleComp = olddb.Billings.Where(n => n.SerialNumber == singleComp.SerialNumber).OrderByDescending(n => n.EndBillDate).First(); ViewBag.Component1 = singleComp.Type.Name; ViewBag.MonthlyCharge1 = oldSingleComp.MonthlyCharge; ViewBag.ComponentCost1 = oldSingleComp.ComponentCost; ViewBag.InsuranceCost1 = oldSingleComp.InsuranceCost; ViewBag.WarrantyCost1 = oldSingleComp.WarrantyCost; ViewBag.ShippingCost1 = 0M; ViewBag.LeasingRate1 = oldSingleComp.LeasingRate; ViewBag.ChargedRate1 = oldSingleComp.ChargedRate; ViewBag.InsuranceRate1 = oldSingleComp.Insurance; ViewBag.Tax1 = oldSingleComp.Tax; ViewBag.IGFRate1 = oldSingleComp.igfRate; return(View()); } var group = db.Components.Where(n => n.Id == Id).Select(n => n.Leases.FirstOrDefault().SystemGroup).Single(); List <Component> comps = group.Leases.Select(n => n.Component).Distinct().ToList(); Component comp = comps.Where(n => n.Type.Name != "Monitor").SingleOrDefault(); List <Component> monitors = comps.Where(n => n.Type.Name == "Monitor").ToList(); int count = comps.Count; if (comp != null) { ViewBag.Component1 = comp.Type.Name; ViewBag.MonthlyCharge1 = Billing.CalculateMonthlyCharge(comp.Leases.OrderByDescending(n => n.EndDate).First().Id); ViewBag.ComponentCost1 = Billing.GetComponentCost(comp.Id); ViewBag.InsuranceCost1 = Billing.GetInsuranceCost(comp.Id); ViewBag.WarrantyCost1 = Billing.GetWarrantyCost(comp.Id); ViewBag.ShippingCost1 = Billing.GetShippingCost(comp.Id); ViewBag.LeasingRate1 = Billing.CalculateLeasingRate(comp.Id); ViewBag.ChargedRate1 = Billing.CalculateChargedRate(comp.Id); ViewBag.InsuranceRate1 = Billing.CalculateSecondaryChargeRate(comp.Id, "Insurance"); ViewBag.WarrantyRate1 = Billing.CalculateSecondaryChargeRate(comp.Id, "Warranty"); ViewBag.ShippingRate1 = Billing.CalculateSecondaryChargeRate(comp.Id, "Shipping"); ViewBag.IGFInsuranceRate1 = Billing.GetIGFInsuranceRate(comp.Id); ViewBag.Tax1 = Billing.CalculateTax(comp.Id); ViewBag.IGFRate1 = Billing.GetIGFRate(comp.Id); ViewBag.Term = comp.Leases.OrderByDescending(n => n.EndDate).FirstOrDefault().Overhead.Term; if (count > 1) { Component mon1 = monitors.OrderBy(n => n.Id).First(); ViewBag.Component2 = mon1.Type.Name; ViewBag.MonthlyCharge2 = Billing.CalculateMonthlyCharge(mon1.Leases.OrderByDescending(n => n.EndDate).First().Id); ViewBag.ComponentCost2 = Billing.GetComponentCost(mon1.Id); ViewBag.InsuranceCost2 = Billing.GetInsuranceCost(mon1.Id); ViewBag.WarrantyCost2 = Billing.GetWarrantyCost(mon1.Id); ViewBag.ShippingCost2 = Billing.GetShippingCost(mon1.Id); ViewBag.LeasingRate2 = Billing.CalculateLeasingRate(mon1.Id); ViewBag.ChargedRate2 = Billing.CalculateChargedRate(mon1.Id); ViewBag.InsuranceRate2 = Billing.CalculateSecondaryChargeRate(mon1.Id, "Insurance"); ViewBag.WarrantyRate2 = Billing.CalculateSecondaryChargeRate(mon1.Id, "Warranty"); ViewBag.ShippingRate2 = Billing.CalculateSecondaryChargeRate(mon1.Id, "Shipping"); ViewBag.IGFInsuranceRate2 = Billing.GetIGFInsuranceRate(mon1.Id); ViewBag.Tax2 = Billing.CalculateTax(mon1.Id); ViewBag.IGFRate2 = Billing.GetIGFRate(mon1.Id); } if (count > 2) { Component mon2 = monitors.OrderBy(n => n.Id).Skip(1).First(); ViewBag.Component3 = mon2.Type.Name; ViewBag.MonthlyCharge3 = Billing.CalculateMonthlyCharge(mon2.Leases.OrderByDescending(n => n.EndDate).First().Id); ViewBag.ComponentCost3 = Billing.GetComponentCost(mon2.Id); ViewBag.InsuranceCost3 = Billing.GetInsuranceCost(mon2.Id); ViewBag.WarrantyCost3 = Billing.GetWarrantyCost(mon2.Id); ViewBag.ShippingCost3 = Billing.GetShippingCost(mon2.Id); ViewBag.LeasingRate3 = Billing.CalculateLeasingRate(mon2.Id); ViewBag.ChargedRate3 = Billing.CalculateChargedRate(mon2.Id); ViewBag.InsuranceRate3 = Billing.CalculateSecondaryChargeRate(mon2.Id, "Insurance"); ViewBag.WarrantyRate3 = Billing.CalculateSecondaryChargeRate(mon2.Id, "Warranty"); ViewBag.ShippingRate3 = Billing.CalculateSecondaryChargeRate(mon2.Id, "Shipping"); ViewBag.IGFInsuranceRate3 = Billing.GetIGFInsuranceRate(mon2.Id); ViewBag.Tax3 = Billing.CalculateTax(mon2.Id); ViewBag.IGFRate3 = Billing.GetIGFRate(mon2.Id); } } else { if (count > 0) { Component mon1 = monitors.OrderBy(n => n.Id).First(); ViewBag.Component1 = mon1.Type.Name; ViewBag.MonthlyCharge1 = Billing.CalculateMonthlyCharge(mon1.Leases.OrderByDescending(n => n.EndDate).First().Id); ViewBag.ComponentCost1 = Billing.GetComponentCost(mon1.Id); ViewBag.InsuranceCost1 = Billing.GetInsuranceCost(mon1.Id); ViewBag.WarrantyCost1 = Billing.GetWarrantyCost(mon1.Id); ViewBag.ShippingCost1 = Billing.GetShippingCost(mon1.Id); ViewBag.LeasingRate1 = Billing.CalculateLeasingRate(mon1.Id); ViewBag.ChargedRate1 = Billing.CalculateChargedRate(mon1.Id); ViewBag.InsuranceRate1 = Billing.CalculateSecondaryChargeRate(mon1.Id, "Insurance"); ViewBag.WarrantyRate1 = Billing.CalculateSecondaryChargeRate(mon1.Id, "Warranty"); ViewBag.ShippingRate1 = Billing.CalculateSecondaryChargeRate(mon1.Id, "Shipping"); ViewBag.IGFInsuranceRate1 = Billing.GetIGFInsuranceRate(mon1.Id); ViewBag.Tax1 = Billing.CalculateTax(mon1.Id); ViewBag.IGFRate1 = Billing.GetIGFRate(mon1.Id); } if (count > 1) { Component mon2 = monitors.OrderBy(n => n.Id).Skip(1).First(); ViewBag.Component2 = mon2.Type.Name; ViewBag.MonthlyCharge2 = Billing.CalculateMonthlyCharge(mon2.Leases.OrderByDescending(n => n.EndDate).First().Id); ViewBag.ComponentCost2 = Billing.GetComponentCost(mon2.Id); ViewBag.InsuranceCost2 = Billing.GetInsuranceCost(mon2.Id); ViewBag.WarrantyCost2 = Billing.GetWarrantyCost(mon2.Id); ViewBag.ShippingCost2 = Billing.GetShippingCost(mon2.Id); ViewBag.LeasingRate2 = Billing.CalculateLeasingRate(mon2.Id); ViewBag.ChargedRate2 = Billing.CalculateChargedRate(mon2.Id); ViewBag.InsuranceRate2 = Billing.CalculateSecondaryChargeRate(mon2.Id, "Insurance"); ViewBag.WarrantyRate2 = Billing.CalculateSecondaryChargeRate(mon2.Id, "Warranty"); ViewBag.ShippingRate2 = Billing.CalculateSecondaryChargeRate(mon2.Id, "Shipping"); ViewBag.IGFInsuranceRate2 = Billing.GetIGFInsuranceRate(mon2.Id); ViewBag.Tax2 = Billing.CalculateTax(mon2.Id); ViewBag.IGFRate2 = Billing.GetIGFRate(mon2.Id); } } return(View()); }