Compare commits

..

5 Commits

Author SHA1 Message Date
7271106892 Update company logo and CSS classes in UI config
Changed the company logo source from digital_data.svg to wisag.svg.
Updated associated CSS class names to use wisag-specific
identifiers for show and locked states.
2026-03-11 14:10:23 +01:00
d02149cb6b Update AllowedOrigins to use localhost:8080 instead of 7202
Replaced "https://localhost:7202" with "http://localhost:8080" in the AllowedOrigins setting. "https://digitale.unterschrift.wisag.de/" remains unchanged. This updates the allowed local development origin.
2026-03-11 12:44:23 +01:00
8d8b9a6ea0 Update PSPDFKit license key in appsettings file
Replaced the old PSPDFKitLicenseKey value in appsettings.PSPDFKitLicense.json with a new license key to ensure continued access and compliance. No other changes were made.
2026-03-11 12:44:17 +01:00
96a2abdda8 Update NLog log directory path in appsettings.Logging.json
Changed the NLog logDirectory variable from E:\LogFiles\Digital Data\signFlow to F:\LogFiles\signFLOW, updating both the drive letter and folder structure for log file storage.
2026-03-11 12:44:07 +01:00
6cc2d77fc0 Update Default DB connection string and credentials
Changed the Default connection string in appsettings.Database.json to use server 10.1.6.7 and updated credentials to User Id=DD_ECM and Password=dd_ecm. Other connection parameters remain unchanged.
2026-03-11 12:43:59 +01:00
18 changed files with 21 additions and 178 deletions

View File

@@ -13,12 +13,12 @@ public static class AutoMapperAuditingExtensions
/// </summary> /// </summary>
public static IMappingExpression<TSource, TDestination> MapAddedWhen<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression) public static IMappingExpression<TSource, TDestination> MapAddedWhen<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
where TDestination : IHasAddedWhen where TDestination : IHasAddedWhen
=> expression.ForMember(dest => dest.AddedWhen, opt => opt.MapFrom(_ => DateTime.Now)); => expression.ForMember(dest => dest.AddedWhen, opt => opt.MapFrom(_ => DateTime.UtcNow));
/// <summary> /// <summary>
/// Maps <see cref="IHasChangedWhen.ChangedWhen"/> to the current UTC time. /// Maps <see cref="IHasChangedWhen.ChangedWhen"/> to the current UTC time.
/// </summary> /// </summary>
public static IMappingExpression<TSource, TDestination> MapChangedWhen<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression) public static IMappingExpression<TSource, TDestination> MapChangedWhen<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
where TDestination : IHasChangedWhen where TDestination : IHasChangedWhen
=> expression.ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(_ => DateTime.Now)); => expression.ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(_ => DateTime.UtcNow));
} }

View File

@@ -113,7 +113,7 @@ public abstract class SendMailHandler<TNotification> : INotificationHandler<TNot
EmailAddress = notification.EmailAddress, EmailAddress = notification.EmailAddress,
EmailBody = temp.Body, EmailBody = temp.Body,
EmailSubj = temp.Subject, EmailSubj = temp.Subject,
AddedWhen = DateTime.Now, AddedWhen = DateTime.UtcNow,
AddedWho = DispatcherParams.AddedWho, AddedWho = DispatcherParams.AddedWho,
SendingProfile = DispatcherParams.SendingProfile, SendingProfile = DispatcherParams.SendingProfile,
ReminderTypeId = DispatcherParams.ReminderTypeId, ReminderTypeId = DispatcherParams.ReminderTypeId,

View File

