private static GenerationOutput CalculateGenerationData(GenerationReport generationReport, ReferenceData referenceData) { Totals totals = new Totals(); List <ActualHeatRates> actualHeatRates = new List <ActualHeatRates>(); MaxEmissionGenerators maxEmissionGenerators = new MaxEmissionGenerators(); foreach (var windGenerator in generationReport.Wind.WindGenerator) { var generator = new Generator { Name = windGenerator.Name, Total = CalculateTotalGenerationValue(windGenerator.Generation, windGenerator.Name, referenceData, null) }; totals.Generator.Add(generator); } foreach (var coalGenerator in generationReport.Coal.CoalGenerator) { var generator = new Generator { Name = coalGenerator.Name, Total = CalculateTotalGenerationValue(coalGenerator.Generation, coalGenerator.Name, referenceData, coalGenerator.EmissionsRating) }; var actualHeatRate = new ActualHeatRates { Name = coalGenerator.Name, HeatRate = coalGenerator.TotalHeatInput / coalGenerator.ActualNetGeneration }; totals.Generator.Add(generator); actualHeatRates.Add(actualHeatRate); } foreach (var gasGenerator in generationReport.Gas.GasGenerator) { var generator = new Generator { Name = gasGenerator.Name, Total = CalculateTotalGenerationValue(gasGenerator.Generation, gasGenerator.Name, referenceData, gasGenerator.EmissionsRating) }; totals.Generator.Add(generator); } maxEmissionGenerators.Day = MaxEmissionsDays.OrderByDescending(x => x.Emission).GroupBy(x => x.Date).Select(b => b.First()).ToList(); return(new GenerationOutput() { Totals = totals, ActualHeatRates = actualHeatRates, MaxEmissionGenerators = maxEmissionGenerators }); }
public IList <ActualHeatRates> GetActualHeatRates(Coal coal) { var actualHeatRates = new List <ActualHeatRates>(); foreach (var coalGenerator in coal.CoalGenerator) { var actualHeatRate = new ActualHeatRates(); actualHeatRate.HeatRate = coalGenerator.TotalHeatInput / coalGenerator.ActualNetGeneration; actualHeatRate.Name = coalGenerator.Name; actualHeatRates.Add(actualHeatRate); } return(actualHeatRates); }