public async Task <EnergySummaryDaily> Handle(DailyEnergySummaryCommand request, CancellationToken cancellationToken) { var dayData = await _energySummaryDocumentReadRepository.Fetch(request.Date); var results = new EnergySummaryDaily( date: request.Date, batteryCapacity: GetCapacity(request.Date, dayData) ); return(results); }
public async Task <HomeConsumptionDaily> Handle(DailyHomeConsumptionCommand request, CancellationToken cancellationToken) { var dayData = await _energySummaryDocumentReadRepository.Fetch(request.Date); var results = new HomeConsumptionDaily( date: request.Date, consumption: GetData(request.Date, dayData, a => a.ConsumptionWattHours), grid: GetData(request.Date, dayData, a => a.GridImportWattHours), solarConsumption: GetData(request.Date, dayData, a => Math.Min(a.ConsumptionWattHours - a.GridImportWattHours, a.SolarPowerGenerationWattHours)), batteryConsumption: GetData(request.Date, dayData, a => Math.Max(0, Math.Min(a.ConsumptionWattHours - a.GridImportWattHours - a.SolarPowerGenerationWattHours, a.BatteryDischargeWattHours))), batteryCharge: GetData(request.Date, dayData, a => a.BatteryChargeWattHours), solarExported: GetData(request.Date, dayData, a => Math.Max(0, a.SolarPowerGenerationWattHours - Math.Min(a.ConsumptionWattHours - a.GridImportWattHours, a.SolarPowerGenerationWattHours) - a.BatteryChargeWattHours)) ); return(results); }