@@ -27,7 +27,7 @@ public class MappingProfile : Profile
CreateMap<UpdateDocStatusCommand, DocumentStatus>() CreateMap<UpdateDocStatusCommand, DocumentStatus>()
.ForMember(dest => dest.Envelope, opt => opt.Ignore()) .ForMember(dest => dest.Envelope, opt => opt.Ignore())
.ForMember(dest => dest.Receiver, opt => opt.Ignore()) .ForMember(dest => dest.Receiver, opt => opt.Ignore())
.ForMember(dest => dest.StatusChangedWhen, opt => opt.MapFrom(src => DateTime.Now)) .ForMember(dest => dest.StatusChangedWhen, opt => opt.MapFrom(src => DateTime.UtcNow))
.MapChangedWhen(); .MapChangedWhen();
} }
} }

View File

@@ -34,7 +34,7 @@ public record CreateHistoryCommand : EnvelopeReceiverQueryBase, IRequest<History
/// <summary> /// <summary>
/// ///
/// </summary> /// </summary>
public DateTime AddedWhen { get; } = DateTime.Now; public DateTime AddedWhen { get; } = DateTime.UtcNow;
/// <summary> /// <summary>
/// ///

View File

@@ -448,7 +448,7 @@
<value>Document has been reset.</value> <value>Document has been reset.</value>
</data> </data>
<data name="DocumentSuccessfullyConfirmed" xml:space="preserve"> <data name="DocumentSuccessfullyConfirmed" xml:space="preserve">
<value>Document successfully read and confirmed!</value> <value>Document successfully red and confirmed!</value>
</data> </data>
<data name="DocumentConfirmedConfirmationMessage" xml:space="preserve"> <data name="DocumentConfirmedConfirmationMessage" xml:space="preserve">
<value>You have read and confirmed the document. You will receive a written confirmation afterwards.</value> <value>You have read and confirmed the document. You will receive a written confirmation afterwards.</value>

View File

@@ -15,7 +15,6 @@ Imports DigitalData.Core.Abstraction.Application
Imports EnvelopeGenerator.Infrastructure Imports EnvelopeGenerator.Infrastructure
Imports Microsoft.EntityFrameworkCore Imports Microsoft.EntityFrameworkCore
Imports DigitalData.Core.Abstractions Imports DigitalData.Core.Abstractions
Imports EnvelopeGenerator.Domain.Interfaces
Namespace Jobs Namespace Jobs
Public Class FinalizeDocumentJob Public Class FinalizeDocumentJob
@@ -351,7 +350,7 @@ Namespace Jobs
Logger.Warn($"No SendFinalEmailToCreator - oMailToCreator [{oMailToCreator}] <> [{FinalEmailType.No}] ") Logger.Warn($"No SendFinalEmailToCreator - oMailToCreator [{oMailToCreator}] <> [{FinalEmailType.No}] ")
End If End If
If oMailToReceivers <> FinalEmailType.No And pEnvelope.IsReadAndSign() Then If oMailToReceivers <> FinalEmailType.No Then
Logger.Debug("Sending emails to receivers..") Logger.Debug("Sending emails to receivers..")
SendFinalEmailToReceivers(pEnvelope) ', pAttachment SendFinalEmailToReceivers(pEnvelope) ', pAttachment
Else Else

View File

