Compare commits

20 Commits

Author SHA1 Message Date
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
408b1e9f0d Merge branch 'refactor/split-common' 2025-06-30 14:59:37 +02:00
9158933333 Refactor security key handling and culture info setup
Updated `IssuerSigningKeyResolver` to use array syntax for returning security keys. Changed supported culture names declaration to use square brackets and modified the creation of the `CultureInfo` list to utilize the spread operator. Adjusted exception handling to throw `InvalidOperationException` when no supported culture is found.
2025-06-30 14:36:55 +02:00
902848958d Refactor empty array initialization 2025-06-30 14:26:26 +02:00
f5418499a7 Refactor envelope generator service registration 2025-06-30 14:25:32 +02:00
47d190d9ea Remove UserReceiver repository registration 2025-06-30 14:23:20 +02:00
35f46d3182 Remove UserReceiver repository and related entities
This commit removes the `IUserReceiverRepository` service registration from `DIExtensions`, indicating it is no longer needed. The `UserReceiver` and `Config` DbSet properties have been eliminated from the `EGDbContext`, along with their initialization in the constructor. Additionally, the `UserReceiver` entity has been removed from the model builder configuration and the associated trigger has been deleted. These changes reflect a refactoring of the data model to simplify the architecture and improve maintainability.
2025-06-30 14:23:00 +02:00
f5733228bf Merge branch 'refactor/split-common' 2025-06-30 11:28:32 +02:00
Developer01
260c1c174d Merge Master 2025-06-30 11:26:46 +02:00
27 changed files with 3852 additions and 180 deletions

View File

@@ -3,6 +3,6 @@
/// <summary> /// <summary>
/// ///
/// </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<IEnvelopeReceiverService, EnvelopeReceiverService>();
services.TryAddScoped<IEnvelopeTypeService, EnvelopeTypeService>(); services.TryAddScoped<IEnvelopeTypeService, EnvelopeTypeService>();
services.TryAddScoped<IReceiverService, ReceiverService>(); services.TryAddScoped<IReceiverService, ReceiverService>();
services.TryAddScoped<IUserReceiverService, UserReceiverService>();
services.TryAddScoped<IEnvelopeReceiverReadOnlyService, EnvelopeReceiverReadOnlyService>(); services.TryAddScoped<IEnvelopeReceiverReadOnlyService, EnvelopeReceiverReadOnlyService>();
//Auto mapping profiles //Auto mapping profiles

View File

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

View File

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

View File

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

View File

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

View File

