Ejemplo n.º 1
0
        static void Main(string[] args)
        {
            var sb   = new StringBuilder();
            var path = Path.Combine(Directory.GetCurrentDirectory(), "Bills");

            var lineItems           = LineParser.Parse(path);
            var subscriptionReports = Reporter.CostPerSubscription(lineItems);
            var resourceReports     = Reporter.CostPerResource(lineItems);
            var meterReports        = Reporter.CostPerMeter(lineItems);
            var subscriptions       = subscriptionReports.Select(sr => sr.Subscription).ToList();

            foreach (var sub in subscriptions)
            {
                sb.AppendLine($"--------------SUBSCRIPTION: {sub}--------------");
                var subReport = subscriptionReports.Single(r => r.Subscription == sub);
                sb.AppendLine(subReport.ToString());
                var resources   = resourceReports.Where(rr => rr.Subscription == sub).ToList();
                var resourceSum = resources.Sum(r => r.Cost);
                sb.AppendLine($"Resource Sum: {resourceSum:C2}");
                foreach (var resource in resources)
                {
                    sb.AppendLine(resource.ToString());
                }

                sb.AppendLine("--------------METERS--------------");
                var meters = meterReports.Where(mr => mr.Subscription == sub);
                foreach (var meter in meters)
                {
                    sb.AppendLine(meter.ToString());
                }
                sb.AppendLine($"--------------SUBSCRIPTION: {sub}--------------");

                sb.AppendLine();
            }

            File.WriteAllText(Path.Combine(Directory.GetCurrentDirectory(), "Report.txt"), sb.ToString());
            Console.WriteLine(sb.ToString());
            Console.Write("Press enter to exit:");
            Console.ReadLine();
        }