Example #1
0
        private void DataChanged()
        {
            if (Container != null && CurrentPeriod != null)
            {
                var periods = Container.Periods
                              .Where(period => period.From >= CurrentPeriod.From)
                              .SelectMany(period => period.Regions
                                          .Where(region => region.RegionId == SelectedRegion)
                                          .Where(region => region.Estimated?.GramsOfCO2PerkWh.HasValue ?? false)
                                          .Select(region => (Period: period, GramsOfCO2PerkWh: region.Estimated.GramsOfCO2PerkWh.Value)))
                              .ToArray();

                var maxGramsOfCO2PerkWh = periods.Max(tuple => tuple.GramsOfCO2PerkWh);

                var periodIntensities = periods
                                        .Select(
                    tuple => new PeriodIntensity
                {
                    From                                  = tuple.Period.From.ToLocalTime(),
                    To                                    = tuple.Period.To.ToLocalTime(),
                    GramsOfCO2PerkWh                      = tuple.GramsOfCO2PerkWh,
                    PercentOfMaxGramsOfCO2PerkWh          = tuple.GramsOfCO2PerkWh / maxGramsOfCO2PerkWh,
                    RemainingPercentOfMaxGramsOfCO2PerkWh = 1 - (tuple.GramsOfCO2PerkWh / maxGramsOfCO2PerkWh)
                })
                                        .OrderBy(periodIntensity => periodIntensity.GramsOfCO2PerkWh)
                                        .ToArray();

                GoodPeriods = periodIntensities.Take(3).ToArray();
                BadPeriods  = periodIntensities.Reverse().Take(3).Reverse().ToArray();

                BestPeriod  = GoodPeriods.First();
                WorstPeriod = BadPeriods.Last();
            }
        }
Example #2
0
        private static void TestBadPeriods(AConnection oDB, ASafeLog oLog)
        {
            oDB.LogVerbosityLevel = LogVerbosityLevel.Verbose;

            var bp = new BadPeriods(new DateTime(2001, 2, 12));

            bp.Add(new DateTime(2002, 3, 13), false);
            bp.Add(new DateTime(2002, 4, 18), false);
            bp.Add(new DateTime(2005, 5, 13), true);
            bp.Add(new DateTime(2006, 5, 13), false);

            oLog.Debug("{0}", bp);
        }
Example #3
0
		} // ToString

		/// <summary>
		/// Creates a deep copy of current model.
		/// </summary>
		/// <returns>A copy of current model.</returns>
		public LoanCalculatorModel DeepClone() {
			var lcm = new LoanCalculatorModel {
				InterestOnlyRepayments = InterestOnlyRepayments,
			};

			lcm.DiscountPlan.AddRange(DiscountPlan);
			lcm.Repayments.AddRange(Repayments.Select(v => v.DeepClone()));
			lcm.Fees.AddRange(Fees.Select(v => v.DeepClone()));
			lcm.BadPeriods.AddRange(BadPeriods.Select(v => v.DeepClone()));

			lcm.LoanHistory.Clear();
			lcm.LoanHistory.AddRange(LoanHistory.Select(v => v.DeepClone()));

			return lcm;
		} // DeepClone