static void Main(string[] args)
        {
            ITariffFactory            tariffFactory      = new TariffFactory();
            ITariffCalculationFactory calculationFactory =
                new TariffCalculationFactory();

            Tariff[] tariffs = Console.ReadLine()
                               .Split(',')
                               .Select(TariffName.Create)
                               .Select(tariffFactory.Create)
                               .ToArray();
            Consumption[] consumptions = Console.ReadLine()
                                         .Split(',')
                                         .Select(value => value.ToConsumption())
                                         .ToArray();

            TariffCalculationResultCollection resultCollection =
                new TariffCalculationResultCollection();

            foreach (Tariff tariff in tariffs)
            {
                foreach (Consumption consumption in consumptions)
                {
                    ITariffCalculation calculation = calculationFactory
                                                     .Create(tariff, consumption);
                    ConsumptionCost tariffCost = tariff.Calculate(
                        consumption, calculation);
                    resultCollection.Add(tariff.Name, tariffCost);
                }
            }

            resultCollection.Render(new ConsoleTariffCalculationResultRenderer());
        }
Exemplo n.º 2
0
 public void Render(TariffCalculationResultCollection collection)
 {
     foreach (var element in collection)
     {
         string tariffName    = element.Key.Name;
         string elementValues = string.Join(", ",
                                            element.Value.Select(value => value.Value));
         Console.WriteLine($"{tariffName} -> {elementValues}");
     }
 }