Split Electricity API days endpoint

This commit is contained in:
2023-09-03 11:56:49 +02:00
parent 04d8bf336f
commit 84a358cfe6
6 changed files with 64 additions and 24 deletions

View File

@@ -1,3 +1,5 @@
using Electricity.Api.Extensions;
namespace Electricity.Api.Models;
public record Day(uint DateTime, double TotalPowerUse, double TotalPowerReturn, double TotalGasUse)
@@ -5,32 +7,17 @@ public record Day(uint DateTime, double TotalPowerUse, double TotalPowerReturn,
public static Day Empty(DateOnly date)
{
return new Day(
ConvertToEpoch(date.ToDateTime(new TimeOnly(0, 0), DateTimeKind.Utc)),
date.ToDateTime(new TimeOnly(0, 0), DateTimeKind.Utc).ToEpoch(),
0, 0, 0);
}
public static Day FromEntity(Entities.ElectricityLog entity)
{
return new Day(
DateTime: ConvertToEpoch(ParseEntityDateTime(entity.Date, entity.TimeUtc)),
DateTime: entity.GetDateTime().ToEpoch(),
TotalPowerUse: entity.TotalPowerConsumptionDay + entity.TotalPowerConsumptionNight,
TotalPowerReturn: entity.TotalPowerReturnDay + entity.TotalPowerReturnNight,
TotalGasUse: entity.GasConsumptionInCubicMeters
);
}
private static DateTime ParseEntityDateTime(string date, string timeUtc)
{
return System.DateTime
.Parse(
$"{date}T{timeUtc}Z",
null,
System.Globalization.DateTimeStyles.AssumeUniversal)
.ToUniversalTime();
}
private static uint ConvertToEpoch(DateTime dateTime)
{
return (uint)Math.Round((dateTime - System.DateTime.UnixEpoch).TotalSeconds);
}
};