Example #1
0
        public void Setup()
        {
            this.mock = new SalesLayout();

            this.mock.Customers.Add(new Customer("000", "Customer1", "Industrial"));
            this.mock.Customers.Add(new Customer("001", "Customer2", "Rural"));
            this.mock.Customers.Add(new Customer("002", "Customer3", "Industrial"));
            this.mock.Customers.Add(new Customer("003", "Customer4", "Industrial"));

            this.mock.Sellers.Add(new Seller("001", "Seller1", 1600.5m));
            this.mock.Sellers.Add(new Seller("002", "Seller2", 3500));
            this.mock.Sellers.Add(new Seller("003", "Seller3", 1310.75m));

            var sale1 = new Sale(1, "Seller1");
            var sale2 = new Sale(2, "Seller2");
            var sale3 = new Sale(3, "Seller3");

            sale1.Items.Add(new Item(1, 100, 1.5f));
            sale2.Items.Add(new Item(2, 50, 1.5f));
            sale3.Items.Add(new Item(3, 1000, 1.5f));

            this.mock.Sales.Add(sale1);
            this.mock.Sales.Add(sale2);
            this.mock.Sales.Add(sale3);
        }
Example #2
0
        public static int Run(SalesLayout data)
        {
            if (data == null)
            {
                throw new ArgumentNullException();
            }

            var response = data.Customers.Distinct().Count();

            return(response);
        }
Example #3
0
        public override void Execute()
        {
            // Step 1: Parse file
            var layout = new SalesLayout();

            layout.Parse(this.fileInfo);

            // Step 2: Generate reports
            var report = new SalesReport();

            report.Run(layout);
        }
Example #4
0
        public static (string Seller, float Sold) Run(SalesLayout data)
        {
            if (data == null)
            {
                throw new ArgumentNullException();
            }

            var worst = data.Sales
                        .GroupBy(x => x.SellerName)
                        .ToDictionary
                        (
                k => k.Key,
                v => v.Sum(d => d.Items.Sum(s => s.Price * s.Quantity))
                        ).OrderBy(x => x.Value).FirstOrDefault();

            return(worst.Key, worst.Value);
        }
Example #5
0
        public static (int ID, float Value) Run(SalesLayout data)
        {
            if (data == null)
            {
                throw new ArgumentNullException();
            }

            var response = data.Sales
                           .ToDictionary
                           (
                k => k.ID,
                v => v.Items.Sum(s => s.Price * s.Quantity)
                           ).OrderByDescending(x => x.Value)
                           .FirstOrDefault();

            return(response.Key, response.Value);
        }
Example #6
0
        public void Run(SalesLayout layout)
        {
            var path = $"{DATA_OUT}\\Output{layout.FileName}.txt";

            if (File.Exists(path))
            {
                File.Delete(path);
            }

            using (StreamWriter stream = File.CreateText(path))
            {
                stream.WriteLine($"CustomersCount: {CustomersCount.Run(layout)}");
                stream.WriteLine($"SellersCounter: {SellersCounter.Run(layout)}");

                var mostExpensive = MostExpensiveSale.Run(layout);
                stream.WriteLine($"MostExpensiveSale: ID {mostExpensive.ID} - Total {mostExpensive.Value}");

                var worst = WorstSeller.Run(layout);
                stream.WriteLine($"WorstSeller: {worst.Seller} - Sold {worst.Sold}");
            }
        }