forked from ddrilling/AsbCloudServer
72 lines
2.3 KiB
C#
72 lines
2.3 KiB
C#
|
using AsbCloudApp.Data;
|
|||
|
using AsbCloudApp.Services;
|
|||
|
using AsbCloudDb.Model;
|
|||
|
using AsbCloudInfrastructure.Services.Cache;
|
|||
|
using AutoMapper;
|
|||
|
using System.Text.Json;
|
|||
|
using System;
|
|||
|
using System.Collections.Generic;
|
|||
|
using System.Linq;
|
|||
|
using System.Threading;
|
|||
|
using System.Threading.Tasks;
|
|||
|
|
|||
|
namespace AsbCloudInfrastructure.Services
|
|||
|
{
|
|||
|
public class TelemetryService : ITelemetryService
|
|||
|
{
|
|||
|
private readonly IAsbCloudDbContext db;
|
|||
|
private readonly IMapper mapper;
|
|||
|
private readonly ICacheTable<Telemetry> cacheTelemetry;
|
|||
|
|
|||
|
public TelemetryService(IAsbCloudDbContext db, CacheDb cacheDb, MapperConfiguration mapperConfiguration)
|
|||
|
{
|
|||
|
this.db = db;
|
|||
|
mapper = mapperConfiguration.CreateMapper();
|
|||
|
cacheTelemetry = cacheDb.GetCachedTable<Telemetry>((AsbCloudDbContext)db);
|
|||
|
}
|
|||
|
|
|||
|
public void UpdateData(string uid, TelemetryDataDto data)
|
|||
|
{
|
|||
|
var telemetry = cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid, RefreshMode.IfResultEmpty);
|
|||
|
|
|||
|
if(telemetry is null)
|
|||
|
{
|
|||
|
var newTelemetry = new Telemetry
|
|||
|
{
|
|||
|
RemoteUid = uid,
|
|||
|
Version = data.HmiVersion,
|
|||
|
Data = JsonSerializer.Serialize(data),
|
|||
|
LastDataSaub = JsonSerializer.Serialize(data.DataSaub),
|
|||
|
};
|
|||
|
telemetry = cacheTelemetry.Insert(newTelemetry);
|
|||
|
}
|
|||
|
|
|||
|
if (data.DataSaub != default)
|
|||
|
{
|
|||
|
foreach (var item in data.DataSaub)
|
|||
|
{
|
|||
|
var dataSaub = mapper.Map<DataSaubBase>(item);
|
|||
|
dataSaub.IdTelemetry = telemetry.Id;
|
|||
|
db.DataSaubBases.Add(dataSaub);
|
|||
|
}
|
|||
|
|
|||
|
db.SaveChanges();
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
public void UpdateInfo(string uid, TelemetryInfoDto info)
|
|||
|
{
|
|||
|
var telemetry = cacheTelemetry.FirstOrDefault(t => t.RemoteUid == uid);
|
|||
|
if (telemetry is null)
|
|||
|
{
|
|||
|
var newTelemetry = new Telemetry
|
|||
|
{
|
|||
|
RemoteUid = uid,
|
|||
|
Info = JsonSerializer.Serialize(info),
|
|||
|
};
|
|||
|
telemetry = cacheTelemetry.Insert(newTelemetry);
|
|||
|
}
|
|||
|
}
|
|||
|
}
|
|||
|
}
|