diff --git a/AsbCloudDb/Model/GTR/WitsItemBase.cs b/AsbCloudDb/Model/GTR/WitsItemBase.cs index f9c40de8..52ea081c 100644 --- a/AsbCloudDb/Model/GTR/WitsItemBase.cs +++ b/AsbCloudDb/Model/GTR/WitsItemBase.cs @@ -17,9 +17,9 @@ namespace AsbCloudDb.Model.GTR [Column("date", TypeName = "timestamp with time zone")] public DateTimeOffset DateTime { get; set; } - + [Column("Value")] - public T Value { get; set; } + public T Value { get; set; } = default!; [ForeignKey(nameof(IdTelemetry))] public virtual Telemetry? Telemetry { get; set; } diff --git a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs index 95799a8f..9d9fefe3 100644 --- a/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs +++ b/AsbCloudInfrastructure/Repository/GtrWitsRepository.cs @@ -3,6 +3,7 @@ using AsbCloudApp.Repositories; using AsbCloudApp.Services; using AsbCloudDb.Model; using AsbCloudDb.Model.GTR; +using Mapster; using Microsoft.EntityFrameworkCore; using System; using System.Collections.Generic; @@ -156,25 +157,23 @@ namespace AsbCloudInfrastructure.Repository var timezoneHours = telemetryService.GetTimezone(idTelemetry).Hours; foreach (var item in dto.Items) { - var jsonValue = item.Value; - var type = jsonValue.Value.GetType().Name; - if (type == "String") + var jsonValue = item.Value; + if(jsonValue.Value is string valueString) { - var entity = GetEntityStr(dto, jsonValue, item.Key, timezoneHours); - db.WitsItemString.Add(entity); + var entity = GetEntity(dto, valueString, item.Key, timezoneHours); + db.WitsItemString.Add(entity.Adapt()); } - else if (type == "Int32") + if (jsonValue.Value is float valueFloat) { - var entity = GetEntityInt(dto, jsonValue, item.Key, timezoneHours); - db.WitsItemInt.Add(entity); + var entity = GetEntity(dto, valueFloat, item.Key, timezoneHours); + db.WitsItemFloat.Add(entity.Adapt()); } - else if (type == "Single") + if (jsonValue.Value is int valueInt) { - var entity = GetEntityFloat(dto, jsonValue, item.Key, timezoneHours); - db.WitsItemFloat.Add(entity); - } - } - + var entity = GetEntity(dto, valueInt, item.Key, timezoneHours); + db.WitsItemInt.Add(entity.Adapt()); + } + } await db.SaveChangesAsync(token); } @@ -261,42 +260,16 @@ namespace AsbCloudInfrastructure.Repository .ConfigureAwait(false); return entities; } - - private static WitsItemString GetEntityStr(WitsRecordDto record,JsonValue value,int idItems,double timezoneHours) + + private static WitsItemBase GetEntity(WitsRecordDto record, Tvalue value, int idItems, double timezoneHours) { - var entity = new WitsItemString + var entity = new WitsItemBase { IdTelemetry = record.IdTelemetry, DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours), IdRecord = record.Id, IdItem = idItems, - Value = value.Value.ToString()!, - }; - return entity; - } - - private static WitsItemInt GetEntityInt(WitsRecordDto record, JsonValue value, int idItems, double timezoneHours) - { - var entity = new WitsItemInt - { - IdTelemetry = record.IdTelemetry, - DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours), - IdRecord = record.Id, - IdItem = idItems, - Value = JsonSerializer.Deserialize(value.ToString())!, - }; - return entity; - } - - private static WitsItemFloat GetEntityFloat(WitsRecordDto record, JsonValue value, int idItems, double timezoneHours) - { - var entity = new WitsItemFloat - { - IdTelemetry = record.IdTelemetry, - DateTime = record.Date.ToUtcDateTimeOffset(timezoneHours), - IdRecord = record.Id, - IdItem = idItems, - Value = (float)value.Value, + Value = value, }; return entity; }