Compare commits

...

19 Commits

Author SHA1 Message Date
Developer01
286e17a900 layout specihern 2025-07-18 15:42:07 +02:00
Developer01
a21db6d6c5 Button AccessCode manuell versenden 2025-07-15 07:27:01 +02:00
Developer01
fe7030b9d7 Resend AccessCode Manually 2025-07-14 15:19:05 +02:00
Developer01
888c04b5c9 EnvelopeDomain Add Comment 2025-07-14 13:45:14 +02:00
de2cc62f95 Merge branch 'master' of http://git.dd:3000/AppStd/EnvelopeGenerator 2025-07-02 14:26:08 +02:00
0cfa732d87 Fix StatusTranslated property for correct enum translation
Updated the `StatusTranslated` property to cast the `Status` integer to the `Constants.EnvelopeStatus` enum before calling `ToString()`. This ensures accurate string representation based on the enum rather than the integer value.
2025-07-02 14:25:14 +02:00
Developer01
b14d9169f2 Fild editor msgbox 2025-07-02 13:18:01 +02:00
be51ca31dd Add initial migration for database schema setup
This commit introduces the `InitialCreate` migration class, establishing the initial database schema with multiple tables including `TBDD_CLIENT_USER`, `TBDD_GROUPS`, `TBDD_MODULES`, and `TBDD_USER`. Foreign key relationships are defined to ensure referential integrity, and a `Down` method is included for rollback functionality.

Additionally, the `InitialCreate.Designer.cs` file is generated to capture the model snapshot post-migration, while the `EGDbContextModelSnapshot.cs` file is updated to reflect the current state of the database model for future migrations.
2025-07-01 17:22:13 +02:00
bb8d7cd208 Update AddedWho property in EnvelopeReceiverReadOnly
Modified the `AddedWho` property to use `nvarchar(250)`
and increased the string length constraint from 100 to 250
characters, allowing for more extensive data storage.
2025-07-01 17:17:24 +02:00
b6588db615 Increase email address length in data models
Updated `ReceiverMail` and `EmailAddress` columns to
support `nvarchar(250)` for longer email addresses.
Retained `[NotMapped]` attribute for `Envelope` in
`EnvelopeReceiverReadOnly.cs` with a note for future
standardization of `EnvelopeId` data type.
2025-07-01 17:08:30 +02:00
9a9aa2608b Refactor EnvelopeHistory and update DbContext for migrations
Removed Sender and Receiver properties from EnvelopeHistory.
Added ActionDate and Comment properties. Introduced IsMigration
property in EGDbContext to conditionally configure foreign key
relationships for EnvelopeHistory. Updated EGDbContextFactory
to set IsMigration during context creation for migration operations.
2025-07-01 16:38:42 +02:00
349d65d050 Update DbTriggerParams and EF Core package versions
- Changed DbTriggerParams to use ICollection<string> for flexibility.
- Updated Microsoft.EntityFrameworkCore.SqlServer to version 9.0.6.
- Made _logger in EGDbContext nullable and optional in constructor.
- Updated logging statements to prevent null reference exceptions.
- Added Microsoft.EntityFrameworkCore.SqlServer package for net8.0 and net9.0.
- Introduced appsettings.migration.json for connection strings and trigger parameters.
- Added EGDbContextFactory for design-time DbContext creation.
2025-07-01 13:07:40 +02:00
93593226e2 Add conditional DB connection string selection
Updated `Program.cs` to conditionally select the database connection string based on an environment variable or configuration setting. Introduced a new variable `cnnStrName` for determining the use of a migration test database.

Added a new setting `"UseDbMigration": true` in `appsettings.json` to enable the migration test database, and included the corresponding connection string as `"DbMigrationTest"`. Removed the previous `"Dev"` connection string.
2025-06-30 16:19:22 +02:00
351cead423 Update Entity Framework packages and add Design package
The project file `EnvelopeGenerator.Infrastructure.csproj` has been modified to include the `Microsoft.EntityFrameworkCore.Design` package for net7.0, net8.0, and net9.0, with appropriate configurations for `PrivateAssets` and `IncludeAssets`. Additionally, the versions of `Microsoft.EntityFrameworkCore` and `Microsoft.EntityFrameworkCore.Relational` have been updated for net8.0 (from 8.0.15 to 8.0.17) and net9.0 (from 9.0.5 to 9.0.6).
2025-06-30 15:59:35 +02:00
07cab88e0d Refactor service registration with lambda expression 2025-06-30 15:53:38 +02:00
faa019355a Add DbMigrationTest key and update connection logic
Introduced a new static readonly string `DbMigrationTest` in the `Key` class for database migration tests. Updated connection string logic in `Program.cs` to use `DbMigrationTest` when `useDbMigration` is true, allowing for dynamic connection string selection based on environment configuration.
2025-06-30 15:38:01 +02:00
df9bcf3221 Remove IUserReceiverService registration 2025-06-30 15:29:57 +02:00
cda19e2b83 Add migration support and update launch settings
Introduce `useDbMigration` variable in `Program.cs` to conditionally manage database migrations based on environment settings. Update `launchSettings.json` to include a new `httpsDbMigration` profile for testing with Swagger UI. Modify `appsettings.json` to add `UseDbMigration` setting and replace the "Dev" connection string with "DbMigrationTest" for migration testing.
2025-06-30 15:29:47 +02:00
1586009a72 Add development connection string to appsettings.json 2025-06-30 15:07:04 +02:00
35 changed files with 3961 additions and 71 deletions

View File

@@ -3,6 +3,6 @@
/// <summary>
///
/// </summary>
public class DbTriggerParams : Dictionary<string, IEnumerable<string>>
public class DbTriggerParams : Dictionary<string, ICollection<string>>
{
}

View File

@@ -38,7 +38,6 @@ public static class DependencyInjection
services.TryAddScoped<IEnvelopeReceiverService, EnvelopeReceiverService>();
services.TryAddScoped<IEnvelopeTypeService, EnvelopeTypeService>();
services.TryAddScoped<IReceiverService, ReceiverService>();
services.TryAddScoped<IUserReceiverService, UserReceiverService>();
services.TryAddScoped<IEnvelopeReceiverReadOnlyService, EnvelopeReceiverReadOnlyService>();
//Auto mapping profiles

View File

@@ -74,4 +74,9 @@ public static class Key
///
/// </summary>
public static readonly string Default = nameof(Default);
/// <summary>
///
/// </summary>
public static readonly string DbMigrationTest = nameof(DbMigrationTest);
}

View File

