From ab2dde2f72e8246ae62bfc074294961389e18a04 Mon Sep 17 00:00:00 2001 From: Daniel Schick Date: Mon, 10 Jul 2023 12:15:26 +0200 Subject: [PATCH] =?UTF-8?q?Templates=20f=C3=BCr=20WasteDisposalServiceProv?= =?UTF-8?q?ider=20Part=20I?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Datenbank Klassen, Async Zugriff. AGNT_template bei der Gelegenheit auch umgebaut --- SQL/WSDP_template.7.13.sql | 23 ++++ bsmd.database/AGNT_Template.cs | 25 ++++- bsmd.database/DBManagerAsync.cs | 18 +++ .../WasteDisposalServiceProvider_Template.cs | 104 ++++++++++++++++++ bsmd.database/bsmd.database.csproj | 1 + 5 files changed, 170 insertions(+), 1 deletion(-) create mode 100644 SQL/WSDP_template.7.13.sql create mode 100644 bsmd.database/WasteDisposalServiceProvider_Template.cs diff --git a/SQL/WSDP_template.7.13.sql b/SQL/WSDP_template.7.13.sql new file mode 100644 index 00000000..ff8387dd --- /dev/null +++ b/SQL/WSDP_template.7.13.sql @@ -0,0 +1,23 @@ +PRINT N'Creating [dbo].[WasteDisposalServiceProvider_template]...'; + +GO +CREATE TABLE [dbo].[WasteDisposalServiceProvider_template] ( + [Id] UNIQUEIDENTIFIER NOT NULL, + [WasteDisposalServiceProviderName] NVARCHAR (50) NULL, + [Created] DATETIME NULL DEFAULT CURRENT_TIMESTAMP, + [Changed] DATETIME NULL, + PRIMARY KEY CLUSTERED ([Id] ASC) +); + +GO + +CREATE TRIGGER WasteDisposalServiceProvider_template_Trigger_Change_Log +ON + dbo.WasteDisposalServiceProvider_template + FOR UPDATE + AS + SET NOCOUNT ON + IF NOT UPDATE([Changed]) + UPDATE WasteDisposalServiceProvider_template SET [Changed] = GETDATE() WHERE Id IN (SELECT Id FROM [inserted]) + +GO \ No newline at end of file diff --git a/bsmd.database/AGNT_Template.cs b/bsmd.database/AGNT_Template.cs index 8585eee1..49d66986 100644 --- a/bsmd.database/AGNT_Template.cs +++ b/bsmd.database/AGNT_Template.cs @@ -3,13 +3,14 @@ using System; using System.Collections.Generic; +using System.Data; using System.Data.SqlClient; using System.Runtime.Serialization; namespace bsmd.database { - public class AGNT_Template : DatabaseEntity, IComparable + public class AGNT_Template : DatabaseEntityAsync, IComparable { #region Construction @@ -153,6 +154,28 @@ namespace bsmd.database return 0; } + protected override DatabaseEntityAsync ReadRowFromReader(IDataReader reader) + { + AGNT_Template agnt_t = null; + if(reader != null) + { + agnt_t = new AGNT_Template(); + agnt_t.id = reader.GetGuid(0); + if (!reader.IsDBNull(1)) agnt_t.AgentTitle = reader.GetString(1); + if (!reader.IsDBNull(2)) agnt_t.AgentCompanyName = reader.GetString(2); + if (!reader.IsDBNull(3)) agnt_t.AgentStreetAndNumber = reader.GetString(3); + if (!reader.IsDBNull(4)) agnt_t.AgentPostalCode = reader.GetString(4); + if (!reader.IsDBNull(5)) agnt_t.AgentCity = reader.GetString(5); + if (!reader.IsDBNull(6)) agnt_t.AgentCountry = reader.GetString(6); + if (!reader.IsDBNull(7)) agnt_t.AgentLastName = reader.GetString(7); + if (!reader.IsDBNull(8)) agnt_t.AgentFirstName = reader.GetString(8); + if (!reader.IsDBNull(9)) agnt_t.AgentPhone = reader.GetString(9); + if (!reader.IsDBNull(10)) agnt_t.AgentFax = reader.GetString(10); + if (!reader.IsDBNull(11)) agnt_t.AgentEMail = reader.GetString(11); + } + return agnt_t; + } + #endregion } diff --git a/bsmd.database/DBManagerAsync.cs b/bsmd.database/DBManagerAsync.cs index d3934b76..3f5202d2 100644 --- a/bsmd.database/DBManagerAsync.cs +++ b/bsmd.database/DBManagerAsync.cs @@ -103,6 +103,24 @@ namespace bsmd.database return (await vm.LoadListAsync(reader)).ConvertAll(x => (ValueMapping)x); } + public static async Task> GetAGNTTemplatesAsync() + { + SqlCommand cmd = new SqlCommand(); + AGNT_Template at = new AGNT_Template(); + at.PrepareLoadCommand(cmd, Message.LoadFilter.ALL); + SqlDataReader reader = await PerformCommandAsync(cmd); + return (await at.LoadListAsync(reader)).ConvertAll(x => (AGNT_Template)x); + } + + public static async Task> GetWastDisposalServiceProviderTemplatesAsync() + { + SqlCommand cmd = new SqlCommand(); + WasteDisposalServiceProvider_Template wdsp_t = new WasteDisposalServiceProvider_Template(); + wdsp_t.PrepareLoadCommand(cmd, Message.LoadFilter.ALL); + SqlDataReader reader = await PerformCommandAsync(cmd); + return (await wdsp_t.LoadListAsync(reader)).ConvertAll(x => (WasteDisposalServiceProvider_Template)x); + } + #endregion #endregion diff --git a/bsmd.database/WasteDisposalServiceProvider_Template.cs b/bsmd.database/WasteDisposalServiceProvider_Template.cs new file mode 100644 index 00000000..dd508c3c --- /dev/null +++ b/bsmd.database/WasteDisposalServiceProvider_Template.cs @@ -0,0 +1,104 @@ +// Copyright (c) 2023-present schick Informatik +// Description: Shadow class to track predefined waste disposal providers + +using System; +using System.Collections.Generic; +using System.Data; +using System.Data.SqlClient; +using System.Linq; +using System.Text; +using System.Threading.Tasks; + +namespace bsmd.database +{ + public class WasteDisposalServiceProvider_Template : DatabaseEntityAsync, IComparable + { + + #region Construction + + public WasteDisposalServiceProvider_Template() + { + this.tablename = "[dbo].[WasteDisposalServiceProvider_Template]"; + } + + #endregion + + #region Properties + + [MaxLength(99)] + public string WasteDisposalServiceProviderName { get; set; } + + #endregion + + #region DatabaseEntity implementation + + public override List LoadList(IDataReader reader) + { + List result = new List(); + + while (reader.Read()) + { + WasteDisposalServiceProvider_Template wdsp_t = new WasteDisposalServiceProvider_Template(); + wdsp_t.id = reader.GetGuid(0); + if (!reader.IsDBNull(1)) wdsp_t.WasteDisposalServiceProviderName = reader.GetString(1); + + result.Add(wdsp_t); + } + reader.Close(); + return result; + } + + public override void PrepareLoadCommand(IDbCommand cmd, Message.LoadFilter filter, params object[] criteria) + { + cmd.CommandText = string.Format("SELECT Id, WasteDisposalServiceProviderName FROM {0} ", this.Tablename); + } + + public override void PrepareSave(IDbCommand cmd) + { + SqlCommand scmd = cmd as SqlCommand; + + if (!this.WasteDisposalServiceProviderName.IsNullOrEmpty()) scmd.Parameters.AddWithValue("@P1", this.WasteDisposalServiceProviderName); + else scmd.Parameters.AddWithValue("@P1", DBNull.Value); + + if (this.IsNew) + { + this.CreateId(); + scmd.Parameters.AddWithValue("@ID", this.Id); + cmd.CommandText = string.Format("INSERT INTO {0} (Id, WasteDisposalServiceProviderName) VALUES (@ID, @P1)", this.Tablename); + } + else + { + cmd.CommandText = string.Format("UPDATE {0} SET WasteDisposalServiceProviderName = @P1 WHERE Id = @ID", this.Tablename); + scmd.Parameters.AddWithValue("@ID", this.Id); + } + } + + #endregion + + #region IComparable implementation + + public int CompareTo(object obj) + { + if (obj is WasteDisposalServiceProvider_Template) + this.WasteDisposalServiceProviderName.CompareTo(((WasteDisposalServiceProvider_Template)obj).WasteDisposalServiceProviderName); + return 0; + } + + protected override DatabaseEntityAsync ReadRowFromReader(IDataReader reader) + { + WasteDisposalServiceProvider_Template wdsp_t = null; + + if(reader != null) + { + wdsp_t = new WasteDisposalServiceProvider_Template(); + wdsp_t.id = reader.GetGuid(0); + if (!reader.IsDBNull(1)) wdsp_t.WasteDisposalServiceProviderName = reader.GetString(1); + } + + return wdsp_t; + } + + #endregion + + } +} diff --git a/bsmd.database/bsmd.database.csproj b/bsmd.database/bsmd.database.csproj index 231e2259..5cea3c39 100644 --- a/bsmd.database/bsmd.database.csproj +++ b/bsmd.database/bsmd.database.csproj @@ -187,6 +187,7 @@ +