@@ -1,108 +0,0 @@
using Microsoft.Extensions.Configuration;
using Microsoft.Extensions.DependencyInjection;
using EnvelopeGenerator.Application;
using EnvelopeGenerator.Application.Common.Interfaces.Services;
using EnvelopeGenerator.Application.Services;
using EnvelopeGenerator.Infrastructure;
namespace EnvelopeGenerator.DependencyInjection;
/// <summary>
/// Extension methods for registering EnvelopeGenerator services into an <see cref="IServiceCollection"/>.
/// Use <see cref="AddEnvelopeGenerator"/> as the single entry-point for projects that need both the
/// application layer (MediatR, AutoMapper, CRUD services, configuration sections) and the infrastructure
/// layer (repositories, DbContext, SQL executors).
/// For projects that do not need a database (e.g. lightweight API gateways or unit-test hosts), use
/// <see cref="AddEnvelopeGeneratorCore"/> to register only the application layer.
/// </summary>
public static class DependencyInjection
{
/// <summary>
/// Registers the full EnvelopeGenerator stack application <em>and</em> infrastructure services into
/// the provided <see cref="IServiceCollection"/>.
/// <para>
/// Internally this calls <c>AddEnvelopeGeneratorServices</c> (application layer) and
/// <c>AddEnvelopeGeneratorInfrastructureServices</c> (infrastructure layer).
/// A <see cref="Microsoft.EntityFrameworkCore.DbContext"/> and / or <c>DbTriggerParams</c> must be
/// configured through <paramref name="infrastructureOptions"/>; without it no database connection will
/// be established at runtime.
/// </para>
/// </summary>
/// <param name="services">Service collection to register services into.</param>
/// <param name="configuration">
/// Application configuration. Used to bind <c>DispatcherParams</c>, <c>MailParams</c>,
/// <c>AuthenticatorParams</c>, <c>TotpSmsParams</c>, <c>GtxMessagingParams</c> and other
/// application-level option sections.
/// </param>
/// <param name="infrastructureOptions">
/// Optional callback to configure the infrastructure layer registration.
/// Typical usage:
/// <code>
/// services.AddEnvelopeGenerator(config, opt =>
/// {
/// opt.AddDbContext(o => o.UseSqlServer(connectionString));
/// opt.AddDbTriggerParams(config);
/// });
/// </code>
/// </param>
/// <returns>The updated <see cref="IServiceCollection"/>.</returns>
#pragma warning disable CS0618 // AddEnvelopeGeneratorServices / AddEnvelopeGeneratorInfrastructureServices are intentionally wrapped here
public static IServiceCollection AddEnvelopeGenerator(
this IServiceCollection services,
IConfiguration configuration,
Action<EnvelopeGenerator.Infrastructure.DependencyInjection.Config>? infrastructureOptions = null)
{
// Application layer: CRUD services, MediatR, AutoMapper, configuration sections.
services.AddEnvelopeGeneratorServices(configuration);
// Infrastructure layer: repositories, DbContext, Dapper type maps, SQL executors.
services.AddEnvelopeGeneratorInfrastructureServices(opt =>
{
infrastructureOptions?.Invoke(opt);
});
return services;
}
#pragma warning restore CS0618
/// <summary>
/// Registers only the <em>application</em> layer services (MediatR handlers, AutoMapper profiles,
/// CRUD services, configuration sections) without any infrastructure / database dependencies.
/// <para>
/// Useful for projects that already manage their own DbContext or do not require direct database
/// access, such as lightweight API gateways, console tools or unit/integration test hosts that
/// use an in-memory database configured elsewhere.
/// </para>
/// </summary>
/// <param name="services">Service collection to register services into.</param>
/// <param name="configuration">Application configuration used to bind application-level option sections.</param>
/// <returns>The updated <see cref="IServiceCollection"/>.</returns>
#pragma warning disable CS0618
public static IServiceCollection AddEnvelopeGeneratorCore(
this IServiceCollection services,
IConfiguration configuration)
{
services.AddEnvelopeGeneratorServices(configuration);
return services;
}
#pragma warning restore CS0618
/// <summary>
/// Registers <see cref="EnvelopeMailService"/> as the <see cref="IEnvelopeMailService"/> scoped
/// implementation.
/// <para>
/// Call this in addition to <see cref="AddEnvelopeGenerator"/> when the consuming project needs to
/// send envelope e-mails directly (e.g. a Worker Service or the Web project). Projects that rely
/// purely on MediatR commands to trigger mail delivery do not need to call this.
/// </para>
/// </summary>
/// <param name="services">Service collection to register services into.</param>
/// <returns>The updated <see cref="IServiceCollection"/>.</returns>
#pragma warning disable CS0618
public static IServiceCollection AddEnvelopeMailService(this IServiceCollection services)
{
services.AddScoped<IEnvelopeMailService, EnvelopeMailService>();
return services;
}
#pragma warning restore CS0618
}

