public static string GetSalesWithAppliedDicount(CarDealershipContext context) { var sales = context.Sales .Include(e => e.Customer) .Include(e => e.Car) .ThenInclude(e => e.CarParts) .ThenInclude(e => e.Part) .Where(e => e.Discount > 0) .ToArray(); List <SalesWithAppliedDiscount> discountSales = new List <SalesWithAppliedDiscount>(); foreach (var sale in sales) { var currentSale = new SalesWithAppliedDiscount(); currentSale.CustomerName = sale.Customer.Name; currentSale.IsYoungDriver = sale.Customer.IsYoungDriver; currentSale.Car.Model = sale.Car.Model; currentSale.Car.Make = sale.Car.Make; currentSale.Car.TravelledDistance = sale.Car.TravelledDistance; if (currentSale.IsYoungDriver) { currentSale.Discount = sale.Discount + 0.05; } else { currentSale.Discount = sale.Discount; } decimal partsPrice = 0; foreach (var carPart in sale.Car.CarParts) { var currentPartPrice = carPart.Part.Price; partsPrice += currentPartPrice; } currentSale.Price = partsPrice; currentSale.DiscountPrice = (1m - (decimal)currentSale.Discount) * partsPrice; discountSales.Add(currentSale); } var xmlNamespaces = new XmlSerializerNamespaces(new[] { XmlQualifiedName.Empty }); XmlSerializer serializer = new XmlSerializer(typeof(List <SalesWithAppliedDiscount>), new XmlRootAttribute("sales")); var sb = new StringBuilder(); serializer.Serialize(new StringWriter(sb), discountSales, xmlNamespaces); return(sb.ToString()); }
public static string GetSalesWithAppliedDicount(CarDealershipContext context) { var sales = context.Sales .Include(e => e.Customer) .Include(e => e.Car) .ThenInclude(e => e.CarParts) .ThenInclude(e => e.Part) .Where(e => e.Discount > 0) .ToArray(); List <SalesWithAppliedDiscount> discountSales = new List <SalesWithAppliedDiscount>(); foreach (var sale in sales) { var currentSale = new SalesWithAppliedDiscount(); currentSale.customerName = sale.Customer.Name; currentSale.Car.Model = sale.Car.Model; currentSale.Car.Make = sale.Car.Make; currentSale.Car.TravelledDistance = sale.Car.TravelledDistance; currentSale.discount = sale.Discount; decimal partsPrice = 0; foreach (var carPart in sale.Car.CarParts) { var currentPartPrice = carPart.Part.Price; partsPrice += currentPartPrice; } currentSale.price = partsPrice; currentSale.priceWithDiscount = (1m - (decimal)currentSale.discount) * partsPrice; discountSales.Add(currentSale); } var discountSalesString = JsonConvert.SerializeObject(discountSales, new JsonSerializerSettings { Formatting = Formatting.Indented, }); return(discountSalesString); }