163 lines
7.3 KiB
C#
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();
|
|
}
|
|
}
|
|
}
|