View File

@@ -1,39 +0,0 @@
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<TargetFrameworks>net7.0;net8.0;net9.0</TargetFrameworks>
<ImplicitUsings>enable</ImplicitUsings>
<Nullable>enable</Nullable>
<!-- NuGet package metadata -->
<PackageId>EnvelopeGenerator</PackageId>
<Authors>Digital Data GmbH</Authors>
<Company>Digital Data GmbH</Company>
<Product>EnvelopeGenerator</Product>
<Description>
Envelope Generator ist eine Bibliothek zur Verwaltung und Verarbeitung digitaler Umschläge (Envelopes).
Dieses Paket enthält die Dependency-Injection-Erweiterungsmethoden und bündelt die Application-
sowie Infrastructure-Schicht in einer einzigen NuGet-Referenz.
</Description>
<Copyright>Copyright 2024 Digital Data GmbH</Copyright>
<RepositoryUrl>http://git.dd:3000/AppStd/EnvelopeGenerator.git</RepositoryUrl>
<PackageTags>digital data envelope generator di dependency injection</PackageTags>
<PackageRequireLicenseAcceptance>false</PackageRequireLicenseAcceptance>
<Version>1.0.0</Version>
<AssemblyVersion>1.0.0</AssemblyVersion>
<FileVersion>1.0.0</FileVersion>
<GeneratePackageOnBuild>false</GeneratePackageOnBuild>
</PropertyGroup>
<ItemGroup>
<PackageReference Include="Microsoft.Extensions.Configuration.Abstractions" Version="9.0.6" />
<PackageReference Include="Microsoft.Extensions.DependencyInjection.Abstractions" Version="9.0.6" />
</ItemGroup>
<ItemGroup>
<ProjectReference Include="..\EnvelopeGenerator.Application\EnvelopeGenerator.Application.csproj" />
<ProjectReference Include="..\EnvelopeGenerator.Domain\EnvelopeGenerator.Domain.csproj" />
<ProjectReference Include="..\EnvelopeGenerator.Infrastructure\EnvelopeGenerator.Infrastructure.csproj" />
</ItemGroup>
</Project>

View File

@@ -47,8 +47,6 @@ public abstract class EGDbContextBase : DbContext
public DbSet<Signature> DocumentReceiverElements { get; set; } public DbSet<Signature> DocumentReceiverElements { get; set; }
public DbSet<ElementAnnotation> DocumentReceiverElementAnnotations { get; set; }
public DbSet<DocumentStatus> DocumentStatus { get; set; } public DbSet<DocumentStatus> DocumentStatus { get; set; }
public DbSet<EmailTemplate> EmailTemplate { get; set; } public DbSet<EmailTemplate> EmailTemplate { get; set; }

View File

@@ -215,7 +215,7 @@ public static class Extensions
Title = faker.Lorem.Paragraph(faker.Random.Number(1, 2)), Title = faker.Lorem.Paragraph(faker.Random.Number(1, 2)),
Message = faker.Lorem.Paragraph(faker.Random.Number(2, 5)), Message = faker.Lorem.Paragraph(faker.Random.Number(2, 5)),
TfaEnabled = tfaEnabled, TfaEnabled = tfaEnabled,
AddedWhen = DateTime.Now, AddedWhen = DateTime.UtcNow,
CertificationType = (int)CertificationType.AdvancedElectronicSignature, CertificationType = (int)CertificationType.AdvancedElectronicSignature,
UseAccessCode = false, UseAccessCode = false,
ContractType = (int)ContractType.Contract, ContractType = (int)ContractType.Contract,
@@ -273,9 +273,9 @@ public static class Extensions
EnvelopeId = envelopeId, EnvelopeId = envelopeId,
ReceiverId = receiverId, ReceiverId = receiverId,
Status = ReceiverStatus.Unsigned, Status = ReceiverStatus.Unsigned,
AddedWhen = DateTime.Now, AddedWhen = DateTime.UtcNow,
AccessCode = faker.Random.Number(1000, 9999).ToString(), AccessCode = faker.Random.Number(1000, 9999).ToString(),
ChangedWhen = DateTime.Now, ChangedWhen = DateTime.UtcNow,
CompanyName = faker.Company.CompanyName(), CompanyName = faker.Company.CompanyName(),
JobTitle = faker.Name.JobTitle(), JobTitle = faker.Name.JobTitle(),
Name = faker.Name.FullName(), Name = faker.Name.FullName(),