@@ -27,6 +27,7 @@ Public Class EnvelopeModel
Dim oEnvelope = New Envelope() With {
.Id = pRow.ItemEx("GUID", 0),
.Title = pRow.ItemEx("TITLE", ""),
.Comment = pRow.ItemEx("COMMENT", ""),
.EnvelopeTypeId = pRow.ItemEx("ENVELOPE_TYPE", 0),
.ContractType = pRow.ItemEx("CONTRACT_TYPE", 0),
.Uuid = pRow.ItemEx("ENVELOPE_UUID", ""),

View File

@@ -57,7 +57,9 @@ Public Class ActionService
Public Function ResendReceiver(pEnvelope As Domain.Entities.Envelope, pReceiver As Receiver) As Boolean
Return EmailService.SendDocumentReceivedEmail(pEnvelope, pReceiver)
End Function
Public Function ManuallySendAccessCode(pEnvelope As Domain.Entities.Envelope, pReceiver As Receiver) As Boolean
Return EmailService.SendDocumentAccessCodeReceivedEmail(pEnvelope, pReceiver)
End Function
Public Function DeleteEnvelope(pEnvelope As Domain.Entities.Envelope, pReason As String) As Boolean
Dim oStatus As EnvelopeStatus

View File

@@ -325,7 +325,11 @@ Namespace My.Resources
Return ResourceManager.GetString("Invitation successfully resend", resourceCulture)
End Get
End Property
Public Shared ReadOnly Property AccessCode_successfully_send() As String
Get
Return ResourceManager.GetString("AccessCode manually send", resourceCulture)
End Get
End Property
'''<summary>
''' Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt.
'''</summary>

View File

@@ -56,6 +56,9 @@ namespace EnvelopeGenerator.Domain.Entities
[Column("TITLE", TypeName = "nvarchar(128)")]
public string Title { get; set; } = string.Empty;
[Column("COMMENT", TypeName = "nvarchar(128)")]
public string Comment { get; set; } = string.Empty;
[Column("CONTRACT_TYPE")]
public int ContractType { get; set; }
@@ -126,7 +129,7 @@ namespace EnvelopeGenerator.Domain.Entities
public bool IsAlreadySent => Status > (int)Constants.EnvelopeStatus.EnvelopeSaved;
[NotMapped]
public string StatusTranslated => My.Resources.Model.ResourceManager.GetString(Status.ToString());
public string StatusTranslated => My.Resources.Model.ResourceManager.GetString(((Constants.EnvelopeStatus)Status).ToString());
[NotMapped]
public bool TFA_Enabled { get; set; } = false;

View File

@@ -38,10 +38,8 @@ namespace EnvelopeGenerator.Domain.Entities
[Column("COMMENT", TypeName = "nvarchar(max)")]
public string Comment { get; set; }
[ForeignKey("UserReference")]
public virtual User Sender { get; set; }
[ForeignKey("UserReference")]
public virtual Receiver Receiver { get; set; }
[NotMapped]

View File

@@ -23,7 +23,7 @@ namespace EnvelopeGenerator.Domain.Entities
[NotMapped]
public Envelope Envelope { get; set; }
[Column("RECEIVER_MAIL")]
[Column("RECEIVER_MAIL", TypeName = "nvarchar(250)")]
[Required]
[StringLength(250)]
[TemplatePlaceholder("NAME_RECEIVER")]
@@ -33,9 +33,9 @@ namespace EnvelopeGenerator.Domain.Entities
[Required]
public DateTime DateValid { get; set; }
[Column("ADDED_WHO")]
[Column("ADDED_WHO", TypeName = "nvarchar(250)")]
[Required]
[StringLength(100)]
[StringLength(250)]
public string AddedWho { get; set; }
public Receiver Receiver { get; set; }

View File

@@ -17,7 +17,8 @@ namespace EnvelopeGenerator.Domain.Entities
public int Id { get; set; }
[Required, EmailAddress]
[Column("EMAIL_ADDRESS", TypeName = "nvarchar(128)")]
[Column("EMAIL_ADDRESS", TypeName = "nvarchar(250)")]
[StringLength(250)]
public string EmailAddress { get; set; }
[Required]

View File

@@ -2,6 +2,8 @@
<PropertyGroup>
<TargetFrameworks>net462;net7.0;net8.0;net9.0</TargetFrameworks>
<AssemblyVersion>1.4.0</AssemblyVersion>
<FileVersion>1.4.0</FileVersion>
</PropertyGroup>
<PropertyGroup Condition="'$(TargetFramework)' == 'net462'">

View File

@@ -60,6 +60,15 @@ namespace My.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Der Zugangs Code wurde erfolgreich an [@Mail] versendet! ähnelt.
/// </summary>
public static string AccessCode_manually_send {
get {
return ResourceManager.GetString("AccessCode manually send", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten: ähnelt.
/// </summary>
@@ -150,6 +159,15 @@ namespace My.Resources {
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Aktuell sind per Drag and Drop nur PDF-Dateien erlaubt. ähnelt.
/// </summary>
public static string Drop_only_pdf {
get {
return ResourceManager.GetString("Drop only pdf", resourceCulture);
}
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Bearbeite Umschlag ähnelt.
/// </summary>
@@ -241,8 +259,8 @@ namespace My.Resources {
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die The mobile phone number [@PhoneNr] could not be validated.
///Pattern: +491234567890 ähnelt.
/// Sucht eine lokalisierte Zeichenfolge, die Die Mobiltelefonnummer [@PhoneNr] konnte nicht validiert werden.
///Muster: +491234567890 ähnelt.
/// </summary>
public static string Error_phone_Validation {
get {
@@ -368,7 +386,7 @@ namespace My.Resources {
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die ähnelt.
/// Sucht eine lokalisierte Zeichenfolge, die Not translated ähnelt.
/// </summary>
public static string ModificationOriginFile_FormFields {
get {
@@ -476,7 +494,7 @@ namespace My.Resources {
}
/// <summary>
/// Sucht eine lokalisierte Zeichenfolge, die Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese Speichern? ähnelt.
/// Sucht eine lokalisierte Zeichenfolge, die Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese speichern? ähnelt.
/// </summary>
public static string There_are_unsaved_changes {
get {

View File

@@ -147,9 +147,6 @@
<data name="Drop only one file" xml:space="preserve">
<value>Currently, only one PDF file is permitted via drag and drop.</value>
</data>
<data name="Drop only pdf" xml:space="preserve">
<value />
</data>
<data name="Edit Envelope" xml:space="preserve">
<value>Edit Envelope</value>
</data>
@@ -181,7 +178,8 @@
<value>The email [ @Mail ] could not be varified!</value>
</data>
<data name="Error phone Validation" xml:space="preserve">
<value />
<value>The mobile phone number [@PhoneNr] could not be validated.
Pattern: +491234567890</value>
</data>
<data name="Error sending the envelope" xml:space="preserve">
<value>Error sending the envelope:</value>
@@ -222,6 +220,9 @@
<data name="Missing Receivers" xml:space="preserve">
<value>Missing Receivers</value>
</data>
<data name="ModificationOriginFile_FormFields" xml:space="preserve">
<value>Not translated</value>
</data>
<data name="New Envelope" xml:space="preserve">
<value>New Envelope</value>
</data>
@@ -255,10 +256,16 @@
<data name="There are already elements for this recipient" xml:space="preserve">
<value>There are already elements for this recipient. Do you still want to delete the recipient?</value>
</data>
<data name="There are unsaved changes." xml:space="preserve">
<data name="There are unsaved changes" xml:space="preserve">
<value>There are unsaved changes. Do you want to save them?</value>
</data>
<data name="You received a document to sign" xml:space="preserve">
<value>You received a document to sign:</value>
</data>
<data name="Drop only pdf" xml:space="preserve">
<value>Currently, only PDF files are allowed via drag and drop.</value>
</data>
<data name="AccessCode manually send" xml:space="preserve">
<value>The access code was successfully sent to [@Mail]!</value>
</data>
</root>

View File

@@ -178,8 +178,8 @@
<value>Die Email-Adresse [ @Mail ] konnte nicht validiert werden!</value>
</data>
<data name="Error phone Validation" xml:space="preserve">
<value>The mobile phone number [@PhoneNr] could not be validated.
Pattern: +491234567890</value>
<value>Die Mobiltelefonnummer [@PhoneNr] konnte nicht validiert werden.
Muster: +491234567890</value>
</data>
<data name="Error sending the envelope" xml:space="preserve">
<value>Fehler beim Senden des Umschlags:</value>
@@ -221,7 +221,7 @@ Pattern: +491234567890</value>
<value>Fehlende Empfänger</value>
</data>
<data name="ModificationOriginFile_FormFields" xml:space="preserve">
<value />
<value>Not translated</value>
</data>
<data name="New Envelope" xml:space="preserve">
<value>Neuer Umschlag</value>
@@ -257,9 +257,15 @@ Pattern: +491234567890</value>
<value>Es gibt für diesen Empfänger bereits Elemente. Wollen Sie den Empfänger trotzdem löschen?</value>
</data>
<data name="There are unsaved changes" xml:space="preserve">
<value>Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese Speichern?</value>
<value>Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese speichern?</value>
</data>
<data name="You received a document to sign" xml:space="preserve">
<value>Sie haben ein Dokument zum signieren erhalten:</value>
</data>
<data name="Drop only pdf" xml:space="preserve">
<value>Aktuell sind per Drag and Drop nur PDF-Dateien erlaubt.</value>
</data>
<data name="AccessCode manually send" xml:space="preserve">
<value>Der Zugangs Code wurde erfolgreich an [@Mail] versendet!</value>
</data>
</root>

View File

@@ -132,6 +132,9 @@
<data name="Completed" xml:space="preserve">
<value>Completed</value>
</data>
<data name="CompletelySigned" xml:space="preserve">
<value>Completely signed</value>
</data>
<data name="Contract" xml:space="preserve">
<value>Contract</value>
</data>

View File

@@ -243,7 +243,7 @@ Partial Public Class frmFieldEditor
If oElement IsNot Nothing Then
oStickyNote.Tag = GetAnnotationTag(SelectedReceiver.Id, oPage, oElement.Id)
Else
MsgBox("No Element for Update found!")
'MsgBox("No Element for Update found!")
Logger.Error("No Element for Update found!")
End If
End If

View File

@@ -87,6 +87,7 @@ Partial Class frmMain
Me.ColHistoryDateCompleted = New DevExpress.XtraGrid.Columns.GridColumn()
Me.ViewCompleted = New DevExpress.XtraGrid.Views.Grid.GridView()
Me.GridColumn3 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn6 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn4 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn5 = New DevExpress.XtraGrid.Columns.GridColumn()
Me.GridColumn7 = New DevExpress.XtraGrid.Columns.GridColumn()
@@ -111,6 +112,8 @@ Partial Class frmMain
Me.RefreshTimer = New System.Windows.Forms.Timer(Me.components)
Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog()
Me.XtraSaveFileDialog1 = New DevExpress.XtraEditors.XtraSaveFileDialog(Me.components)
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
Me.RibbonPageGroupReceiver = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).BeginInit()
Me.SplitContainerControl1.Panel1.SuspendLayout()
@@ -340,9 +343,9 @@ Partial Class frmMain
Me.RibbonControl.ExpandCollapseItem.Id = 0
Me.RibbonControl.ExpandCollapseItem.ImageOptions.ImageIndex = CType(resources.GetObject("RibbonControl.ExpandCollapseItem.ImageOptions.ImageIndex"), Integer)
Me.RibbonControl.ExpandCollapseItem.ImageOptions.LargeImageIndex = CType(resources.GetObject("RibbonControl.ExpandCollapseItem.ImageOptions.LargeImageIndex"), Integer)
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnCreateEnvelope, Me.btnEditEnvelope, Me.btnDeleteEnvelope, Me.BarButtonItem1, Me.txtRefreshLabel, Me.btnShowDocument, Me.btnContactReceiver, Me.txtEnvelopeIdLabel, Me.btnOpenLogDirectory, Me.BarCheckItem1, Me.bsitmInfo, Me.bbtnitmEB, Me.bbtnitmInfoMail, Me.bbtnitm_ResendInvitation, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarStaticItemGhost, Me.bbtnitm2Faktor})
Me.RibbonControl.Items.AddRange(New DevExpress.XtraBars.BarItem() {Me.RibbonControl.ExpandCollapseItem, Me.RibbonControl.SearchEditItem, Me.btnCreateEnvelope, Me.btnEditEnvelope, Me.btnDeleteEnvelope, Me.BarButtonItem1, Me.txtRefreshLabel, Me.btnShowDocument, Me.btnContactReceiver, Me.txtEnvelopeIdLabel, Me.btnOpenLogDirectory, Me.BarCheckItem1, Me.bsitmInfo, Me.bbtnitmEB, Me.bbtnitmInfoMail, Me.bbtnitm_ResendInvitation, Me.BarButtonItem3, Me.BarButtonItem4, Me.BarStaticItemGhost, Me.bbtnitm2Faktor, Me.BarButtonItem2})
resources.ApplyResources(Me.RibbonControl, "RibbonControl")
Me.RibbonControl.MaxItemId = 21
Me.RibbonControl.MaxItemId = 22
Me.RibbonControl.Name = "RibbonControl"
Me.RibbonControl.Pages.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPage() {Me.RibbonPage1, Me.RibbonPage2})
Me.RibbonControl.ShowApplicationButton = DevExpress.Utils.DefaultBoolean.[False]
@@ -509,7 +512,7 @@ Partial Class frmMain
'
'RibbonPage1
'
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroupFunctions})
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroupFunctions, Me.RibbonPageGroupReceiver})
Me.RibbonPage1.Name = "RibbonPage1"
resources.ApplyResources(Me.RibbonPage1, "RibbonPage1")
'
@@ -532,9 +535,6 @@ Partial Class frmMain
'RibbonPageGroupFunctions
'
Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.btnShowDocument)
Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitm_ResendInvitation)
Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.btnContactReceiver)
Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitm2Faktor)
Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitmEB)
Me.RibbonPageGroupFunctions.ItemLinks.Add(Me.bbtnitmInfoMail)
Me.RibbonPageGroupFunctions.Name = "RibbonPageGroupFunctions"
@@ -662,7 +662,7 @@ Partial Class frmMain
'
'ViewCompleted
'
Me.ViewCompleted.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.GridColumn3, Me.GridColumn4, Me.GridColumn5, Me.GridColumn7, Me.GridColumn1})
Me.ViewCompleted.Columns.AddRange(New DevExpress.XtraGrid.Columns.GridColumn() {Me.GridColumn3, Me.GridColumn6, Me.GridColumn4, Me.GridColumn5, Me.GridColumn7, Me.GridColumn1})
Me.ViewCompleted.GridControl = Me.GridCompleted
Me.ViewCompleted.Name = "ViewCompleted"
Me.ViewCompleted.OptionsBehavior.Editable = False
@@ -676,6 +676,13 @@ Partial Class frmMain
Me.GridColumn3.FieldName = "EnvelopeTypeTitle"
Me.GridColumn3.Name = "GridColumn3"
'
'GridColumn6
'
resources.ApplyResources(Me.GridColumn6, "GridColumn6")
Me.GridColumn6.FieldName = "Comment"
Me.GridColumn6.MinWidth = 80
Me.GridColumn6.Name = "GridColumn6"
'
'GridColumn4
'
resources.ApplyResources(Me.GridColumn4, "GridColumn4")
@@ -841,6 +848,22 @@ Partial Class frmMain
'
Me.XtraSaveFileDialog1.FileName = "XtraSaveFileDialog1"
'
'BarButtonItem2
'
resources.ApplyResources(Me.BarButtonItem2, "BarButtonItem2")
Me.BarButtonItem2.Id = 21
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
Me.BarButtonItem2.Name = "BarButtonItem2"
'
'RibbonPageGroupReceiver
'
Me.RibbonPageGroupReceiver.ItemLinks.Add(Me.bbtnitm_ResendInvitation)
Me.RibbonPageGroupReceiver.ItemLinks.Add(Me.BarButtonItem2)
Me.RibbonPageGroupReceiver.ItemLinks.Add(Me.bbtnitm2Faktor)
Me.RibbonPageGroupReceiver.ItemLinks.Add(Me.btnContactReceiver)
Me.RibbonPageGroupReceiver.Name = "RibbonPageGroupReceiver"
resources.ApplyResources(Me.RibbonPageGroupReceiver, "RibbonPageGroupReceiver")
'
'frmMain
'
resources.ApplyResources(Me, "$this")
@@ -976,4 +999,7 @@ Partial Class frmMain
Friend WithEvents Label1 As Label
Friend WithEvents Button1 As Button
Friend WithEvents txtEnvID As TextBox
Friend WithEvents GridColumn6 As DevExpress.XtraGrid.Columns.GridColumn
Friend WithEvents BarButtonItem2 As DevExpress.XtraBars.BarButtonItem
Friend WithEvents RibbonPageGroupReceiver As DevExpress.XtraBars.Ribbon.RibbonPageGroup
End Class

View File

@@ -746,7 +746,7 @@
</value>
</data>
<data name="bbtnitm_ResendInvitation.Caption" xml:space="preserve">
<value>Einladung erneut versenden</value>
<value>Einladung manuell versenden</value>
</data>
<data name="bbtnitm_ResendInvitation.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
@@ -903,6 +903,28 @@
LjQsMjEuNiwxNCwxNiwxNCAgIGMtNi41LDAtMTAsNS4yLTEwLDljMCw0LDIuMSw2LjUsMi4yLDYuN0M4
LjQsMjkuOSw4LjcsMzAsOSwzMEM5LjIsMzAsOS41LDI5LjksOS43LDI5Ljh6IiBjbGFzcz0iQmxhY2si
IC8+DQogIDwvZz4NCjwvc3ZnPgs=
</value>
</data>
<data name="BarButtonItem2.Caption" xml:space="preserve">
<value>AccessCode manuell versenden</value>
</data>
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
<value>
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
dkV4cHJlc3MuVXRpbHMuU3ZnLlN2Z0ltYWdlAQAAAAREYXRhBwICAAAACQMAAAAPAwAAAKQCAAAC77u/
PD94bWwgdmVyc2lvbj0nMS4wJyBlbmNvZGluZz0nVVRGLTgnPz4NCjxzdmcgeD0iMHB4IiB5PSIwcHgi
IHZpZXdCb3g9IjAgMCAzMiAzMiIgdmVyc2lvbj0iMS4xIiB4bWxucz0iaHR0cDovL3d3dy53My5vcmcv
MjAwMC9zdmciIHhtbG5zOnhsaW5rPSJodHRwOi8vd3d3LnczLm9yZy8xOTk5L3hsaW5rIiB4bWw6c3Bh
Y2U9InByZXNlcnZlIiBpZD0iTGF5ZXJfMSIgc3R5bGU9ImVuYWJsZS1iYWNrZ3JvdW5kOm5ldyAwIDAg
MzIgMzIiPg0KICA8c3R5bGUgdHlwZT0idGV4dC9jc3MiPgoJLkJsYWNre2ZpbGw6IzcyNzI3Mjt9Cgku
WWVsbG93e2ZpbGw6I0ZGQjExNTt9CgkuQmx1ZXtmaWxsOiMxMTc3RDc7fQoJLlJlZHtmaWxsOiNEMTFD
MUM7fQoJLldoaXRle2ZpbGw6I0ZGRkZGRjt9CgkuR3JlZW57ZmlsbDojMDM5QzIzO30KCS5zdDB7Zmls
bDojNzI3MjcyO30KCS5zdDF7b3BhY2l0eTowLjU7fQoJLnN0MntvcGFjaXR5OjAuNzU7fQo8L3N0eWxl
Pg0KICA8ZyBpZD0iTWFpbCI+DQogICAgPHBhdGggZD0iTTE2LDE4LjNsMTQtOFYyNWMwLDAuNS0wLjUs
MS0xLDFIM2MtMC41LDAtMS0wLjUtMS0xVjEwLjNMMTYsMTguM3ogTTI5LDZIM0MyLjUsNiwyLDYuNSwy
LDd2MWwxNCw4bDE0LThWNyAgIEMzMCw2LjUsMjkuNSw2LDI5LDZ6IiBjbGFzcz0iQmxhY2siIC8+DQog
IDwvZz4NCjwvc3ZnPgs=
</value>
</data>
<data name="RibbonControl.Location" type="System.Drawing.Point, System.Drawing">
@@ -917,6 +939,9 @@
<data name="RibbonPageGroupFunctions.Text" xml:space="preserve">
<value>Funktionen</value>
</data>
<data name="RibbonPageGroupReceiver.Text" xml:space="preserve">
<value>Empfänger</value>
</data>
<data name="RibbonPage1.Text" xml:space="preserve">
<value>Start</value>
</data>
@@ -1098,11 +1123,23 @@
<value>True</value>
</data>
<data name="GridColumn3.VisibleIndex" type="System.Int32, mscorlib">
<value>2</value>
<value>3</value>
</data>
<data name="GridColumn3.Width" type="System.Int32, mscorlib">
<value>100</value>
</data>
<data name="GridColumn6.Caption" xml:space="preserve">
<value>Kommentar</value>
</data>
<data name="GridColumn6.Visible" type="System.Boolean, mscorlib">
<value>True</value>
</data>
<data name="GridColumn6.VisibleIndex" type="System.Int32, mscorlib">
<value>1</value>
</data>
<data name="GridColumn6.Width" type="System.Int32, mscorlib">
<value>80</value>
</data>
<data name="GridColumn4.Caption" xml:space="preserve">
<value>Status</value>
</data>
@@ -1110,7 +1147,7 @@
<value>True</value>
</data>
<data name="GridColumn4.VisibleIndex" type="System.Int32, mscorlib">
<value>1</value>
<value>2</value>
</data>
<data name="GridColumn4.Width" type="System.Int32, mscorlib">
<value>163</value>
@@ -1134,7 +1171,7 @@
<value>True</value>
</data>
<data name="GridColumn7.VisibleIndex" type="System.Int32, mscorlib">
<value>3</value>
<value>4</value>
</data>
<data name="GridColumn7.Width" type="System.Int32, mscorlib">
<value>120</value>
@@ -1146,7 +1183,7 @@
<value>True</value>
</data>
<data name="GridColumn1.VisibleIndex" type="System.Int32, mscorlib">
<value>4</value>
<value>5</value>
</data>
<data name="GridColumn1.Width" type="System.Int32, mscorlib">
<value>120</value>
@@ -2084,6 +2121,12 @@
<data name="&gt;&gt;GridColumn3.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;GridColumn6.Name" xml:space="preserve">
<value>GridColumn6</value>
</data>
<data name="&gt;&gt;GridColumn6.Type" xml:space="preserve">
<value>DevExpress.XtraGrid.Columns.GridColumn, DevExpress.XtraGrid.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;GridColumn4.Name" xml:space="preserve">
<value>GridColumn4</value>
</data>
@@ -2132,6 +2175,18 @@
<data name="&gt;&gt;XtraSaveFileDialog1.Type" xml:space="preserve">
<value>DevExpress.XtraEditors.XtraSaveFileDialog, DevExpress.XtraDialogs.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;BarButtonItem2.Name" xml:space="preserve">
<value>BarButtonItem2</value>
</data>
<data name="&gt;&gt;BarButtonItem2.Type" xml:space="preserve">
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;RibbonPageGroupReceiver.Name" xml:space="preserve">
<value>RibbonPageGroupReceiver</value>
</data>
<data name="&gt;&gt;RibbonPageGroupReceiver.Type" xml:space="preserve">
<value>DevExpress.XtraBars.Ribbon.RibbonPageGroup, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
</data>
<data name="&gt;&gt;$this.Name" xml:space="preserve">
<value>frmMain</value>
</data>

View File

@@ -1,17 +1,19 @@
Imports System.IO
Imports System.ComponentModel
Imports System.IdentityModel.Metadata
Imports System.IO
Imports System.Text
Imports DevExpress.LookAndFeel
Imports DevExpress.Utils.Extensions
Imports DevExpress.XtraCharts
Imports DevExpress.XtraGrid
Imports DevExpress.XtraGrid.Views.Grid
Imports DevExpress.XtraPrinting
Imports DevExpress.XtraSplashScreen
Imports DigitalData.GUIs.Common
Imports DigitalData.Modules.Base
Imports DigitalData.Modules.Logging
Imports EnvelopeGenerator.CommonServices
Imports EnvelopeGenerator.CommonServices.My
Imports System.ComponentModel
Imports DevExpress.XtraPrinting
Imports EnvelopeGenerator.Domain.Entities
Public Class frmMain
@@ -25,6 +27,7 @@ Public Class frmMain
Private Controller As EnvelopeListController
Private myFileData As Byte()
Private myResFileData As Byte()
Private FormLoad As Boolean = True
Public Sub New(pState As State)
' Dieser Aufruf ist für den Designer erforderlich.
@@ -60,6 +63,10 @@ Public Class frmMain
XtraTabControlMain.TabPages(3).PageVisible = False
End If
LoadEnvelopeData()
Dim oXMLPath = Get_DocGrid_Layout_Filename(ViewEnvelopes.Name)
If File.Exists(oXMLPath) Then
ViewEnvelopes.RestoreLayoutFromXml(oXMLPath)
End If
End Sub
Private Sub LoadEnvelopeData()
@@ -216,6 +223,7 @@ Public Class frmMain
RibbonPageEnvelopeActions.Enabled = True
Select Case XtraTabControlMain.SelectedTabPageIndex
Case 1
RibbonPageGroupReceiver.Visible = False
btnEditEnvelope.Enabled = False
btnDeleteEnvelope.Enabled = False
btnContactReceiver.Enabled = False
@@ -225,7 +233,12 @@ Public Class frmMain
bbtnitmEB.Enabled = True
bbtnitm2Faktor.Enabled = False
LoadEnvelopeData()
Dim oXMLPath = Get_DocGrid_Layout_Filename(ViewCompleted.Name)
If File.Exists(oXMLPath) Then
ViewCompleted.RestoreLayoutFromXml(oXMLPath)
End If
Case 0
RibbonPageGroupReceiver.Visible = True
btnEditEnvelope.Enabled = True
btnDeleteEnvelope.Enabled = True
btnContactReceiver.Enabled = True
@@ -557,6 +570,7 @@ Public Class frmMain
MYUSER = oUser
End If
End If
FormLoad = False
End Sub
Private Sub bbtnitmInfoMail_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmInfoMail.ItemClick
@@ -795,8 +809,11 @@ Public Class frmMain
If oDT.Rows.Count = 1 Then
Dim oTFA_REG_DL = oDT.Rows(0).Item("TFA_REG_DEADLINE")
Dim oTOTP = oDT.Rows(0).Item("TOTP_SECRET_KEY")
Dim oForm As New frm2Factor_Properties(oReceiver.EmailAddress, oTOTP, oTFA_REG_DL, DB_DD_ECM)
oForm.ShowDialog()
If Not IsDBNull(oTOTP) And Not IsDBNull(oTFA_REG_DL) Then
Dim oForm As New frm2Factor_Properties(oReceiver.EmailAddress, oTOTP.ToString, oTFA_REG_DL, DB_DD_ECM)
oForm.ShowDialog()
End If
End If
End If
@@ -838,4 +855,71 @@ Public Class frmMain
.DbConfig = Nothing
}
End Function
Private Sub BarButtonItem2_ItemClick_1(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
Try
Dim oView As GridView = GridEnvelopes.FocusedView
Dim selReceiver As Receiver
If oView.Name = ViewReceivers.Name Then
selReceiver = oView.GetRow(oView.FocusedRowHandle)
Else
MsgBox(Resources.Envelope.Please_select_a_recipient_from_the_Recipients_tab, MsgBoxStyle.Information, Text)
End If
If ViewEnvelopes.FocusedRowHandle < 0 Or IsNothing(selReceiver) Then
Exit Sub
End If
Dim oEnvelope As Envelope = ViewEnvelopes.GetRow(ViewEnvelopes.FocusedRowHandle)
If oEnvelope.UseAccessCode = True Then
Dim oController = New EnvelopeEditorController(State, oEnvelope)
Dim Documents As New BindingList(Of EnvelopeDocument)
Dim Receivers As New BindingList(Of Receiver)
Receivers = New BindingList(Of Receiver)(oController.Envelope.Receivers)
For Each oReceiver As Receiver In Receivers
If oReceiver.EmailAddress = selReceiver.EmailAddress Then
If oController.ActionService.ManuallySendAccessCode(oEnvelope, oReceiver) = True Then
Dim oMsg = Resources.Envelope.AccessCode_successfully_send.Replace("@Mail", oReceiver.EmailAddress)
MsgBox(oMsg, MsgBoxStyle.Information, Text)
End If
End If
Next
Else
MsgBox("Envelope is defined without AccessCode so far!", MsgBoxStyle.Information)
End If
Catch ex As Exception
Logger.Error(ex)
Finally
End Try
SplashScreenManager.CloseOverlayForm(oHandle)
End Sub
Private Sub ViewCompleted_Layout(sender As Object, e As EventArgs) Handles ViewCompleted.Layout
If FormLoad = True Then
Exit Sub
End If
Dim oXMLPath = Get_DocGrid_Layout_Filename(ViewCompleted.Name)
ViewCompleted.SaveLayoutToXml(oXMLPath)
bsitmInfo.Caption = "Grid Layout Envelopes Completed Saved"
End Sub
Private Sub ViewEnvelopes_Layout(sender As Object, e As EventArgs) Handles ViewEnvelopes.Layout
If FormLoad = True Then
Exit Sub
End If
Dim oXMLPath = Get_DocGrid_Layout_Filename(ViewEnvelopes.Name)
ViewEnvelopes.SaveLayoutToXml(oXMLPath)
bsitmInfo.Caption = "Grid Layout Envelopes Saved"
End Sub
Private Function Get_DocGrid_Layout_Filename(pGridViewName As String)
Dim EntityRegex As New RegularExpressions.Regex("\s+\(\d+\)")
Dim Filename As String = String.Format("{0}_UserLayout.xml", pGridViewName)
Dim oGridlayoutFullFilename = System.IO.Path.Combine(Application.UserAppDataPath(), Filename)
Return oGridlayoutFullFilename
End Function
End Class

View File

@@ -22,7 +22,7 @@
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
<PackageReference Include="DigitalData.Core.API" Version="2.2.1" />
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.4" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
<PackageReference Include="NLog" Version="5.2.5" />
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.0" />
<PackageReference Include="Scalar.AspNetCore" Version="2.2.1" />

View File

@@ -40,7 +40,7 @@ try
builder.Services.AddControllers();
//CORS Policy
// CORS Policy
var allowedOrigins = config.GetSection("AllowedOrigins").Get<string[]>() ??
throw new InvalidOperationException("AllowedOrigins section is missing in the configuration.");
builder.Services.AddCors(options =>
@@ -104,8 +104,12 @@ try
}
});
builder.Services.AddOpenApi();
// DbContext
var connStr = config.GetConnectionString("Default") ?? throw new InvalidOperationException("There is no default connection string in appsettings.json.");
//AddEF Core dbcontext
var useDbMigration = Environment.GetEnvironmentVariable("MIGRATION_TEST_MODE") == true.ToString() || config.GetValue<bool>("UseDbMigration");
var cnnStrName = useDbMigration ? "DbMigrationTest" : "Default";
var connStr = config.GetConnectionString(cnnStrName)
?? throw new InvalidOperationException($"Connection string '{cnnStrName}' is missing in the application configuration.");
builder.Services.Configure<ConnectionString>(cs => cs.Value = connStr);

View File

@@ -1,5 +1,6 @@
{
"UseSwagger": true,
"UseDbMigration": true,
"DiPMode": true,
"Logging": {
"LogLevel": {
@@ -10,7 +11,8 @@
"AllowedHosts": "*",
"AllowedOrigins": [ "http://localhost:4200" ],
"ConnectionStrings": {
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
"DbMigrationTest": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
},
"DirectorySearchOptions": {
"ServerName": "DD-VMP01-DC01",

View File

@@ -59,9 +59,11 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
private readonly DbTriggerParams _triggers;
private readonly ILogger<EGDbContext> _logger;
private readonly ILogger<EGDbContext>? _logger;
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext> logger) : base(options)
public bool IsMigration { get; set; } = false;
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext>? logger = null) : base(options)
{
_triggers = triggerParamOptions.Value;
_logger = logger;
@@ -126,17 +128,20 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.WithMany(ed => ed.Elements)
.HasForeignKey(dre => dre.DocumentId);
modelBuilder.Entity<EnvelopeHistory>()
.HasOne(eh => eh.Receiver)
.WithMany()
.HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.EmailAddress);
if (!IsMigration)
{
modelBuilder.Entity<EnvelopeHistory>()
.HasOne(eh => eh.Receiver)
.WithMany()
.HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.EmailAddress);
modelBuilder.Entity<EnvelopeHistory>()
.HasOne(eh => eh.Sender)
.WithMany()
.HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.Email);
modelBuilder.Entity<EnvelopeHistory>()
.HasOne(eh => eh.Sender)
.WithMany()
.HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.Email);
}
modelBuilder.Entity<EnvelopeReceiverReadOnly>()
.HasOne(erro => erro.Receiver)
@@ -151,7 +156,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.ForEach(tName =>
{
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(tName));
_logger.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
_logger?.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
});
// TODO: call add trigger methods with attributes and reflection

View File

@@ -0,0 +1,46 @@
using EnvelopeGenerator.Application.Configurations;
using Microsoft.EntityFrameworkCore;
using Microsoft.EntityFrameworkCore.Design;
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.Options;
namespace EnvelopeGenerator.Infrastructure
{
public class EGDbContextFactory : IDesignTimeDbContextFactory<EGDbContext>
{
public EGDbContext CreateDbContext(string[] args)
{
var config = new ConfigurationBuilder()
.SetBasePath(Directory.GetCurrentDirectory()) // Önemli!
.AddJsonFile("appsettings.migration.json")
.Build();
// create DbContextOptions
var optionsBuilder = new DbContextOptionsBuilder<EGDbContext>();
optionsBuilder.UseSqlServer(config.GetConnectionString("Default"));
// create DbTriggerParams
var triggerLists = config.GetSection("DbTriggerParams").Get<Dictionary<string, List<string>>>();
var dbTriggerParams = new DbTriggerParams();
if(triggerLists is not null)
foreach (var triggerList in triggerLists)
{
if(triggerList.Value.Count == 0)
continue; // Skip empty trigger lists
var tableName = triggerList.Key;
dbTriggerParams[tableName] = new List<string>();
foreach (var trigger in triggerList.Value)
{
dbTriggerParams[tableName].Add(trigger);
}
}
var dbContext = new EGDbContext(optionsBuilder.Options, Options.Create(dbTriggerParams));
dbContext.IsMigration = true;
return dbContext;
}
}
}

View File

@@ -23,16 +23,37 @@
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.20" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.20">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.17">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.17" />
</ItemGroup>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.5" />
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.6">
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
</ItemGroup>
</Project>
<ItemGroup>
<None Update="appsettings.migration.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup>
</Project>

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,811 @@
using System;
using Microsoft.EntityFrameworkCore.Migrations;
#nullable disable
namespace EnvelopeGenerator.Infrastructure.Migrations
{
/// <inheritdoc />
public partial class InitialCreate : Migration
{
/// <inheritdoc />
protected override void Up(MigrationBuilder migrationBuilder)
{
migrationBuilder.EnsureSchema(
name: "dbo");
migrationBuilder.CreateTable(
name: "TBDD_CLIENT_USER",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
USER_ID = table.Column<int>(type: "int", nullable: false),
CLIENT_ID = table.Column<int>(type: "int", nullable: false),
COMMENT = table.Column<string>(type: "nvarchar(max)", nullable: true),
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_CLIENT_USER", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBDD_GROUPS",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
AD_SYNC = table.Column<bool>(type: "bit", nullable: false),
Internal = table.Column<bool>(type: "bit", nullable: false),
Active = table.Column<bool>(type: "bit", nullable: false),
Comment = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
ECM_FK_ID = table.Column<int>(type: "int", nullable: false),
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_GROUPS", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBDD_MODULES",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
SHORT_NAME = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_MODULES", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBDD_USER",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
PRENAME = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
NAME = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
USERNAME = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
SHORTNAME = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true),
EMAIL = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
LANGUAGE = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: false),
COMMENT = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
DELETED = table.Column<bool>(type: "bit", nullable: false),
DATE_FORMAT = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
ACTIVE = table.Column<bool>(type: "bit", nullable: false),
GENERAL_VIEWER = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: false),
WAN_ENVIRONMENT = table.Column<bool>(type: "bit", nullable: false),
USERID_FK_INT_ECM = table.Column<int>(type: "int", nullable: false),
DELETED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: false),
DELETED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_USER", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBEMLP_EMAIL_OUT",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
REMINDER_TYPE_ID = table.Column<int>(type: "int", nullable: false),
SENDING_PROFILE = table.Column<int>(type: "int", nullable: false),
REFERENCE_ID = table.Column<int>(type: "int", nullable: false),
REFERENCE_STRING = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true),
ENTITY_ID = table.Column<int>(type: "int", nullable: true),
WF_ID = table.Column<int>(type: "int", nullable: false),
WF_REFERENCE = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true),
EMAIL_ADRESS = table.Column<string>(type: "varchar(1000)", maxLength: 1000, nullable: false),
EMAIL_SUBJ = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: false),
EMAIL_BODY = table.Column<string>(type: "varchar(max)", nullable: false),
EMAIL_ATTMT1 = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true),
EMAIL_SENT = table.Column<DateTime>(type: "datetime2", nullable: true),
COMMENT = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true),
ADDED_WHO = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false),
CHANGED_WHO = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: true),
ERROR_TIMESTAMP = table.Column<DateTime>(type: "datetime2", nullable: true),
ERROR_MSG = table.Column<string>(type: "varchar(900)", maxLength: 900, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBEMLP_EMAIL_OUT", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBSIG_CONFIG",
schema: "dbo",
columns: table => new
{
SENDING_PROFILE = table.Column<int>(type: "int", nullable: false),
SIGNATURE_HOST = table.Column<string>(type: "nvarchar(128)", nullable: false),
EXTERNAL_PROGRAM_NAME = table.Column<string>(type: "nvarchar(30)", nullable: true),
EXPORT_PATH = table.Column<string>(type: "nvarchar(256)", nullable: true)
},
constraints: table =>
{
});
migrationBuilder.CreateTable(
name: "TBSIG_EMAIL_TEMPLATE",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
NAME = table.Column<string>(type: "nvarchar(64)", nullable: true),
BODY = table.Column<string>(type: "nvarchar(max)", nullable: true),
SUBJECT = table.Column<string>(type: "nvarchar(512)", nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_EMAIL_TEMPLATE", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE_CERTIFICATE",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
ENVELOPE_UUID = table.Column<string>(type: "nvarchar(36)", nullable: false),
ENVELOPE_SUBJECT = table.Column<string>(type: "nvarchar(512)", nullable: false),
CREATOR_ID = table.Column<int>(type: "int", nullable: false),
CREATOR_NAME = table.Column<string>(type: "nvarchar(128)", nullable: false),
CREATOR_EMAIL = table.Column<string>(type: "nvarchar(128)", nullable: false),
ENVELOPE_STATUS = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE_CERTIFICATE", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE_TYPE",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
TITLE = table.Column<string>(type: "nvarchar(128)", nullable: false),
LANGUAGE = table.Column<string>(type: "nvarchar(5)", nullable: true),
EXPIRES_DAYS = table.Column<int>(type: "int", nullable: false),
CERTIFICATION_TYPE = table.Column<int>(type: "int", nullable: false),
USE_ACCESS_CODE = table.Column<bool>(type: "bit", nullable: false),
FINAL_EMAIL_TO_CREATOR = table.Column<int>(type: "int", nullable: false),
FINAL_EMAIL_TO_RECEIVERS = table.Column<int>(type: "int", nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
EXPIRES_WARNING_DAYS = table.Column<int>(type: "int", nullable: false),
SEND_REMINDER_EMAILS = table.Column<bool>(type: "bit", nullable: false),
FIRST_REMINDER_DAYS = table.Column<int>(type: "int", nullable: false),
REMINDER_INTERVAL_DAYS = table.Column<int>(type: "int", nullable: false),
CONTRACT_TYPE = table.Column<int>(type: "int", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE_TYPE", x => x.GUID);
});
migrationBuilder.CreateTable(
name: "TBDD_GROUPS_USER",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
USER_ID = table.Column<int>(type: "int", nullable: false),
GROUP_ID = table.Column<int>(type: "int", nullable: false),
Comment = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_GROUPS_USER", x => x.GUID);
table.ForeignKey(
name: "FK_TBDD_GROUPS_USER_TBDD_GROUPS_GROUP_ID",
column: x => x.GROUP_ID,
principalSchema: "dbo",
principalTable: "TBDD_GROUPS",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBDD_GROUPS_USER_TBDD_USER_USER_ID",
column: x => x.USER_ID,
principalSchema: "dbo",
principalTable: "TBDD_USER",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBDD_USER_MODULES",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
USER_ID = table.Column<int>(type: "int", nullable: false),
MODULE_ID = table.Column<int>(type: "int", nullable: false),
COMMENT = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_USER_MODULES", x => x.GUID);
table.ForeignKey(
name: "FK_TBDD_USER_MODULES_TBDD_MODULES_MODULE_ID",
column: x => x.MODULE_ID,
principalSchema: "dbo",
principalTable: "TBDD_MODULES",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBDD_USER_MODULES_TBDD_USER_USER_ID",
column: x => x.USER_ID,
principalSchema: "dbo",
principalTable: "TBDD_USER",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBDD_USER_REPRESENTATION",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
USER_ID = table.Column<int>(type: "int", nullable: true),
REPR_GROUP = table.Column<int>(type: "int", nullable: true),
GROUP_ID = table.Column<int>(type: "int", nullable: true),
REPR_USER = table.Column<int>(type: "int", nullable: true),
VALID_FROM = table.Column<DateTime>(type: "datetime2", nullable: true),
VALID_TO = table.Column<DateTime>(type: "datetime2", nullable: true),
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBDD_USER_REPRESENTATION", x => x.GUID);
table.ForeignKey(
name: "FK_TBDD_USER_REPRESENTATION_TBDD_GROUPS_GROUP_ID",
column: x => x.GROUP_ID,
principalSchema: "dbo",
principalTable: "TBDD_GROUPS",
principalColumn: "GUID");
table.ForeignKey(
name: "FK_TBDD_USER_REPRESENTATION_TBDD_GROUPS_REPR_GROUP",
column: x => x.REPR_GROUP,
principalSchema: "dbo",
principalTable: "TBDD_GROUPS",
principalColumn: "GUID");
table.ForeignKey(
name: "FK_TBDD_USER_REPRESENTATION_TBDD_USER_REPR_USER",
column: x => x.REPR_USER,
principalSchema: "dbo",
principalTable: "TBDD_USER",
principalColumn: "GUID");
table.ForeignKey(
name: "FK_TBDD_USER_REPRESENTATION_TBDD_USER_USER_ID",
column: x => x.USER_ID,
principalSchema: "dbo",
principalTable: "TBDD_USER",
principalColumn: "GUID");
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
USER_ID = table.Column<int>(type: "int", nullable: false),
STATUS = table.Column<int>(type: "int", nullable: false),
ENVELOPE_UUID = table.Column<string>(type: "nvarchar(36)", nullable: false),
MESSAGE = table.Column<string>(type: "nvarchar(max)", nullable: true),
EXPIRES_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
EXPIRES_WARNING_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
TITLE = table.Column<string>(type: "nvarchar(128)", nullable: true),
CONTRACT_TYPE = table.Column<int>(type: "int", nullable: false),
LANGUAGE = table.Column<string>(type: "nvarchar(5)", nullable: true),
SEND_REMINDER_EMAILS = table.Column<bool>(type: "bit", nullable: false),
FIRST_REMINDER_DAYS = table.Column<int>(type: "int", nullable: false),
REMINDER_INTERVAL_DAYS = table.Column<int>(type: "int", nullable: false),
ENVELOPE_TYPE = table.Column<int>(type: "int", nullable: false),
CERTIFICATION_TYPE = table.Column<int>(type: "int", nullable: false),
USE_ACCESS_CODE = table.Column<bool>(type: "bit", nullable: false),
FINAL_EMAIL_TO_CREATOR = table.Column<int>(type: "int", nullable: false),
FINAL_EMAIL_TO_RECEIVERS = table.Column<int>(type: "int", nullable: false),
EXPIRES_WHEN_DAYS = table.Column<int>(type: "int", nullable: false),
EXPIRES_WARNING_WHEN_DAYS = table.Column<int>(type: "int", nullable: false),
TFA_ENABLED = table.Column<bool>(type: "bit", nullable: false),
DOC_RESULT = table.Column<byte[]>(type: "varbinary(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE", x => x.GUID);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_TBDD_USER_USER_ID",
column: x => x.USER_ID,
principalSchema: "dbo",
principalTable: "TBDD_USER",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_TBSIG_ENVELOPE_TYPE_ENVELOPE_TYPE",
column: x => x.ENVELOPE_TYPE,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE_TYPE",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE_DOCUMENT",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
BYTE_DATA = table.Column<byte[]>(type: "varbinary(max)", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE_DOCUMENT", x => x.GUID);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_DOCUMENT_TBSIG_ENVELOPE_ENVELOPE_ID",
column: x => x.ENVELOPE_ID,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBSIG_RECEIVER",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
EMAIL_ADDRESS = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
SIGNATURE = table.Column<string>(type: "nvarchar(64)", nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
TOTP_SECRET_KEY = table.Column<string>(type: "nvarchar(MAX)", nullable: true),
TFA_REG_DEADLINE = table.Column<DateTime>(type: "datetime", nullable: false),
EnvelopeId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_RECEIVER", x => x.GUID);
table.UniqueConstraint("AK_TBSIG_RECEIVER_EMAIL_ADDRESS", x => x.EMAIL_ADDRESS);
table.ForeignKey(
name: "FK_TBSIG_RECEIVER_TBSIG_ENVELOPE_EnvelopeId",
column: x => x.EnvelopeId,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE",
principalColumn: "GUID");
});
migrationBuilder.CreateTable(
name: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
DOCUMENT_ID = table.Column<int>(type: "int", nullable: false),
RECEIVER_ID = table.Column<int>(type: "int", nullable: false),
ELEMENT_TYPE = table.Column<int>(type: "int", nullable: false),
POSITION_X = table.Column<double>(type: "float", nullable: false),
POSITION_Y = table.Column<double>(type: "float", nullable: false),
WIDTH = table.Column<double>(type: "float", nullable: false),
HEIGHT = table.Column<double>(type: "float", nullable: false),
PAGE = table.Column<int>(type: "int", nullable: false),
REQUIRED = table.Column<bool>(type: "bit", nullable: false),
TOOLTIP = table.Column<string>(type: "nvarchar(max)", nullable: true),
READ_ONLY = table.Column<bool>(type: "bit", nullable: false),
ANNOTATION_INDEX = table.Column<int>(type: "int", nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_DOCUMENT_RECEIVER_ELEMENT", x => x.GUID);
table.ForeignKey(
name: "FK_TBSIG_DOCUMENT_RECEIVER_ELEMENT_TBSIG_ENVELOPE_DOCUMENT_DOCUMENT_ID",
column: x => x.DOCUMENT_ID,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE_DOCUMENT",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBSIG_DOCUMENT_RECEIVER_ELEMENT_TBSIG_RECEIVER_RECEIVER_ID",
column: x => x.RECEIVER_ID,
principalSchema: "dbo",
principalTable: "TBSIG_RECEIVER",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBSIG_DOCUMENT_STATUS",
schema: "dbo",
columns: table => new
{
GUID = table.Column<int>(type: "int", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
RECEIVER_ID = table.Column<int>(type: "int", nullable: false),
STATUS = table.Column<int>(type: "int", nullable: false),
STATUS_CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
VALUE = table.Column<string>(type: "nvarchar(max)", nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_DOCUMENT_STATUS", x => x.GUID);
table.ForeignKey(
name: "FK_TBSIG_DOCUMENT_STATUS_TBSIG_ENVELOPE_ENVELOPE_ID",
column: x => x.ENVELOPE_ID,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBSIG_DOCUMENT_STATUS_TBSIG_RECEIVER_RECEIVER_ID",
column: x => x.RECEIVER_ID,
principalSchema: "dbo",
principalTable: "TBSIG_RECEIVER",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE_HISTORY",
schema: "dbo",
columns: table => new
{
GUID = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
USER_REFERENCE = table.Column<string>(type: "nvarchar(128)", nullable: false),
STATUS = table.Column<int>(type: "int", nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
ACTION_DATE = table.Column<DateTime>(type: "datetime", nullable: false),
COMMENT = table.Column<string>(type: "nvarchar(max)", nullable: true),
SenderId = table.Column<int>(type: "int", nullable: true),
ReceiverId = table.Column<int>(type: "int", nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE_HISTORY", x => x.GUID);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_HISTORY_TBDD_USER_SenderId",
column: x => x.SenderId,
principalSchema: "dbo",
principalTable: "TBDD_USER",
principalColumn: "GUID");
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_HISTORY_TBSIG_ENVELOPE_ENVELOPE_ID",
column: x => x.ENVELOPE_ID,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_HISTORY_TBSIG_RECEIVER_ReceiverId",
column: x => x.ReceiverId,
principalSchema: "dbo",
principalTable: "TBSIG_RECEIVER",
principalColumn: "GUID");
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE_RECEIVER",
schema: "dbo",
columns: table => new
{
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
RECEIVER_ID = table.Column<int>(type: "int", nullable: false),
SEQUENCE = table.Column<int>(type: "int", nullable: false),
NAME = table.Column<string>(type: "nvarchar(128)", nullable: true),
JOB_TITLE = table.Column<string>(type: "nvarchar(128)", nullable: true),
COMPANY_NAME = table.Column<string>(type: "nvarchar(128)", nullable: true),
PRIVATE_MESSAGE = table.Column<string>(type: "nvarchar(max)", nullable: true),
ACCESS_CODE = table.Column<string>(type: "nvarchar(64)", nullable: true),
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
PHONE_NUMBER = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE_RECEIVER", x => new { x.ENVELOPE_ID, x.RECEIVER_ID });
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_RECEIVER_TBSIG_ENVELOPE_ENVELOPE_ID",
column: x => x.ENVELOPE_ID,
principalSchema: "dbo",
principalTable: "TBSIG_ENVELOPE",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_RECEIVER_TBSIG_RECEIVER_RECEIVER_ID",
column: x => x.RECEIVER_ID,
principalSchema: "dbo",
principalTable: "TBSIG_RECEIVER",
principalColumn: "GUID",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateTable(
name: "TBSIG_ENVELOPE_RECEIVER_READ_ONLY",
columns: table => new
{
GUID = table.Column<long>(type: "bigint", nullable: false)
.Annotation("SqlServer:Identity", "1, 1"),
ENVELOPE_ID = table.Column<long>(type: "bigint", nullable: false),
RECEIVER_MAIL = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
DATE_VALID = table.Column<DateTime>(type: "datetime2", nullable: false),
ADDED_WHO = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
ADDED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: false),
CHANGED_WHO = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
CHANGED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: false)
},
constraints: table =>
{
table.PrimaryKey("PK_TBSIG_ENVELOPE_RECEIVER_READ_ONLY", x => x.GUID);
table.ForeignKey(
name: "FK_TBSIG_ENVELOPE_RECEIVER_READ_ONLY_TBSIG_RECEIVER_ADDED_WHO",
column: x => x.ADDED_WHO,
principalSchema: "dbo",
principalTable: "TBSIG_RECEIVER",
principalColumn: "EMAIL_ADDRESS",
onDelete: ReferentialAction.Cascade);
});
migrationBuilder.CreateIndex(
name: "IX_TBDD_GROUPS_USER_GROUP_ID",
schema: "dbo",
table: "TBDD_GROUPS_USER",
column: "GROUP_ID");
migrationBuilder.CreateIndex(
name: "IX_TBDD_GROUPS_USER_USER_ID",
schema: "dbo",
table: "TBDD_GROUPS_USER",
column: "USER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBDD_USER_MODULES_MODULE_ID",
schema: "dbo",
table: "TBDD_USER_MODULES",
column: "MODULE_ID");
migrationBuilder.CreateIndex(
name: "IX_TBDD_USER_MODULES_USER_ID",
schema: "dbo",
table: "TBDD_USER_MODULES",
column: "USER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBDD_USER_REPRESENTATION_GROUP_ID",
schema: "dbo",
table: "TBDD_USER_REPRESENTATION",
column: "GROUP_ID");
migrationBuilder.CreateIndex(
name: "IX_TBDD_USER_REPRESENTATION_REPR_GROUP",
schema: "dbo",
table: "TBDD_USER_REPRESENTATION",
column: "REPR_GROUP");
migrationBuilder.CreateIndex(
name: "IX_TBDD_USER_REPRESENTATION_REPR_USER",
schema: "dbo",
table: "TBDD_USER_REPRESENTATION",
column: "REPR_USER");
migrationBuilder.CreateIndex(
name: "IX_TBDD_USER_REPRESENTATION_USER_ID",
schema: "dbo",
table: "TBDD_USER_REPRESENTATION",
column: "USER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_DOCUMENT_RECEIVER_ELEMENT_DOCUMENT_ID",
schema: "dbo",
table: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
column: "DOCUMENT_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_DOCUMENT_RECEIVER_ELEMENT_RECEIVER_ID",
schema: "dbo",
table: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
column: "RECEIVER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_DOCUMENT_STATUS_ENVELOPE_ID",
schema: "dbo",
table: "TBSIG_DOCUMENT_STATUS",
column: "ENVELOPE_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_DOCUMENT_STATUS_RECEIVER_ID",
schema: "dbo",
table: "TBSIG_DOCUMENT_STATUS",
column: "RECEIVER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_ENVELOPE_TYPE",
schema: "dbo",
table: "TBSIG_ENVELOPE",
column: "ENVELOPE_TYPE");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_USER_ID",
schema: "dbo",
table: "TBSIG_ENVELOPE",
column: "USER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_DOCUMENT_ENVELOPE_ID",
schema: "dbo",
table: "TBSIG_ENVELOPE_DOCUMENT",
column: "ENVELOPE_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_HISTORY_ENVELOPE_ID",
schema: "dbo",
table: "TBSIG_ENVELOPE_HISTORY",
column: "ENVELOPE_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_HISTORY_ReceiverId",
schema: "dbo",
table: "TBSIG_ENVELOPE_HISTORY",
column: "ReceiverId");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_HISTORY_SenderId",
schema: "dbo",
table: "TBSIG_ENVELOPE_HISTORY",
column: "SenderId");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_RECEIVER_RECEIVER_ID",
schema: "dbo",
table: "TBSIG_ENVELOPE_RECEIVER",
column: "RECEIVER_ID");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_ENVELOPE_RECEIVER_READ_ONLY_ADDED_WHO",
table: "TBSIG_ENVELOPE_RECEIVER_READ_ONLY",
column: "ADDED_WHO");
migrationBuilder.CreateIndex(
name: "IX_TBSIG_RECEIVER_EnvelopeId",
schema: "dbo",
table: "TBSIG_RECEIVER",
column: "EnvelopeId");
}
/// <inheritdoc />
protected override void Down(MigrationBuilder migrationBuilder)
{
migrationBuilder.DropTable(
name: "TBDD_CLIENT_USER",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBDD_GROUPS_USER",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBDD_USER_MODULES",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBDD_USER_REPRESENTATION",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBEMLP_EMAIL_OUT");
migrationBuilder.DropTable(
name: "TBSIG_CONFIG",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_DOCUMENT_STATUS",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_EMAIL_TEMPLATE",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE_CERTIFICATE",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE_HISTORY",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE_RECEIVER",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE_RECEIVER_READ_ONLY");
migrationBuilder.DropTable(
name: "TBDD_MODULES",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBDD_GROUPS",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE_DOCUMENT",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_RECEIVER",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBDD_USER",
schema: "dbo");
migrationBuilder.DropTable(
name: "TBSIG_ENVELOPE_TYPE",
schema: "dbo");
}
}
}

File diff suppressed because it is too large Load Diff

View File

@@ -0,0 +1,13 @@
{
"ConnectionStrings": {
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
},
"DbTriggerParams": {
"Envelope": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ],
"EnvelopeHistory": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ],
"EmailOut": [ "TBEMLP_EMAIL_OUT_AFT_INS", "TBEMLP_EMAIL_OUT_AFT_UPD" ],
"EnvelopeReceiverReadOnly": [ "TBSIG_ENVELOPE_RECEIVER_READ_ONLY_UPD" ],
"Receiver": [],
"EmailTemplate": [ "TBSIG_EMAIL_TEMPLATE_AFT_UPD" ]
}
}

View File

@@ -12,7 +12,8 @@
}
},
"ConnectionStrings": {
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
"Dev": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
},
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==",
"Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.

View File

@@ -18,7 +18,7 @@ public class Mock
builder.Configuration.AddJsonFile(configPath, optional: true, reloadOnChange: true);
builder.Services
.AddEnvelopeGeneratorInfrastructureServices(opt =>
.AddEnvelopeGeneratorInfrastructureServices((provider, opt) =>
{
if (useRealDb)
{

View File

@@ -2113,7 +2113,7 @@
<PrivateAssets>all</PrivateAssets>
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
</PackageReference>
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="7.0.20" />
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
<PackageReference Include="NLog" Version="5.2.5" />

View File

@@ -88,7 +88,10 @@ try
}
//AddEF Core dbcontext
var connStr = config.GetConnectionString(Key.Default) ?? throw new InvalidOperationException("There is no default connection string in appsettings.json.");
var useDbMigration = Environment.GetEnvironmentVariable("MIGRATION_TEST_MODE") == true.ToString() || config.GetValue<bool>("UseDbMigration");
var cnnStrName = useDbMigration ? Key.DbMigrationTest : Key.Default;
var connStr = config.GetConnectionString(cnnStrName)
?? throw new InvalidOperationException($"Connection string '{cnnStrName}' is missing in the application configuration.");
builder.Services.AddDistributedSqlServerCache(options =>
{

View File

@@ -16,7 +16,7 @@
"ASPNETCORE_ENVIRONMENT": "Development"
}
},
"swagger": {
"https": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
@@ -25,6 +25,17 @@
},
"dotnetRunMessages": true,
"applicationUrl": "https://localhost:7202;http://localhost:5009"
},
"httpsDbMigration": {
"commandName": "Project",
"launchBrowser": true,
"launchUrl": "swagger",
"environmentVariables": {
"ASPNETCORE_ENVIRONMENT": "Development",
"MIGRATION_TEST_MODE": "true"
},
"dotnetRunMessages": true,
"applicationUrl": "https://localhost:7202;http://localhost:5009"
}
},
"iisSettings": {

View File

@@ -1,6 +1,7 @@
{
"DiPMode": false, //Please be careful when enabling Development in Production (DiP) mode. It allows Swagger and test controllers to be enabled in a production environment.
"EnableSwagger": true,
"UseDbMigration": false,
"EnableTestControllers": true,
"DetailedErrors": true,
"Logging": {
@@ -12,7 +13,8 @@
}
},
"ConnectionStrings": {
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
"DbMigrationTest": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
},
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==",
"Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.