namespace Electricity.Api.Models; public record Day(uint DateTime, double TotalPowerUse, double TotalPowerReturn, double TotalGasUse) { public static Day Empty(DateOnly date) { return new Day( ConvertToEpoch(date.ToDateTime(new TimeOnly(0, 0), DateTimeKind.Utc)), 0, 0, 0); } public static Day FromEntity(Entities.ElectricityLog entity) { return new Day( DateTime: ConvertToEpoch(ParseEntityDateTime(entity.Date, entity.TimeUtc)), 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); } };