View File

@@ -12,9 +12,9 @@
<PackageTags>digital data envelope generator web</PackageTags> <PackageTags>digital data envelope generator web</PackageTags>
<Description>EnvelopeGenerator.Web is an ASP.NET MVC application developed to manage signing processes. It uses Entity Framework Core (EF Core) for database operations. The user interface for signing processes is developed with Razor View Engine (.cshtml files) and JavaScript under wwwroot, integrated with PSPDFKit. This integration allows users to view and sign documents seamlessly.</Description> <Description>EnvelopeGenerator.Web is an ASP.NET MVC application developed to manage signing processes. It uses Entity Framework Core (EF Core) for database operations. The user interface for signing processes is developed with Razor View Engine (.cshtml files) and JavaScript under wwwroot, integrated with PSPDFKit. This integration allows users to view and sign documents seamlessly.</Description>
<ApplicationIcon>Assets\icon.ico</ApplicationIcon> <ApplicationIcon>Assets\icon.ico</ApplicationIcon>
<Version>3.12.3</Version> <!-- NuGet package version --> <Version>3.12.2</Version> <!-- NuGet package version -->
<AssemblyVersion>3.12.3.0</AssemblyVersion> <!-- Assembly version for API compatibility --> <AssemblyVersion>3.12.2.0</AssemblyVersion> <!-- Assembly version for API compatibility -->
<FileVersion>3.12.3.0</FileVersion> <!-- Windows file version --> <FileVersion>3.12.2.0</FileVersion> <!-- Windows file version -->
<Copyright>Copyright © 2025 Digital Data GmbH. All rights reserved.</Copyright> <Copyright>Copyright © 2025 Digital Data GmbH. All rights reserved.</Copyright>
</PropertyGroup> </PropertyGroup>

View File

