Compare commits

..

4 Commits

Author SHA1 Message Date
64c018b92e Add DbSets for ElementAnnotation and DocumentStatus
Added DocumentReceiverElementAnnotations (ElementAnnotation) and DocumentStatus DbSet properties to EGDbContextBase to support database operations for these entities.
2026-03-12 16:11:50 +01:00
176672d7eb Add interface import and update email sending condition
Added import for EnvelopeGenerator.Domain.Interfaces. Updated logic to send final emails to receivers only if the envelope requires "Read and Sign," adding an extra check to the email dispatch condition.
2026-03-11 17:45:27 +01:00
05d54e87c3 Bump version to 3.12.3 in project file
Updated EnvelopeGenerator.Web.csproj to increment <Version>, <AssemblyVersion>, and <FileVersion> from 3.12.2 to 3.12.3, preparing for a new release. No other changes included.
2026-03-11 14:19:15 +01:00
06c2a07fbc Replace DateTime.UtcNow with DateTime.Now for timestamps
Switched all audit and creation timestamps from UTC to local time
by replacing DateTime.UtcNow with DateTime.Now across the codebase.
This affects audit fields, object creation, and default values for
date/time properties.
2026-03-11 14:11:23 +01:00
13 changed files with 22 additions and 19 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.UtcNow)); => expression.ForMember(dest => dest.AddedWhen, opt => opt.MapFrom(_ => DateTime.Now));
/// <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.UtcNow)); => expression.ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(_ => DateTime.Now));
} }

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.UtcNow, AddedWhen = DateTime.Now,
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.UtcNow)) .ForMember(dest => dest.StatusChangedWhen, opt => opt.MapFrom(src => DateTime.Now))
.MapChangedWhen(); .MapChangedWhen();
} }
} }

View File

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

View File

@@ -15,6 +15,7 @@ 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
@@ -350,7 +351,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 Then If oMailToReceivers <> FinalEmailType.No And pEnvelope.IsReadAndSign() Then
Logger.Debug("Sending emails to receivers..") Logger.Debug("Sending emails to receivers..")
SendFinalEmailToReceivers(pEnvelope) ', pAttachment SendFinalEmailToReceivers(pEnvelope) ', pAttachment
Else Else

View File

@@ -47,6 +47,8 @@ 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.UtcNow, AddedWhen = DateTime.Now,
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.UtcNow, AddedWhen = DateTime.Now,
AccessCode = faker.Random.Number(1000, 9999).ToString(), AccessCode = faker.Random.Number(1000, 9999).ToString(),
ChangedWhen = DateTime.UtcNow, ChangedWhen = DateTime.Now,
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.2</Version> <!-- NuGet package version --> <Version>3.12.3</Version> <!-- NuGet package version -->
<AssemblyVersion>3.12.2.0</AssemblyVersion> <!-- Assembly version for API compatibility --> <AssemblyVersion>3.12.3.0</AssemblyVersion> <!-- Assembly version for API compatibility -->
<FileVersion>3.12.2.0</FileVersion> <!-- Windows file version --> <FileVersion>3.12.3.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=10.1.6.7;Database=DD_ECM;User Id=DD_ECM;Password=dd_ecm;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;" "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": "F:\\LogFiles\\signFLOW", "logDirectory": "E:\\LogFiles\\Digital Data\\signFlow",
"logFileNamePrefix": "${shortdate}-ECM.EnvelopeGenerator.Web" "logFileNamePrefix": "${shortdate}-ECM.EnvelopeGenerator.Web"
}, },
"targets": { "targets": {

View File

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

View File

@@ -10,7 +10,7 @@
"media-src 'self'", "media-src 'self'",
"object-src 'self'" "object-src 'self'"
], ],
"AllowedOrigins": [ "http://localhost:8080", "https://digitale.unterschrift.wisag.de/" ], "AllowedOrigins": [ "https://localhost:7202", "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/wisag.svg", "Src": "/img/digital_data.svg",
"Classes": { "Classes": {
"Show": "wisag-show-logo", "Show": "dd-show-logo",
"Locked": "wisag-locked-logo" "Locked": "dd-locked-logo"
} }
} }
}, },