laatzen/Common/Ui/Common.UI/Models/AuftragDbContext.cs
2025-05-05 09:48:23 +02:00

163 lines
7.3 KiB
C#

namespace Common.UI.Models
{
using Common.UI.Infrastructure;
using Common.Hardware.WaterMeter.eRegister.Models;
using LaaPackages.SqlClient;
using System.Collections.Generic;
using System.IO;
using System.Xml.Serialization;
using System;
internal class AuftragDbContext
{
private static readonly string connectionString = Appsettings.GetSetting("ConnectionString");
private static readonly SqlConnection sqlConnection = SqlConnection.CreateSqlConnection(connectionString, AppHost.NLogger.Error);
internal class eRegister
{
internal static void Update(IEnumerable<EregisterState> states)
{
foreach (var state in states)
{
if (state.ShouldUpdate)
{
sqlConnection
.CreateCommand($@"
UPDATE eRegister
SET Fabrikationsnummer = @{nameof(state.Fabrikationsnummer)}
, Bemerkung = @{nameof(state.Bemerkung)}
, BUP = @{nameof(state.BUP)}
, SEMI = @{nameof(state.SEMI)}
, DEBUG = @{nameof(state.DEBUG)}
, SemiDebugDatum = @{nameof(state.SemiDebugDatum)}
, GeschlossenDatum = @{nameof(state.GeschlossenDatum)}
, FunkadresseDatum = @{nameof(state.FunkadresseDatum)}
WHERE Seriennummer = @{nameof(state.Seriennummer)}")
.SetParameter(nameof(state.Fabrikationsnummer), state.Fabrikationsnummer)
.SetParameter(nameof(state.Bemerkung), state.Bemerkung)
.SetParameter(nameof(state.BUP), state.BUP)
.SetParameter(nameof(state.SEMI), state.SEMI)
.SetParameter(nameof(state.DEBUG), state.DEBUG)
.SetParameter(nameof(state.SemiDebugDatum), state.SemiDebugDatum)
.SetParameter(nameof(state.GeschlossenDatum), state.GeschlossenDatum)
.SetParameter(nameof(state.FunkadresseDatum), state.FunkadresseDatum)
.SetParameter(nameof(state.Seriennummer), state.Seriennummer)
.ExecuteNonQuery();
}
}
}
}
internal class eRegister_History
{
internal static void Save(IEnumerable<EregisterHistory> histories)
{
foreach (var history in histories)
{
sqlConnection
.CreateCommand($@"
INSERT INTO eRegister_History
( SerienNr
, Adresse
, TempAdresse
, Telegrams)
VALUES (@{nameof(history.SerienNr)}
, @{nameof(history.Adresse)}
, @{nameof(history.TempAdresse)}
, @{nameof(history.Telegrams)})")
.SetParameter(nameof(history.SerienNr), history.SerienNr)
.SetParameter(nameof(history.Adresse), history.Adresse)
.SetParameter(nameof(history.TempAdresse), history.TempAdresse)
.SetParameter(nameof(history.Telegrams), history.Telegrams.ToArray())
.ExecuteNonQuery();
}
}
}
internal class Eregister_Shared
{
internal static List<EregisterShared> LoadActions(int sharedId)
=> sqlConnection.LoadActions(sharedId);
}
internal class P2000Shared
{
internal static int FindSharedId(int psno, string action)
=> sqlConnection.FindSharedId(psno, action);
}
internal static EregisterProgrammingParametersList LoadEregisterProgrammingParametersListForSharedId(int sharedId)
{
var xmlList = sqlConnection
.CreateCommand($@"
SELECT CAST((SELECT DISTINCT *
FROM VieweRegisterProgrammingParameters
WHERE SharedId = @{nameof(sharedId)}
AND Completed = 0
AND SlotNr > 0
FOR XML PATH('{nameof(EregisterProgrammingParameters)}')
, ROOT('{nameof(EregisterProgrammingParametersList)}'))
AS XML)")
.SetParameter(nameof(sharedId), sharedId)
.FirstOrDefault(x => x.GetValue<string>(0));
var xmlDeserialized = default(object);
if (!string.IsNullOrWhiteSpace(xmlList))
{
var xmlSerializer = new XmlSerializer(typeof(EregisterProgrammingParametersList));
var xmlReader = new StringReader(xmlList);
try
{
xmlDeserialized = xmlSerializer.Deserialize(xmlReader);
}
catch (Exception e)
{
AppHost.NLogger.Error(e.ToString());
}
}
return xmlDeserialized as EregisterProgrammingParametersList ?? new EregisterProgrammingParametersList();
}
internal static EregisterProgrammingParametersList LoadEregisterProgrammingParametersListForSerialNr(int serialNr)
{
var xmlList = sqlConnection
.CreateCommand($@"
SELECT CAST((SELECT ersh.P2000_Shared_Id
, ersh.Slotno
, erpp.*
FROM eRegister_Shared AS ersh
JOIN VieweRegisterProgrammingParameters AS erpp
ON ersh.Serialno = erpp.SerienNr
WHERE ersh.Serialno = @{nameof(serialNr)}
AND ersh.Completed = 0
FOR XML PATH('{nameof(EregisterProgrammingParameters)}')
, ROOT('{nameof(EregisterProgrammingParametersList)}'))
AS XML)")
.SetParameter(nameof(serialNr), serialNr)
.FirstOrDefault(x => x.GetValue<string>(0));
var xmlDeserialized = default(object);
if (!string.IsNullOrWhiteSpace(xmlList))
{
var xmlSerializer = new XmlSerializer(typeof(EregisterProgrammingParametersList));
var xmlReader = new StringReader(xmlList);
try
{
xmlDeserialized = xmlSerializer.Deserialize(xmlReader);
}
catch (Exception e)
{
AppHost.NLogger.Error(e.ToString());
}
}
return xmlDeserialized as EregisterProgrammingParametersList ?? new EregisterProgrammingParametersList();
}
}
}