@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // Dieser Code wurde von einem Tool generiert.
// Runtime Version:4.0.30319.42000 // Laufzeitversion:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// the code is regenerated. // der Code erneut generiert wird.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -13,12 +13,12 @@ namespace My.Resources {
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// class via a tool like ResGen or Visual Studio. // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// To add or remove a member, edit your .ResX file then rerun ResGen // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// with the /str option, or rebuild your VS project. // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@@ -33,7 +33,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager { public static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// resource lookups using this strongly typed resource class. /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture { public static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Sie haben ein Dokument zur Unterschrift erhalten: {0}. /// Sucht eine lokalisierte Zeichenfolge, die Sie haben ein Dokument zur Unterschrift erhalten: {0} ähnelt.
/// </summary> /// </summary>
public static string Sie_haben_ein_Dokument_zur_Unterschrift_erhalten___0_ { public static string Sie_haben_ein_Dokument_zur_Unterschrift_erhalten___0_ {
get { get {

View File

@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // Dieser Code wurde von einem Tool generiert.
// Runtime Version:4.0.30319.42000 // Laufzeitversion:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// the code is regenerated. // der Code erneut generiert wird.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -13,12 +13,12 @@ namespace My.Resources {
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// class via a tool like ResGen or Visual Studio. // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// To add or remove a member, edit your .ResX file then rerun ResGen // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// with the /str option, or rebuild your VS project. // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@@ -33,7 +33,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager { public static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// resource lookups using this strongly typed resource class. /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture { public static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten:. /// Sucht eine lokalisierte Zeichenfolge, die Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten: ähnelt.
/// </summary> /// </summary>
public static string Dialog_Concat_PDF { public static string Dialog_Concat_PDF {
get { get {
@@ -70,7 +70,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Wollen Sie diesen Umschlag wirklich zurückrufen/löschen?. /// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie diesen Umschlag wirklich zurückrufen/löschen? ähnelt.
/// </summary> /// </summary>
public static string Do_you_really_want_to_delete_this_envelope { public static string Do_you_really_want_to_delete_this_envelope {
get { get {
@@ -79,7 +79,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Wollen Sie dieses Dokument wirklich entfernen?. /// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie dieses Dokument wirklich entfernen? ähnelt.
/// </summary> /// </summary>
public static string Do_you_really_want_to_remove_this_document { public static string Do_you_really_want_to_remove_this_document {
get { get {
@@ -88,7 +88,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Wollen Sie den ausgewählten Empfänger löschen?. /// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie den ausgewählten Empfänger löschen? ähnelt.
/// </summary> /// </summary>
public static string Do_you_want_to_delete_the_selected_recipient { public static string Do_you_want_to_delete_the_selected_recipient {
get { get {
@@ -97,7 +97,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Wollen Sie die Signatur löschen?. /// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie die Signatur löschen? ähnelt.
/// </summary> /// </summary>
public static string Do_you_want_to_delete_the_signature { public static string Do_you_want_to_delete_the_signature {
get { get {
@@ -106,7 +106,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Wollen Sie den Signaturprozess nun starten?. /// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie den Signaturprozess nun starten? ähnelt.
/// </summary> /// </summary>
public static string Do_you_want_to_start_the_signature_process_now { public static string Do_you_want_to_start_the_signature_process_now {
get { get {
@@ -115,7 +115,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Das Dokument konnte nicht geöffnet werden!. /// Sucht eine lokalisierte Zeichenfolge, die Das Dokument konnte nicht geöffnet werden! ähnelt.
/// </summary> /// </summary>
public static string Document_could_not_be_opened { public static string Document_could_not_be_opened {
get { get {
@@ -124,7 +124,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Dokument konnte nicht gespeichert werden!. /// Sucht eine lokalisierte Zeichenfolge, die Dokument konnte nicht gespeichert werden! ähnelt.
/// </summary> /// </summary>
public static string Document_Could_Not_Be_Saved { public static string Document_Could_Not_Be_Saved {
get { get {
@@ -133,7 +133,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag an Empfänger {0} weitergeleitet.. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag an Empfänger {0} weitergeleitet. ähnelt.
/// </summary> /// </summary>
public static string Document_forwarded { public static string Document_forwarded {
get { get {
@@ -142,7 +142,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Aktuell ist per Drag and Drop nur eine PDF-Datei erlaubt.. /// Sucht eine lokalisierte Zeichenfolge, die Aktuell ist per Drag and Drop nur eine PDF-Datei erlaubt. ähnelt.
/// </summary> /// </summary>
public static string Drop_only_one_file { public static string Drop_only_one_file {
get { get {
@@ -151,7 +151,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Bearbeite Umschlag. /// Sucht eine lokalisierte Zeichenfolge, die Bearbeite Umschlag ähnelt.
/// </summary> /// </summary>
public static string Edit_Envelope { public static string Edit_Envelope {
get { get {
@@ -160,7 +160,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signatur-Elemente konnten nicht geladen werden!. /// Sucht eine lokalisierte Zeichenfolge, die Signatur-Elemente konnten nicht geladen werden! ähnelt.
/// </summary> /// </summary>
public static string Elements_could_not_be_loaded { public static string Elements_could_not_be_loaded {
get { get {
@@ -169,7 +169,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signatur-Elemente konnten nicht gespeichert werden!. /// Sucht eine lokalisierte Zeichenfolge, die Signatur-Elemente konnten nicht gespeichert werden! ähnelt.
/// </summary> /// </summary>
public static string Elements_could_not_be_saved { public static string Elements_could_not_be_saved {
get { get {
@@ -178,7 +178,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Der Umschlag wurde bereits versendet!. /// Sucht eine lokalisierte Zeichenfolge, die Der Umschlag wurde bereits versendet! ähnelt.
/// </summary> /// </summary>
public static string Envelope_already_sent { public static string Envelope_already_sent {
get { get {
@@ -187,7 +187,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag konnte nicht gesendet werden!. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag konnte nicht gesendet werden! ähnelt.
/// </summary> /// </summary>
public static string Envelope_could_not_be_sent { public static string Envelope_could_not_be_sent {
get { get {
@@ -196,7 +196,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag-Editor. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag-Editor ähnelt.
/// </summary> /// </summary>
public static string Envelope_Editor { public static string Envelope_Editor {
get { get {
@@ -205,7 +205,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Die Einladungen zum Signieren wurden zum Versand eingereiht.. /// Sucht eine lokalisierte Zeichenfolge, die Die Einladungen zum Signieren wurden zum Versand eingereiht. ähnelt.
/// </summary> /// </summary>
public static string Envelope_Invitations_Sent { public static string Envelope_Invitations_Sent {
get { get {
@@ -214,7 +214,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Übersicht. /// Sucht eine lokalisierte Zeichenfolge, die Übersicht ähnelt.
/// </summary> /// </summary>
public static string Envelope_Overview { public static string Envelope_Overview {
get { get {
@@ -223,7 +223,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Die Einladungen wurden erfolgreich zum Versand bereitgestellt.. /// Sucht eine lokalisierte Zeichenfolge, die Die Einladungen wurden erfolgreich zum Versand bereitgestellt. ähnelt.
/// </summary> /// </summary>
public static string Envelope_successfully_sent { public static string Envelope_successfully_sent {
get { get {
@@ -232,7 +232,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Die Email-Adresse [ @Mail ] konnte nicht validiert werden!. /// Sucht eine lokalisierte Zeichenfolge, die Die Email-Adresse [ @Mail ] konnte nicht validiert werden! ähnelt.
/// </summary> /// </summary>
public static string Error_email_Validation { public static string Error_email_Validation {
get { get {
@@ -241,8 +241,8 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to The mobile phone number [@PhoneNr] could not be validated. /// Sucht eine lokalisierte Zeichenfolge, die The mobile phone number [@PhoneNr] could not be validated.
///Pattern: +491234567890. ///Pattern: +491234567890 ähnelt.
/// </summary> /// </summary>
public static string Error_phone_Validation { public static string Error_phone_Validation {
get { get {
@@ -251,7 +251,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehler beim Senden des Umschlags:. /// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Senden des Umschlags: ähnelt.
/// </summary> /// </summary>
public static string Error_sending_the_envelope { public static string Error_sending_the_envelope {
get { get {
@@ -260,7 +260,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehler beim Speichern des Umschlags!. /// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Speichern des Umschlags! ähnelt.
/// </summary> /// </summary>
public static string Error_when_saving_the_envelope { public static string Error_when_saving_the_envelope {
get { get {
@@ -269,7 +269,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehler beim Speichern der Empfänger!. /// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Speichern der Empfänger! ähnelt.
/// </summary> /// </summary>
public static string Error_when_saving_the_recipients { public static string Error_when_saving_the_recipients {
get { get {
@@ -278,7 +278,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehler bei der Validierung des Umschlags:. /// Sucht eine lokalisierte Zeichenfolge, die Fehler bei der Validierung des Umschlags: ähnelt.
/// </summary> /// </summary>
public static string Error_when_validating_the_envelope { public static string Error_when_validating_the_envelope {
get { get {
@@ -287,7 +287,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehler beim Speichern des Umschlags: . /// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Speichern des Umschlags: ähnelt.
/// </summary> /// </summary>
public static string Errors_when_saving_the_envelope { public static string Errors_when_saving_the_envelope {
get { get {
@@ -296,7 +296,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Mindestens ein Empfänger hat keine Anrede oder keine Email Adresse.. /// Sucht eine lokalisierte Zeichenfolge, die Mindestens ein Empfänger hat keine Anrede oder keine Email Adresse. ähnelt.
/// </summary> /// </summary>
public static string Incomplete_Receivers { public static string Incomplete_Receivers {
get { get {
@@ -305,7 +305,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Empfänger {0} hat keine gültige Email Addresse.. /// Sucht eine lokalisierte Zeichenfolge, die Empfänger {0} hat keine gültige Email Addresse. ähnelt.
/// </summary> /// </summary>
public static string Invalid_Email_Address { public static string Invalid_Email_Address {
get { get {
@@ -314,7 +314,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Die Einladung an [@Mail] wurde nochmal versendet!. /// Sucht eine lokalisierte Zeichenfolge, die Die Einladung an [@Mail] wurde nochmal versendet! ähnelt.
/// </summary> /// </summary>
public static string Invitation_successfully_resend { public static string Invitation_successfully_resend {
get { get {
@@ -323,7 +323,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehlendes Dokument. /// Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt.
/// </summary> /// </summary>
public static string Missing_Documents { public static string Missing_Documents {
get { get {
@@ -332,7 +332,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Es muss mindestens ein Signaturfeld gesetzt werden.. /// Sucht eine lokalisierte Zeichenfolge, die Es muss mindestens ein Signaturfeld gesetzt werden. ähnelt.
/// </summary> /// </summary>
public static string Missing_Elements { public static string Missing_Elements {
get { get {
@@ -341,7 +341,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Für den Empfänger {0} gibt es noch kein Signaturfeld.. /// Sucht eine lokalisierte Zeichenfolge, die Für den Empfänger {0} gibt es noch kein Signaturfeld. ähnelt.
/// </summary> /// </summary>
public static string Missing_Elements_for_Receiver { public static string Missing_Elements_for_Receiver {
get { get {
@@ -350,7 +350,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehlende Nachricht. /// Sucht eine lokalisierte Zeichenfolge, die Fehlende Nachricht ähnelt.
/// </summary> /// </summary>
public static string Missing_Message { public static string Missing_Message {
get { get {
@@ -359,7 +359,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fehlende Empfänger. /// Sucht eine lokalisierte Zeichenfolge, die Fehlende Empfänger ähnelt.
/// </summary> /// </summary>
public static string Missing_Receivers { public static string Missing_Receivers {
get { get {
@@ -368,7 +368,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to . /// Sucht eine lokalisierte Zeichenfolge, die ähnelt.
/// </summary> /// </summary>
public static string ModificationOriginFile_FormFields { public static string ModificationOriginFile_FormFields {
get { get {
@@ -377,7 +377,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Neuer Umschlag. /// Sucht eine lokalisierte Zeichenfolge, die Neuer Umschlag ähnelt.
/// </summary> /// </summary>
public static string New_Envelope { public static string New_Envelope {
get { get {
@@ -386,7 +386,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Es ist nur eine Datei zulässig!. /// Sucht eine lokalisierte Zeichenfolge, die Es ist nur eine Datei zulässig! ähnelt.
/// </summary> /// </summary>
public static string Only_one_file_is_allowed { public static string Only_one_file_is_allowed {
get { get {
@@ -395,7 +395,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Bitte lesen und unterzeichnen Sie dieses Dokument.. /// Sucht eine lokalisierte Zeichenfolge, die Bitte lesen und unterzeichnen Sie dieses Dokument. ähnelt.
/// </summary> /// </summary>
public static string Please_read_and_sign_this_document { public static string Please_read_and_sign_this_document {
get { get {
@@ -404,7 +404,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Bitte wählen Sie einen Empfänger aus dem Reiter Empfänger aus.. /// Sucht eine lokalisierte Zeichenfolge, die Bitte wählen Sie einen Empfänger aus dem Reiter Empfänger aus. ähnelt.
/// </summary> /// </summary>
public static string Please_select_a_recipient_from_the_Recipients_tab { public static string Please_select_a_recipient_from_the_Recipients_tab {
get { get {
@@ -413,7 +413,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Empfänger konnte nicht gelöscht werden!. /// Sucht eine lokalisierte Zeichenfolge, die Empfänger konnte nicht gelöscht werden! ähnelt.
/// </summary> /// </summary>
public static string Recipient_could_not_be_deleted { public static string Recipient_could_not_be_deleted {
get { get {
@@ -422,7 +422,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Soll der Umschlag gespeichert werden?. /// Sucht eine lokalisierte Zeichenfolge, die Soll der Umschlag gespeichert werden? ähnelt.
/// </summary> /// </summary>
public static string Should_The_Envelope_Be_Saved { public static string Should_The_Envelope_Be_Saved {
get { get {
@@ -431,7 +431,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Platzhalter Signatur. /// Sucht eine lokalisierte Zeichenfolge, die Platzhalter Signatur ähnelt.
/// </summary> /// </summary>
public static string Signature { public static string Signature {
get { get {
@@ -440,7 +440,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signatur-Editor. /// Sucht eine lokalisierte Zeichenfolge, die Signatur-Editor ähnelt.
/// </summary> /// </summary>
public static string Signature_Editor { public static string Signature_Editor {
get { get {
@@ -449,7 +449,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Der Umschlag konnte nicht gelöscht werden!. /// Sucht eine lokalisierte Zeichenfolge, die Der Umschlag konnte nicht gelöscht werden! ähnelt.
/// </summary> /// </summary>
public static string The_envelope_could_not_be_deleted { public static string The_envelope_could_not_be_deleted {
get { get {
@@ -458,7 +458,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Der Umschlag enthält keine Dokumente. /// Sucht eine lokalisierte Zeichenfolge, die Der Umschlag enthält keine Dokumente ähnelt.
/// </summary> /// </summary>
public static string The_envelope_does_not_contain_any_documents { public static string The_envelope_does_not_contain_any_documents {
get { get {
@@ -467,7 +467,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Es gibt für diesen Empfänger bereits Elemente. Wollen Sie den Empfänger trotzdem löschen?. /// Sucht eine lokalisierte Zeichenfolge, die Es gibt für diesen Empfänger bereits Elemente. Wollen Sie den Empfänger trotzdem löschen? ähnelt.
/// </summary> /// </summary>
public static string There_are_already_elements_for_this_recipient { public static string There_are_already_elements_for_this_recipient {
get { get {
@@ -476,7 +476,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese Speichern?. /// Sucht eine lokalisierte Zeichenfolge, die Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese Speichern? ähnelt.
/// </summary> /// </summary>
public static string There_are_unsaved_changes { public static string There_are_unsaved_changes {
get { get {
@@ -485,7 +485,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Sie haben ein Dokument zum signieren erhalten:. /// Sucht eine lokalisierte Zeichenfolge, die Sie haben ein Dokument zum signieren erhalten: ähnelt.
/// </summary> /// </summary>
public static string You_received_a_document_to_sign { public static string You_received_a_document_to_sign {
get { get {

View File

@@ -1,10 +1,10 @@
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
// <auto-generated> // <auto-generated>
// This code was generated by a tool. // Dieser Code wurde von einem Tool generiert.
// Runtime Version:4.0.30319.42000 // Laufzeitversion:4.0.30319.42000
// //
// Changes to this file may cause incorrect behavior and will be lost if // Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
// the code is regenerated. // der Code erneut generiert wird.
// </auto-generated> // </auto-generated>
//------------------------------------------------------------------------------ //------------------------------------------------------------------------------
@@ -13,12 +13,12 @@ namespace My.Resources {
/// <summary> /// <summary>
/// A strongly-typed resource class, for looking up localized strings, etc. /// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
/// </summary> /// </summary>
// This class was auto-generated by the StronglyTypedResourceBuilder // Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
// class via a tool like ResGen or Visual Studio. // -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
// To add or remove a member, edit your .ResX file then rerun ResGen // Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
// with the /str option, or rebuild your VS project. // mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")] [global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()] [global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()] [global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
@@ -33,7 +33,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Returns the cached ResourceManager instance used by this class. /// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Resources.ResourceManager ResourceManager { public static global::System.Resources.ResourceManager ResourceManager {
@@ -47,8 +47,8 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Overrides the current thread's CurrentUICulture property for all /// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
/// resource lookups using this strongly typed resource class. /// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
/// </summary> /// </summary>
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)] [global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
public static global::System.Globalization.CultureInfo Culture { public static global::System.Globalization.CultureInfo Culture {
@@ -61,7 +61,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Zugriffscode korrekt eingegeben. /// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode korrekt eingegeben ähnelt.
/// </summary> /// </summary>
public static string AccessCodeCorrect { public static string AccessCodeCorrect {
get { get {
@@ -70,7 +70,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Zugriffscode falsch eingegeben. /// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode falsch eingegeben ähnelt.
/// </summary> /// </summary>
public static string AccessCodeIncorrect { public static string AccessCodeIncorrect {
get { get {
@@ -79,7 +79,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Zugriffscode angefordert. /// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode angefordert ähnelt.
/// </summary> /// </summary>
public static string AccessCodeRequested { public static string AccessCodeRequested {
get { get {
@@ -88,7 +88,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Fortgeschrittene Elektronische Signatur. /// Sucht eine lokalisierte Zeichenfolge, die Fortgeschrittene Elektronische Signatur ähnelt.
/// </summary> /// </summary>
public static string AdvancedElectronicSignature { public static string AdvancedElectronicSignature {
get { get {
@@ -97,7 +97,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Abgeschlossen. /// Sucht eine lokalisierte Zeichenfolge, die Abgeschlossen ähnelt.
/// </summary> /// </summary>
public static string Completed { public static string Completed {
get { get {
@@ -106,7 +106,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Vollständig Signiert. /// Sucht eine lokalisierte Zeichenfolge, die Vollständig Signiert ähnelt.
/// </summary> /// </summary>
public static string CompletelySigned { public static string CompletelySigned {
get { get {
@@ -115,7 +115,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Vertrag. /// Sucht eine lokalisierte Zeichenfolge, die Vertrag ähnelt.
/// </summary> /// </summary>
public static string Contract { public static string Contract {
get { get {
@@ -124,7 +124,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Erstellt. /// Sucht eine lokalisierte Zeichenfolge, die Erstellt ähnelt.
/// </summary> /// </summary>
public static string Created { public static string Created {
get { get {
@@ -133,7 +133,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Dokument Rotation geändert. /// Sucht eine lokalisierte Zeichenfolge, die Dokument Rotation geändert ähnelt.
/// </summary> /// </summary>
public static string DocumentMod_Rotation { public static string DocumentMod_Rotation {
get { get {
@@ -142,7 +142,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Dokument geöffnet. /// Sucht eine lokalisierte Zeichenfolge, die Dokument geöffnet ähnelt.
/// </summary> /// </summary>
public static string DocumentOpened { public static string DocumentOpened {
get { get {
@@ -151,7 +151,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Unterzeichnung abgelehnt. /// Sucht eine lokalisierte Zeichenfolge, die Unterzeichnung abgelehnt ähnelt.
/// </summary> /// </summary>
public static string DocumentRejected { public static string DocumentRejected {
get { get {
@@ -160,7 +160,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Dokument unterzeichnet. /// Sucht eine lokalisierte Zeichenfolge, die Dokument unterzeichnet ähnelt.
/// </summary> /// </summary>
public static string DocumentSigned { public static string DocumentSigned {
get { get {
@@ -169,7 +169,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Entwurf. /// Sucht eine lokalisierte Zeichenfolge, die Entwurf ähnelt.
/// </summary> /// </summary>
public static string Draft { public static string Draft {
get { get {
@@ -178,7 +178,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Archiviert. /// Sucht eine lokalisierte Zeichenfolge, die Archiviert ähnelt.
/// </summary> /// </summary>
public static string EnvelopeArchived { public static string EnvelopeArchived {
get { get {
@@ -187,7 +187,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Vollständig signiert. /// Sucht eine lokalisierte Zeichenfolge, die Vollständig signiert ähnelt.
/// </summary> /// </summary>
public static string EnvelopeCompletelySigned { public static string EnvelopeCompletelySigned {
get { get {
@@ -196,7 +196,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag Erstellt. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag Erstellt ähnelt.
/// </summary> /// </summary>
public static string EnvelopeCreated { public static string EnvelopeCreated {
get { get {
@@ -205,7 +205,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag Gelöscht. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag Gelöscht ähnelt.
/// </summary> /// </summary>
public static string EnvelopeDeleted { public static string EnvelopeDeleted {
get { get {
@@ -214,7 +214,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Teil-Signiert. /// Sucht eine lokalisierte Zeichenfolge, die Teil-Signiert ähnelt.
/// </summary> /// </summary>
public static string EnvelopePartlySigned { public static string EnvelopePartlySigned {
get { get {
@@ -223,7 +223,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag in Queue. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag in Queue ähnelt.
/// </summary> /// </summary>
public static string EnvelopeQueued { public static string EnvelopeQueued {
get { get {
@@ -232,7 +232,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag abgelehnt. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag abgelehnt ähnelt.
/// </summary> /// </summary>
public static string EnvelopeRejected { public static string EnvelopeRejected {
get { get {
@@ -241,7 +241,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signierungszertifikat erstellt. /// Sucht eine lokalisierte Zeichenfolge, die Signierungszertifikat erstellt ähnelt.
/// </summary> /// </summary>
public static string EnvelopeReportCreated { public static string EnvelopeReportCreated {
get { get {
@@ -250,7 +250,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Gespeichert. /// Sucht eine lokalisierte Zeichenfolge, die Gespeichert ähnelt.
/// </summary> /// </summary>
public static string EnvelopeSaved { public static string EnvelopeSaved {
get { get {
@@ -259,7 +259,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Gesendet. /// Sucht eine lokalisierte Zeichenfolge, die Gesendet ähnelt.
/// </summary> /// </summary>
public static string EnvelopeSent { public static string EnvelopeSent {
get { get {
@@ -268,7 +268,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Umschlag zurückgezogen. /// Sucht eine lokalisierte Zeichenfolge, die Umschlag zurückgezogen ähnelt.
/// </summary> /// </summary>
public static string EnvelopeWithdrawn { public static string EnvelopeWithdrawn {
get { get {
@@ -277,7 +277,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Zugriffscode versendet. /// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode versendet ähnelt.
/// </summary> /// </summary>
public static string MessageAccessCodeSent { public static string MessageAccessCodeSent {
get { get {
@@ -286,7 +286,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Abschlussemail versendet. /// Sucht eine lokalisierte Zeichenfolge, die Abschlussemail versendet ähnelt.
/// </summary> /// </summary>
public static string MessageCompletionSent { public static string MessageCompletionSent {
get { get {
@@ -295,7 +295,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signaturbestätigung versendet. /// Sucht eine lokalisierte Zeichenfolge, die Signaturbestätigung versendet ähnelt.
/// </summary> /// </summary>
public static string MessageConfirmationSent { public static string MessageConfirmationSent {
get { get {
@@ -304,7 +304,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Löschinformation versendet. /// Sucht eine lokalisierte Zeichenfolge, die Löschinformation versendet ähnelt.
/// </summary> /// </summary>
public static string MessageDeletionSent { public static string MessageDeletionSent {
get { get {
@@ -313,7 +313,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Dokumentenlink versendet. /// Sucht eine lokalisierte Zeichenfolge, die Dokumentenlink versendet ähnelt.
/// </summary> /// </summary>
public static string MessageInvitationSent { public static string MessageInvitationSent {
get { get {
@@ -322,7 +322,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Nein. /// Sucht eine lokalisierte Zeichenfolge, die Nein ähnelt.
/// </summary> /// </summary>
public static string No { public static string No {
get { get {
@@ -331,7 +331,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Teil-Signiert. /// Sucht eine lokalisierte Zeichenfolge, die Teil-Signiert ähnelt.
/// </summary> /// </summary>
public static string PartlySigned { public static string PartlySigned {
get { get {
@@ -340,7 +340,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Qualifizierte Signatur. /// Sucht eine lokalisierte Zeichenfolge, die Qualifizierte Signatur ähnelt.
/// </summary> /// </summary>
public static string QualifiedSignature { public static string QualifiedSignature {
get { get {
@@ -349,7 +349,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Arbeitsanweisung. /// Sucht eine lokalisierte Zeichenfolge, die Arbeitsanweisung ähnelt.
/// </summary> /// </summary>
public static string ReadAndSign { public static string ReadAndSign {
get { get {
@@ -358,7 +358,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Wollen Sie die 2-Faktor Definition für diesen Empfänger zurücksetzen. Der Empfänger muss sich dann neu identifizieren!. /// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie die 2-Faktor Definition für diesen Empfänger zurücksetzen. Der Empfänger muss sich dann neu identifizieren! ähnelt.
/// </summary> /// </summary>
public static string ResetTOTPUser { public static string ResetTOTPUser {
get { get {
@@ -367,7 +367,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Gespeichert. /// Sucht eine lokalisierte Zeichenfolge, die Gespeichert ähnelt.
/// </summary> /// </summary>
public static string Saved { public static string Saved {
get { get {
@@ -376,7 +376,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Gesendet. /// Sucht eine lokalisierte Zeichenfolge, die Gesendet ähnelt.
/// </summary> /// </summary>
public static string Sent { public static string Sent {
get { get {
@@ -385,7 +385,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signatur. /// Sucht eine lokalisierte Zeichenfolge, die Signatur ähnelt.
/// </summary> /// </summary>
public static string Signature { public static string Signature {
get { get {
@@ -394,7 +394,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signatur bestätigt. /// Sucht eine lokalisierte Zeichenfolge, die Signatur bestätigt ähnelt.
/// </summary> /// </summary>
public static string SignatureConfirmed { public static string SignatureConfirmed {
get { get {
@@ -403,7 +403,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Signiert. /// Sucht eine lokalisierte Zeichenfolge, die Signiert ähnelt.
/// </summary> /// </summary>
public static string Signed { public static string Signed {
get { get {
@@ -412,7 +412,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Erfolgreich! Dialog wird geschlossen.. /// Sucht eine lokalisierte Zeichenfolge, die Erfolgreich! Dialog wird geschlossen. ähnelt.
/// </summary> /// </summary>
public static string Success_FormClose { public static string Success_FormClose {
get { get {
@@ -421,7 +421,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Unsigniert. /// Sucht eine lokalisierte Zeichenfolge, die Unsigniert ähnelt.
/// </summary> /// </summary>
public static string Unsigned { public static string Unsigned {
get { get {
@@ -430,7 +430,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Ja. /// Sucht eine lokalisierte Zeichenfolge, die Ja ähnelt.
/// </summary> /// </summary>
public static string Yes { public static string Yes {
get { get {
@@ -439,7 +439,7 @@ namespace My.Resources {
} }
/// <summary> /// <summary>
/// Looks up a localized string similar to Ja, mit Anhang. /// Sucht eine lokalisierte Zeichenfolge, die Ja, mit Anhang ähnelt.
/// </summary> /// </summary>
public static string YesWithAttachment { public static string YesWithAttachment {
get { get {

View File

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

View File

@@ -40,7 +40,7 @@ try
builder.Services.AddControllers(); builder.Services.AddControllers();
//CORS Policy // CORS Policy
var allowedOrigins = config.GetSection("AllowedOrigins").Get<string[]>() ?? var allowedOrigins = config.GetSection("AllowedOrigins").Get<string[]>() ??
throw new InvalidOperationException("AllowedOrigins section is missing in the configuration."); throw new InvalidOperationException("AllowedOrigins section is missing in the configuration.");
builder.Services.AddCors(options => builder.Services.AddCors(options =>
@@ -93,7 +93,7 @@ try
Id = "Bearer" Id = "Bearer"
} }
}, },
new string[] {} Array.Empty<string>()
} }
}); });
@@ -104,8 +104,12 @@ try
} }
}); });
builder.Services.AddOpenApi(); 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); builder.Services.Configure<ConnectionString>(cs => cs.Value = connStr);
@@ -129,7 +133,7 @@ try
{ {
var clientParams = deferredProvider.GetOptions<ClientParams>(); var clientParams = deferredProvider.GetOptions<ClientParams>();
var publicKey = clientParams!.PublicKeys.Get(authTokenKeys.Issuer, authTokenKeys.Audience); var publicKey = clientParams!.PublicKeys.Get(authTokenKeys.Issuer, authTokenKeys.Audience);
return new List<SecurityKey>() { publicKey.SecurityKey }; return [publicKey.SecurityKey];
}, },
ValidateIssuer = true, ValidateIssuer = true,
ValidIssuer = authTokenKeys.Issuer, ValidIssuer = authTokenKeys.Issuer,
@@ -205,10 +209,10 @@ try
app.UseCors("AllowSpecificOriginsPolicy"); app.UseCors("AllowSpecificOriginsPolicy");
// Localizer // Localizer
string[] supportedCultureNames = { "de-DE", "en-US" }; string[] supportedCultureNames = ["de-DE", "en-US"];
IList<CultureInfo> list = supportedCultureNames.Select((string cn) => new CultureInfo(cn)).ToList(); IList<CultureInfo> list = [.. supportedCultureNames.Select(cn => new CultureInfo(cn))];
CultureInfo cultureInfo = list.FirstOrDefault() ?? throw new ArgumentNullException("supportedCultureNames", "Supported cultures cannot be empty."); var cultureInfo = list.FirstOrDefault() ?? throw new InvalidOperationException("There is no supported culture.");
RequestLocalizationOptions requestLocalizationOptions = new RequestLocalizationOptions var requestLocalizationOptions = new RequestLocalizationOptions
{ {
SupportedCultures = list, SupportedCultures = list,
SupportedUICultures = list SupportedUICultures = list

View File

@@ -1,5 +1,6 @@
{ {
"UseSwagger": true, "UseSwagger": true,
"UseDbMigration": true,
"DiPMode": true, "DiPMode": true,
"Logging": { "Logging": {
"LogLevel": { "LogLevel": {
@@ -10,7 +11,8 @@
"AllowedHosts": "*", "AllowedHosts": "*",
"AllowedOrigins": [ "http://localhost:4200" ], "AllowedOrigins": [ "http://localhost:4200" ],
"ConnectionStrings": { "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": { "DirectorySearchOptions": {
"ServerName": "DD-VMP01-DC01", "ServerName": "DD-VMP01-DC01",

View File

@@ -53,7 +53,6 @@ public static class DIExtensions
services.TryAddScoped<IEnvelopeReceiverRepository, EnvelopeReceiverRepository>(); services.TryAddScoped<IEnvelopeReceiverRepository, EnvelopeReceiverRepository>();
services.TryAddScoped<IEnvelopeTypeRepository, EnvelopeTypeRepository>(); services.TryAddScoped<IEnvelopeTypeRepository, EnvelopeTypeRepository>();
services.TryAddScoped<IReceiverRepository, ReceiverRepository>(); services.TryAddScoped<IReceiverRepository, ReceiverRepository>();
services.TryAddScoped<IUserReceiverRepository, UserReceiverRepository>();
services.TryAddScoped<IEnvelopeReceiverReadOnlyRepository, EnvelopeReceiverReadOnlyRepository>(); services.TryAddScoped<IEnvelopeReceiverReadOnlyRepository, EnvelopeReceiverReadOnlyRepository>();
services.AddDbRepository<EGDbContext, Config>(context => context.Configs).UseAutoMapper(); services.AddDbRepository<EGDbContext, Config>(context => context.Configs).UseAutoMapper();
@@ -67,7 +66,6 @@ public static class DIExtensions
services.AddDbRepository<EGDbContext, EnvelopeReceiver>(context => context.EnvelopeReceivers).UseAutoMapper(); services.AddDbRepository<EGDbContext, EnvelopeReceiver>(context => context.EnvelopeReceivers).UseAutoMapper();
services.AddDbRepository<EGDbContext, EnvelopeType>(context => context.EnvelopeTypes).UseAutoMapper(); services.AddDbRepository<EGDbContext, EnvelopeType>(context => context.EnvelopeTypes).UseAutoMapper();
services.AddDbRepository<EGDbContext, Receiver>(context => context.Receivers).UseAutoMapper(); services.AddDbRepository<EGDbContext, Receiver>(context => context.Receivers).UseAutoMapper();
services.AddDbRepository<EGDbContext, UserReceiver>(context => context.UserReceivers).UseAutoMapper();
services.AddDbRepository<EGDbContext, EnvelopeReceiverReadOnly>(context => context.EnvelopeReceiverReadOnlys).UseAutoMapper(); services.AddDbRepository<EGDbContext, EnvelopeReceiverReadOnly>(context => context.EnvelopeReceiverReadOnlys).UseAutoMapper();
services.AddSQLExecutor<Envelope>(); services.AddSQLExecutor<Envelope>();

View File

@@ -17,8 +17,6 @@ namespace EnvelopeGenerator.Infrastructure;
//TODO: Adding EmailOut instead of EmailOut.Abst is not correct for the arch. Re-design EmailPut consedering this. IMailDbContext shoud move to Abstraction layer (hint: in this case using DBSet in abst. will be problem because entity framework will have to be added. //TODO: Adding EmailOut instead of EmailOut.Abst is not correct for the arch. Re-design EmailPut consedering this. IMailDbContext shoud move to Abstraction layer (hint: in this case using DBSet in abst. will be problem because entity framework will have to be added.
public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
{ {
public DbSet<UserReceiver> UserReceivers { get; set; }
public DbSet<Config> Configs { get; set; } public DbSet<Config> Configs { get; set; }
public DbSet<EnvelopeReceiver> EnvelopeReceivers { get; set; } public DbSet<EnvelopeReceiver> EnvelopeReceivers { get; set; }
@@ -61,14 +59,15 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
private readonly DbTriggerParams _triggers; 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; _triggers = triggerParamOptions.Value;
_logger = logger; _logger = logger;
UserReceivers = Set<UserReceiver>();
Configs = Set<Config>(); Configs = Set<Config>();
EnvelopeReceivers = Set<EnvelopeReceiver>(); EnvelopeReceivers = Set<EnvelopeReceiver>();
Envelopes = Set<Envelope>(); Envelopes = Set<Envelope>();
@@ -106,7 +105,6 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
modelBuilder.Entity<EnvelopeHistory>(); modelBuilder.Entity<EnvelopeHistory>();
modelBuilder.Entity<EnvelopeType>(); modelBuilder.Entity<EnvelopeType>();
modelBuilder.Entity<Receiver>(); modelBuilder.Entity<Receiver>();
modelBuilder.Entity<UserReceiver>();
modelBuilder.Entity<EmailOut>(); modelBuilder.Entity<EmailOut>();
// Configure the one-to-many relationship of Envelope // Configure the one-to-many relationship of Envelope
@@ -130,17 +128,20 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.WithMany(ed => ed.Elements) .WithMany(ed => ed.Elements)
.HasForeignKey(dre => dre.DocumentId); .HasForeignKey(dre => dre.DocumentId);
modelBuilder.Entity<EnvelopeHistory>() if (!IsMigration)
.HasOne(eh => eh.Receiver) {
.WithMany() modelBuilder.Entity<EnvelopeHistory>()
.HasForeignKey(eh => eh.UserReference) .HasOne(eh => eh.Receiver)
.HasPrincipalKey(e => e.EmailAddress); .WithMany()
.HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.EmailAddress);
modelBuilder.Entity<EnvelopeHistory>() modelBuilder.Entity<EnvelopeHistory>()
.HasOne(eh => eh.Sender) .HasOne(eh => eh.Sender)
.WithMany() .WithMany()
.HasForeignKey(eh => eh.UserReference) .HasForeignKey(eh => eh.UserReference)
.HasPrincipalKey(e => e.Email); .HasPrincipalKey(e => e.Email);
}
modelBuilder.Entity<EnvelopeReceiverReadOnly>() modelBuilder.Entity<EnvelopeReceiverReadOnly>()
.HasOne(erro => erro.Receiver) .HasOne(erro => erro.Receiver)
@@ -155,7 +156,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
.ForEach(tName => .ForEach(tName =>
{ {
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(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 // TODO: call add trigger methods with attributes and reflection
@@ -171,7 +172,6 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
AddTrigger<EnvelopeReceiverReadOnly>(); AddTrigger<EnvelopeReceiverReadOnly>();
AddTrigger<EnvelopeType>(); AddTrigger<EnvelopeType>();
AddTrigger<Receiver>(); AddTrigger<Receiver>();
AddTrigger<UserReceiver>();
AddTrigger<EmailOut>(); AddTrigger<EmailOut>();
//configure model builder for user manager tables //configure model builder for user manager tables

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'"> <ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" 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>
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.15" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.17" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.15" /> <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>
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'"> <ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" /> <PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.6" />
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.5" /> <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>
<ItemGroup>
<None Update="appsettings.migration.json">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</None>
</ItemGroup> </ItemGroup>
</Project> </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

@@ -28,7 +28,7 @@ public static class DependencyInjection
}); });
// Add envelope generator services // Add envelope generator services
services.AddEnvelopeGeneratorInfrastructureServices(options => options.UseSqlServer(connStr)); services.AddEnvelopeGeneratorInfrastructureServices((provider, options) => options.UseSqlServer(connStr));
return services return services
.AddSingleton<CommandManager>() .AddSingleton<CommandManager>()

View File

@@ -12,7 +12,8 @@
} }
}, },
"ConnectionStrings": { "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==", "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. "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.Configuration.AddJsonFile(configPath, optional: true, reloadOnChange: true);
builder.Services builder.Services
.AddEnvelopeGeneratorInfrastructureServices(opt => .AddEnvelopeGeneratorInfrastructureServices((provider, opt) =>
{ {
if (useRealDb) if (useRealDb)
{ {

View File

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

View File

@@ -88,7 +88,10 @@ try
} }
//AddEF Core dbcontext //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 => builder.Services.AddDistributedSqlServerCache(options =>
{ {

View File

@@ -16,7 +16,7 @@
"ASPNETCORE_ENVIRONMENT": "Development" "ASPNETCORE_ENVIRONMENT": "Development"
} }
}, },
"swagger": { "https": {
"commandName": "Project", "commandName": "Project",
"launchBrowser": true, "launchBrowser": true,
"launchUrl": "swagger", "launchUrl": "swagger",
@@ -25,6 +25,17 @@
}, },
"dotnetRunMessages": true, "dotnetRunMessages": true,
"applicationUrl": "https://localhost:7202;http://localhost:5009" "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": { "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. "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, "EnableSwagger": true,
"UseDbMigration": false,
"EnableTestControllers": true, "EnableTestControllers": true,
"DetailedErrors": true, "DetailedErrors": true,
"Logging": { "Logging": {
@@ -12,7 +13,8 @@
} }
}, },
"ConnectionStrings": { "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==", "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. "Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.