@@ -1,7 +1,7 @@
{ {
"UseDbMigration": false, "UseDbMigration": false,
"ConnectionStrings": { "ConnectionStrings": {
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;", "Default": "Server=10.1.6.7;Database=DD_ECM;User Id=DD_ECM;Password=dd_ecm;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;" "DbMigrationTest": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
}, },
"DbTriggerParams": { "DbTriggerParams": {

View File

@@ -10,7 +10,7 @@
"NLog": { "NLog": {
"throwConfigExceptions": true, "throwConfigExceptions": true,
"variables": { "variables": {
"logDirectory": "E:\\LogFiles\\Digital Data\\signFlow", "logDirectory": "F:\\LogFiles\\signFLOW",
"logFileNamePrefix": "${shortdate}-ECM.EnvelopeGenerator.Web" "logFileNamePrefix": "${shortdate}-ECM.EnvelopeGenerator.Web"
}, },
"targets": { "targets": {

View File

@@ -1,3 +1,3 @@
{ {
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==" "PSPDFKitLicenseKey": "Lr5MhhvIID0IXu3rLgw5P385B8cuo2BGd7dxrTfPddsaN0Mtak8CaqSiGNFcjiDC5ZSOMkvxmh5f2azXrLaWk0yDPyOiAdkc2zZHhv5d3nvGINki7zsJMd4_8f9-gismBGfwQtHO3MU7im-UVeYAzaE6DUg6Ja7mcJ2JNcCoPTqFsBjwriW413wYNFKF3A49WdFS93tNc2auYka8XrGv6DjgajeVr25Y2YRzsg-9O6WtKEhUK10PC0BgwYCTfiERKrdUX1jJCxjpHqJKxI8s59m3-2s3TrzUOMgnVVfA6HvZDPpucD8XKpudloQfTXCCdKyeOwflxzFMNdrVtjIxz4iZabv5e2Zpch3LreGmFLfS6Bz9p0DJhLZ5zKpFWfvsJqRRTmeWZkPZp_0yOvlN-7lT1Z6nMWdznX5Sp6KdH9ZX3QgumUZEyKKLp5NWVa73mS9xlJ93--KX5Y6BqiOURw0golIWya4qg2P0S2brDJb6ejSCIpHIuLFVXQAVQpQZJ48naZNPiP8jcDmz7ziDEntFRSbw1nMAvCcdakQOLQ5DHzSKML5eDxanRL5zAIzX6PdZhQHIKZ0eIsjr6b_r8yc84C3Cv9kcexbrO9OEnw6hMARkP2TXsSRcDuC0Eety4CU4GpEuatXqUOMhkpQkg6nNctL24APZX47ZKqbHfkU=",
} }

View File

@@ -10,7 +10,7 @@
"media-src 'self'", "media-src 'self'",
"object-src 'self'" "object-src 'self'"
], ],
"AllowedOrigins": [ "https://localhost:7202", "https://digitale.unterschrift.wisag.de/" ], "AllowedOrigins": [ "http://localhost:8080", "https://digitale.unterschrift.wisag.de/" ],
"TFARegParams": { "TFARegParams": {
"TimeLimit": "90.00:00:00" "TimeLimit": "90.00:00:00"
} }

View File

@@ -114,10 +114,10 @@
} }
}, },
"Company": { "Company": {
"Src": "/img/digital_data.svg", "Src": "/img/wisag.svg",
"Classes": { "Classes": {
"Show": "dd-show-logo", "Show": "wisag-show-logo",
"Locked": "dd-locked-logo" "Locked": "wisag-locked-logo"
} }
} }
}, },

View File

@@ -1 +1 @@
function detailedCurrentDate(){return new Intl.DateTimeFormat(getCurrentCulture(),{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"shortOffset"}).format()}function findNearest(n,t,i,r){const u=r=>Math.sqrt((t(n)-t(r))**2+(i(n)-i(r))**2);return r.reduce((n,t)=>{const i=u(t);return i<n.dist?{dist:i,dest:t}:n},{dist:Infinity,dest:null}).dest}const getCurrentCulture=()=>typeof localized!="undefined"&&localized.culture?localized.culture:navigator.language||"en-US",B64ToBuff=n=>new Uint8Array(Array.from(atob(n),n=>n.charCodeAt(0))).buffer,getLocaleDateString=()=>(new Date).toLocaleDateString(getCurrentCulture()); function detailedCurrentDate(){return new Intl.DateTimeFormat(getCurrentCulture(),{day:"2-digit",month:"2-digit",year:"numeric",hour:"2-digit",minute:"2-digit",second:"2-digit",timeZoneName:"shortOffset"}).format()}function findNearest(e,t,o,n){const r=n.reduce(((n,r)=>{const i=Math.sqrt((t(e)-t(r))**2+(o(e)-o(r))**2);return i<n.dist?{dist:i,dest:r}:n}),{dist:1/0,dest:null});return r.dest}const getCurrentCulture=()=>("undefined"!=typeof localized&&localized.culture)?localized.culture:navigator.language||"en-US";const B64ToBuff=e=>new Uint8Array(Array.from(atob(e),e=>e.charCodeAt(0))).buffer;const getLocaleDateString=e=>new Date().toLocaleDateString(getCurrentCulture());

View File

