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());
        }
Esempio n. 2
0
        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);
        }