@@ -35,8 +35,6 @@ Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.Tests", "
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.API", "EnvelopeGenerator.API\EnvelopeGenerator.API.csproj", "{EC768913-6270-14F4-1DD3-69C87A659462}" Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.API", "EnvelopeGenerator.API\EnvelopeGenerator.API.csproj", "{EC768913-6270-14F4-1DD3-69C87A659462}"
EndProject EndProject
Project("{FAE04EC0-301F-11D3-BF4B-00C04F79EFBC}") = "EnvelopeGenerator.DependencyInjection", "EnvelopeGenerator.DependencyInjection\EnvelopeGenerator.DependencyInjection.csproj", "{90FE0312-8C38-4347-9EA2-0A719E255D5C}"
EndProject
Global Global
GlobalSection(SolutionConfigurationPlatforms) = preSolution GlobalSection(SolutionConfigurationPlatforms) = preSolution
Debug|Any CPU = Debug|Any CPU Debug|Any CPU = Debug|Any CPU
@@ -87,10 +85,6 @@ Global
{EC768913-6270-14F4-1DD3-69C87A659462}.Debug|Any CPU.Build.0 = Debug|Any CPU {EC768913-6270-14F4-1DD3-69C87A659462}.Debug|Any CPU.Build.0 = Debug|Any CPU
{EC768913-6270-14F4-1DD3-69C87A659462}.Release|Any CPU.ActiveCfg = Release|Any CPU {EC768913-6270-14F4-1DD3-69C87A659462}.Release|Any CPU.ActiveCfg = Release|Any CPU
{EC768913-6270-14F4-1DD3-69C87A659462}.Release|Any CPU.Build.0 = Release|Any CPU {EC768913-6270-14F4-1DD3-69C87A659462}.Release|Any CPU.Build.0 = Release|Any CPU
{90FE0312-8C38-4347-9EA2-0A719E255D5C}.Debug|Any CPU.ActiveCfg = Release|Any CPU
{90FE0312-8C38-4347-9EA2-0A719E255D5C}.Debug|Any CPU.Build.0 = Release|Any CPU
{90FE0312-8C38-4347-9EA2-0A719E255D5C}.Release|Any CPU.ActiveCfg = Release|Any CPU
{90FE0312-8C38-4347-9EA2-0A719E255D5C}.Release|Any CPU.Build.0 = Release|Any CPU
EndGlobalSection EndGlobalSection
GlobalSection(SolutionProperties) = preSolution GlobalSection(SolutionProperties) = preSolution
HideSolutionNode = FALSE HideSolutionNode = FALSE
@@ -110,7 +104,6 @@ Global
{211619F5-AE25-4BA5-A552-BACAFE0632D3} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB} {211619F5-AE25-4BA5-A552-BACAFE0632D3} = {9943209E-1744-4944-B1BA-4F87FC1A0EEB}
{224C4845-1CDE-22B7-F3A9-1FF9297F70E8} = {0CBC2432-A561-4440-89BC-671B66A24146} {224C4845-1CDE-22B7-F3A9-1FF9297F70E8} = {0CBC2432-A561-4440-89BC-671B66A24146}
{EC768913-6270-14F4-1DD3-69C87A659462} = {E3C758DC-914D-4B7E-8457-0813F1FDB0CB} {EC768913-6270-14F4-1DD3-69C87A659462} = {E3C758DC-914D-4B7E-8457-0813F1FDB0CB}
{90FE0312-8C38-4347-9EA2-0A719E255D5C} = {E3C758DC-914D-4B7E-8457-0813F1FDB0CB}
EndGlobalSection EndGlobalSection
GlobalSection(ExtensibilityGlobals) = postSolution GlobalSection(ExtensibilityGlobals) = postSolution
SolutionGuid = {73E60370-756D-45AD-A19A-C40A02DACCC7} SolutionGuid = {73E60370-756D-45AD-A19A-C40A02DACCC7}