Compare commits
22 Commits
eb96842122
...
03e3e0eaf4
| Author | SHA1 | Date | |
|---|---|---|---|
| 03e3e0eaf4 | |||
| c8ca1ef22a | |||
| d31916eab8 | |||
| ee7c92ff5b | |||
| 89db852705 | |||
| c674a450d8 | |||
| 910a870ddf | |||
| e2afbc5a62 | |||
| 0fb94decdd | |||
| 2c81583831 | |||
| 47eade57a3 | |||
| d094fe14da | |||
| 0dc356726b | |||
| b227eb4051 | |||
| de36e29743 | |||
| 6291712291 | |||
| 73527a97d7 | |||
| ff094ebfe1 | |||
| 1c948fcbf8 | |||
| eba40acd4d | |||
| 5cb3465e12 | |||
| 2c43fdbaed |
@@ -1,17 +1,14 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using EnvelopeGenerator.Application.EmailTemplates;
|
using EnvelopeGenerator.Application.EmailTemplates.Commands;
|
||||||
using EnvelopeGenerator.Application.EmailTemplates.Commands.Update;
|
|
||||||
using EnvelopeGenerator.Application.EmailTemplates.Commands.Reset;
|
|
||||||
using EnvelopeGenerator.Application.EmailTemplates.Queries.Read;
|
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using MediatR;
|
using MediatR;
|
||||||
using System.Threading.Tasks;
|
|
||||||
using EnvelopeGenerator.Application.Common.Dto;
|
using EnvelopeGenerator.Application.Common.Dto;
|
||||||
using DigitalData.Core.Abstraction.Application.Repository;
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using EnvelopeGenerator.Domain.Constants;
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
|
using EnvelopeGenerator.Application.EmailTemplates.Queries;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.API.Controllers;
|
namespace EnvelopeGenerator.API.Controllers;
|
||||||
|
|
||||||
@@ -64,40 +61,17 @@ public class EmailTemplateController(IMapper mapper, IRepository<EmailTemplate>
|
|||||||
/// Updates an temp template or resets it if no update command is provided.
|
/// Updates an temp template or resets it if no update command is provided.
|
||||||
/// Aktualisiert eine E-Mail-Vorlage oder setzt sie zurück, wenn kein Aktualisierungsbefehl angegeben ist.
|
/// Aktualisiert eine E-Mail-Vorlage oder setzt sie zurück, wenn kein Aktualisierungsbefehl angegeben ist.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="temp">Die E-Mail-Vorlagenabfrage.</param>
|
/// <param name="update"></param>
|
||||||
/// <param name="update">Der Aktualisierungsbefehl für die E-Mail-Vorlage.
|
/// <param name="cancel"></param>
|
||||||
/// Wird auf Standardwert aktualisiert, wenn die Anfrage ohne http-Body gesendet wird.
|
/// <returns></returns>
|
||||||
/// </param>
|
|
||||||
/// <returns>Gibt HTTP-Antwort zurück</returns>
|
|
||||||
/// <remarks>
|
|
||||||
/// Sample request:
|
|
||||||
/// PUT /api/EmailTemplate
|
|
||||||
/// {
|
|
||||||
/// "emailTemplateId": 123,
|
|
||||||
/// "newContent": "Updated content"
|
|
||||||
/// }
|
|
||||||
/// </remarks>
|
|
||||||
/// <response code="200">Wenn die E-Mail-Vorlage erfolgreich aktualisiert oder zurückgesetzt wird.</response>
|
/// <response code="200">Wenn die E-Mail-Vorlage erfolgreich aktualisiert oder zurückgesetzt wird.</response>
|
||||||
/// <response code="400">Wenn die Abfrage ohne einen String gesendet wird.</response>
|
/// <response code="400">Wenn die Abfrage ohne einen String gesendet wird.</response>
|
||||||
/// <response code="401">Wenn der Benutzer nicht authentifiziert ist.</response>
|
/// <response code="401">Wenn der Benutzer nicht authentifiziert ist.</response>
|
||||||
/// <response code="404">Wenn die gesuchte Abfrage nicht gefunden wird.</response>
|
/// <response code="404">Wenn die gesuchte Abfrage nicht gefunden wird.</response>
|
||||||
[HttpPut]
|
[HttpPut]
|
||||||
public async Task<IActionResult> Update([FromQuery] EmailTemplateQueryBase? temp = null, [FromBody] UpdateEmailTemplateCommand? update = null)
|
public async Task<IActionResult> Update([FromBody] UpdateEmailTemplateCommand update, CancellationToken cancel)
|
||||||
{
|
{
|
||||||
if (update is null)
|
await mediator.Send(update, cancel);
|
||||||
{
|
|
||||||
await mediator.Send(new ResetEmailTemplateCommand(temp));
|
|
||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
else if (temp is null)
|
|
||||||
{
|
|
||||||
return BadRequest("No both id and type");
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
update.EmailTemplateQuery = temp;
|
|
||||||
await mediator.Send(update);
|
|
||||||
return Ok();
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,36 @@
|
|||||||
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
|
using MediatR;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.Common.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TCommand"></typeparam>
|
||||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||||
|
public class CreateCommandHandler<TCommand, TEntity> : IRequestHandler<TCommand, TEntity>
|
||||||
|
where TCommand : class, IRequest<TEntity>
|
||||||
|
where TEntity : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
protected readonly IRepository<TEntity> Repository;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="repository"></param>
|
||||||
|
public CreateCommandHandler(IRepository<TEntity> repository)
|
||||||
|
{
|
||||||
|
Repository = repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="cancel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Task<TEntity> Handle(TCommand request, CancellationToken cancel) => Repository.CreateAsync(request, cancel);
|
||||||
|
}
|
||||||
@@ -0,0 +1,59 @@
|
|||||||
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
|
using MediatR;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.Common.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TUpdateDto"></typeparam>
|
||||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||||
|
public abstract record UpdateCommand<TUpdateDto, TEntity> : IRequest where TUpdateDto : class where TEntity : class
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public TUpdateDto Update { get; init; } = null!;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public abstract Expression<Func<TEntity, bool>> BuildQueryExpression();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <typeparam name="TCommand"></typeparam>
|
||||||
|
/// <typeparam name="TUpdateDto"></typeparam>
|
||||||
|
/// <typeparam name="TEntity"></typeparam>
|
||||||
|
public class UpdateCommandHandler<TCommand, TUpdateDto, TEntity> : IRequestHandler<TCommand>
|
||||||
|
where TUpdateDto : class
|
||||||
|
where TEntity : class
|
||||||
|
where TCommand : UpdateCommand<TUpdateDto, TEntity>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
protected readonly IRepository<TEntity> Repository;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="repository"></param>
|
||||||
|
public UpdateCommandHandler(IRepository<TEntity> repository)
|
||||||
|
{
|
||||||
|
Repository = repository;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="request"></param>
|
||||||
|
/// <param name="cancel"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public Task Handle(TCommand request, CancellationToken cancel)
|
||||||
|
=> Repository.UpdateAsync(request.Update, request.BuildQueryExpression(), cancel);
|
||||||
|
}
|
||||||
@@ -28,8 +28,8 @@ public class MappingProfile : Profile
|
|||||||
CreateMap<EmailTemplate, EmailTemplateDto>();
|
CreateMap<EmailTemplate, EmailTemplateDto>();
|
||||||
CreateMap<Envelope, EnvelopeDto>();
|
CreateMap<Envelope, EnvelopeDto>();
|
||||||
CreateMap<Document, DocumentDto>();
|
CreateMap<Document, DocumentDto>();
|
||||||
CreateMap<Domain.Entities.History, HistoryDto>();
|
CreateMap<Domain.Entities.History, HistoryDto>().ForMember(dest => dest.ActionDate, opt => opt.MapFrom(src => src.ChangedWhen));
|
||||||
CreateMap<Domain.Entities.History, HistoryCreateDto>();
|
CreateMap<Domain.Entities.History, HistoryCreateDto>().ForMember(dest => dest.ActionDate, opt => opt.MapFrom(src => src.ChangedWhen));
|
||||||
CreateMap<Domain.Entities.EnvelopeReceiver, EnvelopeReceiverDto>();
|
CreateMap<Domain.Entities.EnvelopeReceiver, EnvelopeReceiverDto>();
|
||||||
CreateMap<Domain.Entities.EnvelopeReceiver, EnvelopeReceiverSecretDto>();
|
CreateMap<Domain.Entities.EnvelopeReceiver, EnvelopeReceiverSecretDto>();
|
||||||
CreateMap<EnvelopeType, EnvelopeTypeDto>();
|
CreateMap<EnvelopeType, EnvelopeTypeDto>();
|
||||||
@@ -44,15 +44,15 @@ public class MappingProfile : Profile
|
|||||||
CreateMap<EmailTemplateDto, EmailTemplate>();
|
CreateMap<EmailTemplateDto, EmailTemplate>();
|
||||||
CreateMap<EnvelopeDto, Envelope>();
|
CreateMap<EnvelopeDto, Envelope>();
|
||||||
CreateMap<DocumentDto, Document>();
|
CreateMap<DocumentDto, Document>();
|
||||||
CreateMap<HistoryDto, Domain.Entities.History>();
|
CreateMap<HistoryDto, Domain.Entities.History>().ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(src => src.ActionDate));
|
||||||
CreateMap<HistoryCreateDto, Domain.Entities.History>();
|
CreateMap<HistoryCreateDto, Domain.Entities.History>().ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(src => src.ActionDate));
|
||||||
CreateMap<EnvelopeReceiverDto, Domain.Entities.EnvelopeReceiver>();
|
CreateMap<EnvelopeReceiverDto, Domain.Entities.EnvelopeReceiver>();
|
||||||
CreateMap<EnvelopeTypeDto, EnvelopeType>();
|
CreateMap<EnvelopeTypeDto, EnvelopeType>();
|
||||||
CreateMap<ReceiverDto, Domain.Entities.Receiver>().ForMember(rcv => rcv.EnvelopeReceivers, rcvReadDto => rcvReadDto.Ignore());
|
CreateMap<ReceiverDto, Domain.Entities.Receiver>().ForMember(rcv => rcv.EnvelopeReceivers, rcvReadDto => rcvReadDto.Ignore());
|
||||||
CreateMap<EnvelopeReceiverReadOnlyCreateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
CreateMap<EnvelopeReceiverReadOnlyCreateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
||||||
CreateMap<EnvelopeReceiverReadOnlyUpdateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
CreateMap<EnvelopeReceiverReadOnlyUpdateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
||||||
CreateMap<AnnotationCreateDto, ElementAnnotation>()
|
CreateMap<AnnotationCreateDto, ElementAnnotation>()
|
||||||
.ForMember(dest => dest.AddedWhen, opt => opt.MapFrom(_ => DateTime.UtcNow));
|
.MapAddedWhen();
|
||||||
|
|
||||||
// Messaging mappings
|
// Messaging mappings
|
||||||
// for GTX messaging
|
// for GTX messaging
|
||||||
|
|||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.Common.Extensions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Extension methods for applying auditing timestamps during AutoMapper mappings.
|
||||||
|
/// </summary>
|
||||||
|
public static class AutoMapperAuditingExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Maps <see cref="IHasAddedWhen.AddedWhen"/> to the current UTC time.
|
||||||
|
/// </summary>
|
||||||
|
public static IMappingExpression<TSource, TDestination> MapAddedWhen<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
|
||||||
|
where TDestination : IHasAddedWhen
|
||||||
|
=> expression.ForMember(dest => dest.AddedWhen, opt => opt.MapFrom(_ => DateTime.UtcNow));
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Maps <see cref="IHasChangedWhen.ChangedWhen"/> to the current UTC time.
|
||||||
|
/// </summary>
|
||||||
|
public static IMappingExpression<TSource, TDestination> MapChangedWhen<TSource, TDestination>(this IMappingExpression<TSource, TDestination> expression)
|
||||||
|
where TDestination : IHasChangedWhen
|
||||||
|
=> expression.ForMember(dest => dest.ChangedWhen, opt => opt.MapFrom(_ => DateTime.UtcNow));
|
||||||
|
}
|
||||||
@@ -1,12 +1,31 @@
|
|||||||
namespace EnvelopeGenerator.Application.DocStatus.Commands;
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
|
using EnvelopeGenerator.Application.Common.Commands;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
using MediatR;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DocStatus.Commands;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record CreateDocStatusCommand : ModifyDocStatusCommandBase
|
public record CreateDocStatusCommand : ModifyDocStatusCommandBase, IRequest<DocumentStatus>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets timestamp when this record was added. Returns the StatusChangedWhen value.
|
/// Gets timestamp when this record was added. Returns the StatusChangedWhen value.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public DateTime AddedWhen => StatusChangedWhen;
|
public DateTime AddedWhen => StatusChangedWhen;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class CreateDocStatusCommandHandler : CreateCommandHandler<CreateDocStatusCommand, DocumentStatus>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="repository"></param>
|
||||||
|
public CreateDocStatusCommandHandler(IRepository<DocumentStatus> repository) : base(repository)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,4 +1,5 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
|
using EnvelopeGenerator.Application.Common.Extensions;
|
||||||
using EnvelopeGenerator.Application.DocStatus.Commands;
|
using EnvelopeGenerator.Application.DocStatus.Commands;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
@@ -16,10 +17,12 @@ public class MappingProfile : Profile
|
|||||||
{
|
{
|
||||||
CreateMap<CreateDocStatusCommand, DocumentStatus>()
|
CreateMap<CreateDocStatusCommand, 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())
|
||||||
|
.MapAddedWhen();
|
||||||
|
|
||||||
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())
|
||||||
|
.MapChangedWhen();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,41 +0,0 @@
|
|||||||
using EnvelopeGenerator.Domain;
|
|
||||||
using EnvelopeGenerator.Domain.Constants;
|
|
||||||
using MediatR;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Reset;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Ein Befehl zum Zurücksetzen einer E-Mail-Vorlage auf die Standardwerte.
|
|
||||||
/// Erbt von <see cref="EmailTemplateQueryBase"/> und ermöglicht die Angabe einer optionalen ID und eines Typs der E-Mail-Vorlage.<br/><br/>
|
|
||||||
/// Beispiele:<br/>
|
|
||||||
/// 0 - DocumentReceived: Benachrichtigung über den Empfang eines Dokuments.<br/>
|
|
||||||
/// 1 - DocumentSigned: Benachrichtigung über die Unterzeichnung eines Dokuments.<br/>
|
|
||||||
/// 2 - DocumentDeleted: Benachrichtigung über das Löschen eines Dokuments.<br/>
|
|
||||||
/// 3 - DocumentCompleted: Benachrichtigung über den Abschluss eines Dokuments.<br/>
|
|
||||||
/// 4 - DocumentAccessCodeReceived: Benachrichtigung über den Erhalt eines Zugangscodes.<br/>
|
|
||||||
/// 5 - DocumentShared: Benachrichtigung über das Teilen eines Dokuments.<br/>
|
|
||||||
/// 6 - TotpSecret: Benachrichtigung über ein TOTP-Geheimnis.<br/>
|
|
||||||
/// 7 - DocumentRejected_ADM (Für den Absender): Mail an den Absender, wenn das Dokument abgelehnt wird.<br/>
|
|
||||||
/// 8 - DocumentRejected_REC (Für den ablehnenden Empfänger): Mail an den ablehnenden Empfänger, wenn das Dokument abgelehnt wird.<br/>
|
|
||||||
/// 9 - DocumentRejected_REC_2 (Für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.<br/>
|
|
||||||
/// </summary>
|
|
||||||
public record ResetEmailTemplateCommand : EmailTemplateQueryBase, IRequest
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="orginal"></param>
|
|
||||||
public ResetEmailTemplateCommand(EmailTemplateQueryBase? orginal = null) : base(orginal ?? new())
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="Id">Die optionale ID der E-Mail-Vorlage, die zurückgesetzt werden soll.</param>
|
|
||||||
/// <param name="Type">Der Typ der E-Mail-Vorlage, z. B. <see cref="EmailTemplateType"/> (optional).</param>
|
|
||||||
public ResetEmailTemplateCommand(int? Id = null, EmailTemplateType? Type = null) : base(Id, Type)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
};
|
|
||||||
@@ -1,11 +1,38 @@
|
|||||||
using DigitalData.Core.Abstraction.Application.Repository;
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
|
using MediatR;
|
||||||
using EnvelopeGenerator.Application.Common.Dto;
|
using EnvelopeGenerator.Application.Common.Dto;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using MediatR;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
using System.Linq;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Reset;
|
namespace EnvelopeGenerator.Application.EmailTemplates.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Ein Befehl zum Zurücksetzen einer E-Mail-Vorlage auf die Standardwerte.
|
||||||
|
/// Erbt von <see cref="IEmailTemplateQuery"/> und ermöglicht die Angabe einer optionalen ID und eines Typs der E-Mail-Vorlage.<br/><br/>
|
||||||
|
/// </summary>
|
||||||
|
public record ResetEmailTemplateCommand : IEmailTemplateQuery, IRequest
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Die eindeutige Kennung der E-Mail-Vorlage (optional).
|
||||||
|
/// </summary>
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Der Typ der E-Mail-Vorlage, z. B. <see cref="EmailTemplateType"/> (optional). Beispiele:<br/>
|
||||||
|
/// 0 - DocumentReceived: Benachrichtigung über den Empfang eines Dokuments.<br/>
|
||||||
|
/// 1 - DocumentSigned: Benachrichtigung über die Unterzeichnung eines Dokuments.<br/>
|
||||||
|
/// 2 - DocumentDeleted: Benachrichtigung über das Löschen eines Dokuments.<br/>
|
||||||
|
/// 3 - DocumentCompleted: Benachrichtigung über den Abschluss eines Dokuments.<br/>
|
||||||
|
/// 4 - DocumentAccessCodeReceived: Benachrichtigung über den Erhalt eines Zugangscodes.<br/>
|
||||||
|
/// 5 - DocumentShared: Benachrichtigung über das Teilen eines Dokuments.<br/>
|
||||||
|
/// 6 - TotpSecret: Benachrichtigung über ein TOTP-Geheimnis.<br/>
|
||||||
|
/// 7 - DocumentRejected_ADM (für den Absender): Mail an den Absender, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 8 - DocumentRejected_REC (für den ablehnenden Empfänger): Mail an den ablehnenden Empfänger, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 9 - DocumentRejected_REC_2 (für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
||||||
|
/// </summary>
|
||||||
|
public EmailTemplateType? Type { get; set; }
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
@@ -41,7 +68,7 @@ public class ResetEmailTemplateCommandHandler : IRequestHandler<ResetEmailTempla
|
|||||||
foreach (var temp in temps)
|
foreach (var temp in temps)
|
||||||
{
|
{
|
||||||
var def = Defaults.Where(t => t.Name == temp.Name).FirstOrDefault();
|
var def = Defaults.Where(t => t.Name == temp.Name).FirstOrDefault();
|
||||||
if(def is not null)
|
if (def is not null)
|
||||||
await _repository.UpdateAsync(def, t => t.Id == temp.Id, cancel);
|
await _repository.UpdateAsync(def, t => t.Id == temp.Id, cancel);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,29 +0,0 @@
|
|||||||
using MediatR;
|
|
||||||
using System.Text.Json.Serialization;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Update;
|
|
||||||
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Befehl zum Aktualisieren einer E-Mail-Vorlage.
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="Body">
|
|
||||||
/// (Optional)Der neue Inhalt des E-Mail-Textkörpers. Wenn null, bleibt der vorhandene Inhalt unverändert.
|
|
||||||
/// </param>
|
|
||||||
/// <param name="Subject">
|
|
||||||
/// (Optional) Der neue Betreff der E-Mail. Wenn null, bleibt der vorhandene Betreff unverändert.
|
|
||||||
/// </param>
|
|
||||||
public record UpdateEmailTemplateCommand(string? Body = null, string? Subject = null) : IRequest
|
|
||||||
{
|
|
||||||
/// <param>
|
|
||||||
/// Die Abfrage, die die E-Mail-Vorlage darstellt, die aktualisiert werden soll.
|
|
||||||
/// </param>
|
|
||||||
[JsonIgnore]
|
|
||||||
public EmailTemplateQueryBase? EmailTemplateQuery { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
[JsonIgnore]
|
|
||||||
public DateTime ChangedWhen { get; init; } = DateTime.Now;
|
|
||||||
}
|
|
||||||
@@ -1,67 +0,0 @@
|
|||||||
using AutoMapper;
|
|
||||||
using DigitalData.Core.Abstraction.Application.Repository;
|
|
||||||
using DigitalData.Core.Exceptions;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
using MediatR;
|
|
||||||
using Microsoft.EntityFrameworkCore;
|
|
||||||
using EnvelopeGenerator.Domain.Constants;
|
|
||||||
using EnvelopeGenerator.Application.Common.Dto;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Update;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
public class UpdateEmailTemplateCommandHandler : IRequestHandler<UpdateEmailTemplateCommand>
|
|
||||||
{
|
|
||||||
private readonly IRepository<EmailTemplate> _repository;
|
|
||||||
|
|
||||||
private readonly IMapper _mapper;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="repository"></param>
|
|
||||||
/// <param name="mapper"></param>
|
|
||||||
public UpdateEmailTemplateCommandHandler(IRepository<EmailTemplate> repository, IMapper mapper)
|
|
||||||
{
|
|
||||||
_repository = repository;
|
|
||||||
_mapper = mapper;
|
|
||||||
}
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="request"></param>
|
|
||||||
/// <param name="cancel"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
/// <exception cref="InvalidOperationException"></exception>
|
|
||||||
/// <exception cref="NotFoundException"></exception>
|
|
||||||
[Obsolete("Use Read-method returning IReadQuery<TEntity> instead.")]
|
|
||||||
public async Task Handle(UpdateEmailTemplateCommand request, CancellationToken cancel)
|
|
||||||
{
|
|
||||||
EmailTemplateDto? tempDto;
|
|
||||||
|
|
||||||
if (request.EmailTemplateQuery?.Id is int id)
|
|
||||||
{
|
|
||||||
var temp = await _repository.ReadOnly().Where(t => t.Id == id).FirstOrDefaultAsync(cancel);
|
|
||||||
tempDto = _mapper.Map<EmailTemplateDto>(temp);
|
|
||||||
}
|
|
||||||
else if (request!.EmailTemplateQuery!.Type is EmailTemplateType type)
|
|
||||||
{
|
|
||||||
var temp = await _repository.ReadOnly().Where(t => t.Name == type.ToString()).FirstOrDefaultAsync(cancel);
|
|
||||||
tempDto = _mapper.Map<EmailTemplateDto>(temp);
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
throw new InvalidOperationException("Both id and type is null. Id: " + request.EmailTemplateQuery.Id +". Type: " + request.EmailTemplateQuery.Type.ToString());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (tempDto == null)
|
|
||||||
{
|
|
||||||
throw new NotFoundException();
|
|
||||||
}
|
|
||||||
|
|
||||||
await _repository.UpdateAsync(tempDto, t => t.Id == tempDto.Id, cancel);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,63 @@
|
|||||||
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
|
using EnvelopeGenerator.Application.Common.Commands;
|
||||||
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
using System.Linq.Expressions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.EmailTemplates.Commands;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="Body"></param>
|
||||||
|
/// <param name="Subject"></param>
|
||||||
|
public record EmailTemplateUpdateDto(string Body, string Subject);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Befehl zum Aktualisieren einer E-Mail-Vorlage.
|
||||||
|
/// </summary>
|
||||||
|
public record UpdateEmailTemplateCommand : UpdateCommand<EmailTemplateUpdateDto, EmailTemplate>, IEmailTemplateQuery
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Die eindeutige Kennung der E-Mail-Vorlage (optional).
|
||||||
|
/// </summary>
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Der Typ der E-Mail-Vorlage, z. B. <see cref="EmailTemplateType"/> (optional). Beispiele:<br/>
|
||||||
|
/// 0 - DocumentReceived: Benachrichtigung über den Empfang eines Dokuments.<br/>
|
||||||
|
/// 1 - DocumentSigned: Benachrichtigung über die Unterzeichnung eines Dokuments.<br/>
|
||||||
|
/// 2 - DocumentDeleted: Benachrichtigung über das Löschen eines Dokuments.<br/>
|
||||||
|
/// 3 - DocumentCompleted: Benachrichtigung über den Abschluss eines Dokuments.<br/>
|
||||||
|
/// 4 - DocumentAccessCodeReceived: Benachrichtigung über den Erhalt eines Zugangscodes.<br/>
|
||||||
|
/// 5 - DocumentShared: Benachrichtigung über das Teilen eines Dokuments.<br/>
|
||||||
|
/// 6 - TotpSecret: Benachrichtigung über ein TOTP-Geheimnis.<br/>
|
||||||
|
/// 7 - DocumentRejected_ADM (für den Absender): Mail an den Absender, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 8 - DocumentRejected_REC (für den ablehnenden Empfänger): Mail an den ablehnenden Empfänger, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 9 - DocumentRejected_REC_2 (für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
||||||
|
/// </summary>
|
||||||
|
public EmailTemplateType? Type { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
public override Expression<Func<EmailTemplate, bool>> BuildQueryExpression()
|
||||||
|
=> Id is int id
|
||||||
|
? temp => temp.Id == id
|
||||||
|
: temp => temp!.Name == Type.ToString();
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class UpdateEmailTemplateCommandHandler : UpdateCommandHandler<UpdateEmailTemplateCommand, EmailTemplateUpdateDto, EmailTemplate>
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="repository"></param>
|
||||||
|
public UpdateEmailTemplateCommandHandler(IRepository<EmailTemplate> repository) : base(repository)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,24 +0,0 @@
|
|||||||
using EnvelopeGenerator.Domain.Constants;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EmailTemplates;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Repräsentiert eine Abfrage für E-Mail-Vorlagen, die für Absender und Empfänger von Umschlägen verwendet werden.
|
|
||||||
/// Die Standardkultur ist "de-DE".
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="Id">Die eindeutige Kennung der E-Mail-Vorlage (optional).</param>
|
|
||||||
/// <param name="Type">Der Typ der E-Mail-Vorlage, z. B. <see cref="EmailTemplateType"/> (optional). Beispiele:
|
|
||||||
/// 0 - DocumentReceived: Benachrichtigung über den Empfang eines Dokuments.
|
|
||||||
/// 1 - DocumentSigned: Benachrichtigung über die Unterzeichnung eines Dokuments.
|
|
||||||
/// 2 - DocumentDeleted: Benachrichtigung über das Löschen eines Dokuments.
|
|
||||||
/// 3 - DocumentCompleted: Benachrichtigung über den Abschluss eines Dokuments.
|
|
||||||
/// 4 - DocumentAccessCodeReceived: Benachrichtigung über den Erhalt eines Zugangscodes.
|
|
||||||
/// 5 - DocumentShared: Benachrichtigung über das Teilen eines Dokuments.
|
|
||||||
/// 6 - TotpSecret: Benachrichtigung über ein TOTP-Geheimnis.
|
|
||||||
/// 7 - DocumentRejected_ADM (Für den Absender): Mail an den Absender, wenn das Dokument abgelehnt wird.
|
|
||||||
/// 8 - DocumentRejected_REC (Für den ablehnenden Empfänger): Mail an den ablehnenden Empfänger, wenn das Dokument abgelehnt wird.
|
|
||||||
/// 9 - DocumentRejected_REC_2 (Für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
|
||||||
/// </param>
|
|
||||||
public record EmailTemplateQueryBase(int? Id = null, EmailTemplateType? Type = null)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,30 @@
|
|||||||
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.EmailTemplates;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Stellt eine Schnittstelle für Abfragen von E-Mail-Vorlagen dar, die für Absender und Empfänger von Umschlägen verwendet werden.
|
||||||
|
/// Die Standardkultur ist "de-DE".
|
||||||
|
/// </summary>
|
||||||
|
public interface IEmailTemplateQuery
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Die eindeutige Kennung der E-Mail-Vorlage (optional).
|
||||||
|
/// </summary>
|
||||||
|
int? Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Der Typ der E-Mail-Vorlage, z. B. <see cref="EmailTemplateType"/> (optional). Beispiele:<br/>
|
||||||
|
/// 0 - DocumentReceived: Benachrichtigung über den Empfang eines Dokuments.<br/>
|
||||||
|
/// 1 - DocumentSigned: Benachrichtigung über die Unterzeichnung eines Dokuments.<br/>
|
||||||
|
/// 2 - DocumentDeleted: Benachrichtigung über das Löschen eines Dokuments.<br/>
|
||||||
|
/// 3 - DocumentCompleted: Benachrichtigung über den Abschluss eines Dokuments.<br/>
|
||||||
|
/// 4 - DocumentAccessCodeReceived: Benachrichtigung über den Erhalt eines Zugangscodes.<br/>
|
||||||
|
/// 5 - DocumentShared: Benachrichtigung über das Teilen eines Dokuments.<br/>
|
||||||
|
/// 6 - TotpSecret: Benachrichtigung über ein TOTP-Geheimnis.<br/>
|
||||||
|
/// 7 - DocumentRejected_ADM (für den Absender): Mail an den Absender, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 8 - DocumentRejected_REC (für den ablehnenden Empfänger): Mail an den ablehnenden Empfänger, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 9 - DocumentRejected_REC_2 (für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
||||||
|
/// </summary>
|
||||||
|
EmailTemplateType? Type { get; set; }
|
||||||
|
}
|
||||||
@@ -0,0 +1,24 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using EnvelopeGenerator.Application.Common.Dto;
|
||||||
|
using EnvelopeGenerator.Application.Common.Extensions;
|
||||||
|
using EnvelopeGenerator.Application.EmailTemplates.Commands;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.EmailTemplates;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public class MappingProfile : Profile
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public MappingProfile()
|
||||||
|
{
|
||||||
|
CreateMap<EmailTemplate, EmailTemplateDto>();
|
||||||
|
|
||||||
|
CreateMap<EmailTemplateUpdateDto, EmailTemplate>()
|
||||||
|
.MapChangedWhen();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -4,21 +4,42 @@ using EnvelopeGenerator.Application.Common.Dto;
|
|||||||
using DigitalData.Core.Abstraction.Application.Repository;
|
using DigitalData.Core.Abstraction.Application.Repository;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using Microsoft.EntityFrameworkCore;
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
|
using DigitalData.Core.Exceptions;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.EmailTemplates.Queries.Read;
|
namespace EnvelopeGenerator.Application.EmailTemplates.Queries;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Stellt eine Abfrage dar, um eine E-Mail-Vorlage zu lesen.
|
/// Stellt eine Abfrage dar, um eine E-Mail-Vorlage zu lesen.
|
||||||
/// Diese Klasse erbt von <see cref="EmailTemplateQueryBase"/>.
|
/// Diese Klasse erbt von <see cref="IEmailTemplateQuery"/>.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public record ReadEmailTemplateQuery : EmailTemplateQueryBase, IRequest<EmailTemplateDto?>
|
public record ReadEmailTemplateQuery : IEmailTemplateQuery, IRequest<EmailTemplateDto>
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Die eindeutige Kennung der E-Mail-Vorlage (optional).
|
||||||
|
/// </summary>
|
||||||
|
public int? Id { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Der Typ der E-Mail-Vorlage, z. B. <see cref="EmailTemplateType"/> (optional). Beispiele:<br/>
|
||||||
|
/// 0 - DocumentReceived: Benachrichtigung über den Empfang eines Dokuments.<br/>
|
||||||
|
/// 1 - DocumentSigned: Benachrichtigung über die Unterzeichnung eines Dokuments.<br/>
|
||||||
|
/// 2 - DocumentDeleted: Benachrichtigung über das Löschen eines Dokuments.<br/>
|
||||||
|
/// 3 - DocumentCompleted: Benachrichtigung über den Abschluss eines Dokuments.<br/>
|
||||||
|
/// 4 - DocumentAccessCodeReceived: Benachrichtigung über den Erhalt eines Zugangscodes.<br/>
|
||||||
|
/// 5 - DocumentShared: Benachrichtigung über das Teilen eines Dokuments.<br/>
|
||||||
|
/// 6 - TotpSecret: Benachrichtigung über ein TOTP-Geheimnis.<br/>
|
||||||
|
/// 7 - DocumentRejected_ADM (für den Absender): Mail an den Absender, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 8 - DocumentRejected_REC (für den ablehnenden Empfänger): Mail an den ablehnenden Empfänger, wenn das Dokument abgelehnt wird.<br/>
|
||||||
|
/// 9 - DocumentRejected_REC_2 (für sonstige Empfänger): Mail an andere Empfänger (Brief), wenn das Dokument abgelehnt wird.
|
||||||
|
/// </summary>
|
||||||
|
public EmailTemplateType? Type { get; set; }
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQuery, EmailTemplateDto?>
|
public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQuery, EmailTemplateDto>
|
||||||
{
|
{
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
|
|
||||||
@@ -44,12 +65,14 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
|||||||
/// <param name="cancel"></param>
|
/// <param name="cancel"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="InvalidOperationException"></exception>
|
/// <exception cref="InvalidOperationException"></exception>
|
||||||
public async Task<EmailTemplateDto?> Handle(ReadEmailTemplateQuery request, CancellationToken cancel)
|
public async Task<EmailTemplateDto> Handle(ReadEmailTemplateQuery request, CancellationToken cancel)
|
||||||
{
|
{
|
||||||
var query = request.Id is int id
|
var query = request.Id is int id
|
||||||
? _repo.Query.Where(temp => temp.Id == id)
|
? _repo.Query.Where(temp => temp.Id == id)
|
||||||
: _repo.Query.Where(temp => temp.Name == request.Type!.ToString());
|
: _repo.Query.Where(temp => temp.Name == request.Type!.ToString());
|
||||||
|
|
||||||
return _mapper.Map<EmailTemplateDto>(await query.FirstOrDefaultAsync(cancel));
|
var entity = await query.FirstOrDefaultAsync(cancel) ?? throw new NotFoundException();
|
||||||
|
|
||||||
|
return _mapper.Map<EmailTemplateDto>(entity);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,15 +2,10 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_CONFIG", Schema = "dbo")]
|
|
||||||
public class Config
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_CONFIG", Schema = "dbo")]
|
||||||
|
public class Config
|
||||||
|
{
|
||||||
[Column("SENDING_PROFILE", TypeName = "int")]
|
[Column("SENDING_PROFILE", TypeName = "int")]
|
||||||
[Required]
|
[Required]
|
||||||
public int SendingProfile { get; set; }
|
public int SendingProfile { get; set; }
|
||||||
@@ -24,8 +19,5 @@ public class Config
|
|||||||
|
|
||||||
[Column("EXPORT_PATH", TypeName = "nvarchar(256)")]
|
[Column("EXPORT_PATH", TypeName = "nvarchar(256)")]
|
||||||
public string ExportPath { get; set; }
|
public string ExportPath { get; set; }
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,6 +1,9 @@
|
|||||||
using EnvelopeGenerator.Domain.Interfaces;
|
using System;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
using System.Drawing;
|
using System.Drawing;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
@@ -8,15 +11,10 @@ using System.Linq;
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_ENVELOPE_DOCUMENT", Schema = "dbo")]
|
|
||||||
public class Document : IHasEnvelope
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_ENVELOPE_DOCUMENT", Schema = "dbo")]
|
||||||
|
public class Document : IHasEnvelope, IHasAddedWhen
|
||||||
|
{
|
||||||
public Document()
|
public Document()
|
||||||
{
|
{
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
@@ -36,9 +34,13 @@ public class Document : IHasEnvelope
|
|||||||
= 0;
|
= 0;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
[Column("BYTE_DATA", TypeName = "varbinary(max)")]
|
[Column("BYTE_DATA", TypeName = "varbinary(max)")]
|
||||||
public byte[]
|
public byte[]
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ByteData { get; set; }
|
ByteData { get; set; }
|
||||||
@@ -52,21 +54,21 @@ public class Document : IHasEnvelope
|
|||||||
|
|
||||||
[Column("FILENAME_ORIGINAL", TypeName = "nvarchar(256)")]
|
[Column("FILENAME_ORIGINAL", TypeName = "nvarchar(256)")]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
FileNameOriginal { get; set; }
|
FileNameOriginal { get; set; }
|
||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
public virtual List<Signature>
|
public virtual List<Signature>
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Elements { get; set; }
|
Elements { get; set; }
|
||||||
|
|
||||||
[ForeignKey("EnvelopeId")]
|
[ForeignKey("EnvelopeId")]
|
||||||
public virtual Envelope
|
public virtual Envelope
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Envelope { get; set; }
|
Envelope { get; set; }
|
||||||
@@ -81,8 +83,5 @@ public class Document : IHasEnvelope
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public int PageCount { get; set; }
|
public int PageCount { get; set; }
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,22 +1,15 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using DigitalData.Core.Abstractions.Interfaces;
|
using DigitalData.Core.Abstractions.Interfaces;
|
||||||
using EnvelopeGenerator.Domain.Interfaces;
|
using EnvelopeGenerator.Domain.Interfaces;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
|
||||||
using System;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")]
|
|
||||||
public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")]
|
||||||
|
public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity, IHasAddedWhen, IHasChangedWhen
|
||||||
|
{
|
||||||
public DocumentStatus()
|
public DocumentStatus()
|
||||||
{
|
{
|
||||||
// TODO: * check Form Application and remove default value
|
// TODO: * check Form Application and remove default value
|
||||||
@@ -42,24 +35,28 @@ public class DocumentStatus : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
[Column("STATUS")]
|
[Column("STATUS")]
|
||||||
public Constants.DocumentStatus Status { get; set; }
|
public Constants.DocumentStatus Status { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
|
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
||||||
|
public DateTime? ChangedWhen { get; set; }
|
||||||
|
|
||||||
[Column("VALUE", TypeName = "nvarchar(max)")]
|
[Column("VALUE", TypeName = "nvarchar(max)")]
|
||||||
public string Value { get; set; }
|
public string Value { get; set; }
|
||||||
|
|
||||||
[ForeignKey("EnvelopeId")]
|
[ForeignKey("EnvelopeId")]
|
||||||
public virtual Envelope
|
public virtual Envelope
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Envelope { get; set; }
|
Envelope { get; set; }
|
||||||
|
|
||||||
[ForeignKey("ReceiverId")]
|
[ForeignKey("ReceiverId")]
|
||||||
public virtual Receiver
|
public virtual Receiver
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Receiver { get; set; }
|
Receiver { get; set; }
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,19 +1,15 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
using System;
|
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT_ANNOTATION")]
|
|
||||||
public class ElementAnnotation
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT_ANNOTATION")]
|
||||||
|
public class ElementAnnotation : IHasAddedWhen, IUpdateAuditable
|
||||||
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
[Column("GUID", TypeName = "bigint")]
|
[Column("GUID", TypeName = "bigint")]
|
||||||
@@ -38,28 +34,28 @@ public class ElementAnnotation
|
|||||||
|
|
||||||
[Column("POSITION_X", TypeName = "float")]
|
[Column("POSITION_X", TypeName = "float")]
|
||||||
public double
|
public double
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
X { get; set; }
|
X { get; set; }
|
||||||
|
|
||||||
[Column("POSITION_Y", TypeName = "float")]
|
[Column("POSITION_Y", TypeName = "float")]
|
||||||
public double
|
public double
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Y { get; set; }
|
Y { get; set; }
|
||||||
|
|
||||||
[Column("WIDTH", TypeName = "float")]
|
[Column("WIDTH", TypeName = "float")]
|
||||||
public double
|
public double
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Width { get; set; }
|
Width { get; set; }
|
||||||
|
|
||||||
[Column("HEIGHT", TypeName = "float")]
|
[Column("HEIGHT", TypeName = "float")]
|
||||||
public double
|
public double
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Height { get; set; }
|
Height { get; set; }
|
||||||
@@ -74,19 +70,16 @@ public class ElementAnnotation
|
|||||||
[Column("CHANGED_WHO", TypeName = "nvarchar(100)")]
|
[Column("CHANGED_WHO", TypeName = "nvarchar(100)")]
|
||||||
[StringLength(100)]
|
[StringLength(100)]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ChangedWho { get; set; }
|
ChangedWho { get; set; }
|
||||||
|
|
||||||
[ForeignKey("ElementId")]
|
[ForeignKey("ElementId")]
|
||||||
public virtual Signature
|
public virtual Signature
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Element { get; set; }
|
Element { get; set; }
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,21 +1,15 @@
|
|||||||
using DigitalData.Core.Abstractions.Interfaces;
|
using System;
|
||||||
|
using DigitalData.Core.Abstractions.Interfaces;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
#if NETFRAMEWORK
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
using System;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_EMAIL_TEMPLATE", Schema = "dbo")]
|
|
||||||
public class EmailTemplate : IEntity
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_EMAIL_TEMPLATE", Schema = "dbo")]
|
||||||
|
public class EmailTemplate : IEntity, IHasAddedWhen, IHasChangedWhen
|
||||||
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
[Column("GUID")]
|
[Column("GUID")]
|
||||||
@@ -36,9 +30,6 @@ public class EmailTemplate : IEntity
|
|||||||
public DateTime AddedWhen { get; set; }
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime ChangedWhen { get; set; }
|
public DateTime? ChangedWhen { get; set; }
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,25 +1,20 @@
|
|||||||
using DigitalData.UserManager.Domain.Entities;
|
using System;
|
||||||
|
using DigitalData.UserManager.Domain.Entities;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using EnvelopeGenerator.Domain.Constants;
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
using System.Linq;
|
using System.Linq;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_ENVELOPE", Schema = "dbo")]
|
|
||||||
public class Envelope
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_ENVELOPE", Schema = "dbo")]
|
||||||
|
public class Envelope : IHasAddedWhen, IHasChangedWhen
|
||||||
|
{
|
||||||
public Envelope()
|
public Envelope()
|
||||||
{
|
{
|
||||||
// TODO: * Check the Form App and remove the default value
|
// TODO: * Check the Form App and remove the default value
|
||||||
@@ -28,7 +23,7 @@ public class Envelope
|
|||||||
Status = EnvelopeStatus.EnvelopeCreated;
|
Status = EnvelopeStatus.EnvelopeCreated;
|
||||||
Uuid = Guid.NewGuid().ToString();
|
Uuid = Guid.NewGuid().ToString();
|
||||||
Message = My.Resources.Envelope.Please_read_and_sign_this_document;
|
Message = My.Resources.Envelope.Please_read_and_sign_this_document;
|
||||||
Title= string.Empty;
|
Title = string.Empty;
|
||||||
Comment = string.Empty;
|
Comment = string.Empty;
|
||||||
Language = "de-DE";
|
Language = "de-DE";
|
||||||
SendReminderEmails = false;
|
SendReminderEmails = false;
|
||||||
@@ -77,10 +72,11 @@ public class Envelope
|
|||||||
|
|
||||||
[Column("TITLE", TypeName = "nvarchar(128)")]
|
[Column("TITLE", TypeName = "nvarchar(128)")]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Title { get; set; }
|
Title
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
[Column("COMMENT", TypeName = "nvarchar(128)")]
|
[Column("COMMENT", TypeName = "nvarchar(128)")]
|
||||||
public string Comment { get; set; }
|
public string Comment { get; set; }
|
||||||
@@ -142,7 +138,7 @@ public class Envelope
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
[Column("DOC_RESULT")]
|
[Column("DOC_RESULT")]
|
||||||
public byte[]
|
public byte[]
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
DocResult
|
DocResult
|
||||||
@@ -150,10 +146,11 @@ public class Envelope
|
|||||||
|
|
||||||
[ForeignKey("EnvelopeTypeId")]
|
[ForeignKey("EnvelopeTypeId")]
|
||||||
public virtual EnvelopeType
|
public virtual EnvelopeType
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Type { get; set; }
|
Type
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
@@ -164,24 +161,27 @@ public class Envelope
|
|||||||
#endif
|
#endif
|
||||||
|
|
||||||
public List<Document>
|
public List<Document>
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Documents { get; set; }
|
Documents
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
public List<History>
|
public List<History>
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Histories { get; set; }
|
Histories
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
public List<EnvelopeReceiver>
|
public List<EnvelopeReceiver>
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
EnvelopeReceivers { get; set; }
|
EnvelopeReceivers
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
//#if NETFRAMEWORK
|
//#if NETFRAMEWORK
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validates whether the receiver and document data are complete.
|
/// Validates whether the receiver and document data are complete.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -200,9 +200,6 @@ public class Envelope
|
|||||||
|
|
||||||
return errors;
|
return errors;
|
||||||
}
|
}
|
||||||
//#endif
|
//#endif
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,22 +1,15 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using DigitalData.Core.Abstractions.Interfaces;
|
using DigitalData.Core.Abstractions.Interfaces;
|
||||||
using EnvelopeGenerator.Domain.Interfaces;
|
using EnvelopeGenerator.Domain.Interfaces;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
|
||||||
using System;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")]
|
|
||||||
public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")]
|
||||||
|
public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity, IHasAddedWhen, IHasChangedWhen
|
||||||
|
{
|
||||||
public EnvelopeReceiver()
|
public EnvelopeReceiver()
|
||||||
{
|
{
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
@@ -42,7 +35,7 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
|
|
||||||
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
CompanyName { get; set; }
|
CompanyName { get; set; }
|
||||||
@@ -58,7 +51,7 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
public DateTime AddedWhen { get; set; }
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime ChangedWhen { get; set; }
|
public DateTime? ChangedWhen { get; set; }
|
||||||
|
|
||||||
[Column("PHONE_NUMBER")]
|
[Column("PHONE_NUMBER")]
|
||||||
[StringLength(20)]
|
[StringLength(20)]
|
||||||
@@ -73,14 +66,14 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
|
|
||||||
[ForeignKey("EnvelopeId")]
|
[ForeignKey("EnvelopeId")]
|
||||||
public Envelope
|
public Envelope
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Envelope { get; set; }
|
Envelope { get; set; }
|
||||||
|
|
||||||
[ForeignKey("ReceiverId")]
|
[ForeignKey("ReceiverId")]
|
||||||
public Receiver
|
public Receiver
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Receiver { get; set; }
|
Receiver { get; set; }
|
||||||
@@ -98,7 +91,4 @@ public class EnvelopeReceiver : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
!string.IsNullOrWhiteSpace(Name);
|
!string.IsNullOrWhiteSpace(Name);
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
|
}
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,14 +1,13 @@
|
|||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
||||||
#if NETFRAMEWORK
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
using System;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE_RECEIVER_READ_ONLY")]
|
[Table("TBSIG_ENVELOPE_RECEIVER_READ_ONLY")]
|
||||||
public class EnvelopeReceiverReadOnly
|
public class EnvelopeReceiverReadOnly : IHasChangedWhen, ICreationAuditable
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -42,16 +41,12 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Column("ADDED_WHEN")]
|
[Column("ADDED_WHEN")]
|
||||||
[Required]
|
[Required]
|
||||||
public DateTime
|
public DateTime AddedWhen { get; set; }
|
||||||
#if NET
|
|
||||||
?
|
|
||||||
#endif
|
|
||||||
AddedWhen { get; set; }
|
|
||||||
|
|
||||||
[Column("CHANGED_WHO")]
|
[Column("CHANGED_WHO")]
|
||||||
[StringLength(100)]
|
[StringLength(100)]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ChangedWho { get; set; }
|
ChangedWho { get; set; }
|
||||||
|
|||||||
@@ -1,25 +1,17 @@
|
|||||||
using DigitalData.UserManager.Domain.Entities;
|
using System;
|
||||||
|
using DigitalData.UserManager.Domain.Entities;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using EnvelopeGenerator.Domain.Interfaces;
|
using EnvelopeGenerator.Domain.Interfaces;
|
||||||
using EnvelopeGenerator.Domain.Constants;
|
using EnvelopeGenerator.Domain.Constants;
|
||||||
using DigitalData.Core.Abstractions.Interfaces;
|
using DigitalData.Core.Abstractions.Interfaces;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
using System;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")]
|
|
||||||
public class History : IHasEnvelope, IHasReceiver, IEntity
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")]
|
||||||
|
public class History : IHasEnvelope, IHasReceiver, IEntity, IHasAddedWhen, IHasChangedWhen
|
||||||
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
[Column("GUID")]
|
[Column("GUID")]
|
||||||
@@ -43,32 +35,32 @@ public class History : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
public DateTime AddedWhen { get; set; }
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
[Column("ACTION_DATE", TypeName = "datetime")]
|
[Column("ACTION_DATE", TypeName = "datetime")]
|
||||||
public DateTime? ActionDate { get; set; } = DateTime.Now;
|
public DateTime? ChangedWhen { get; set; }
|
||||||
|
|
||||||
[Column("COMMENT", TypeName = "nvarchar(max)")]
|
[Column("COMMENT", TypeName = "nvarchar(max)")]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Comment { get; set; }
|
Comment { get; set; }
|
||||||
|
|
||||||
[ForeignKey("EnvelopeId")]
|
[ForeignKey("EnvelopeId")]
|
||||||
public virtual Envelope
|
public virtual Envelope
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Envelope { get; set; }
|
Envelope { get; set; }
|
||||||
|
|
||||||
[ForeignKey("UserReference")]
|
[ForeignKey("UserReference")]
|
||||||
public virtual User
|
public virtual User
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Sender { get; set; }
|
Sender { get; set; }
|
||||||
|
|
||||||
[ForeignKey("UserReference")]
|
[ForeignKey("UserReference")]
|
||||||
public virtual Receiver
|
public virtual Receiver
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Receiver { get; set; }
|
Receiver { get; set; }
|
||||||
@@ -77,8 +69,5 @@ public class History : IHasEnvelope, IHasReceiver, IEntity
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public string StatusTranslated => My.Resources.Model.ResourceManager.GetString(Status.ToString());
|
public string StatusTranslated => My.Resources.Model.ResourceManager.GetString(Status.ToString());
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,21 +1,16 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.Drawing;
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
using System;
|
using System;
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_RECEIVER", Schema = "dbo")]
|
|
||||||
public class Receiver
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_RECEIVER", Schema = "dbo")]
|
||||||
|
public class Receiver : IHasAddedWhen
|
||||||
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
[Column("GUID")]
|
[Column("GUID")]
|
||||||
@@ -43,8 +38,5 @@ public class Receiver
|
|||||||
public List<EnvelopeReceiver> EnvelopeReceivers { get; set; }
|
public List<EnvelopeReceiver> EnvelopeReceivers { get; set; }
|
||||||
|
|
||||||
public string GetSignature() => EmailAddress.ToUpperInvariant().GetChecksum();
|
public string GetSignature() => EmailAddress.ToUpperInvariant().GetChecksum();
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -1,22 +1,18 @@
|
|||||||
using EnvelopeGenerator.Domain.Interfaces;
|
using System;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces;
|
||||||
using System.ComponentModel;
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using EnvelopeGenerator.Domain.Interfaces.Auditing;
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
using System.Collections.Generic;
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
[Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT", Schema = "dbo")]
|
|
||||||
public class Signature : ISignature, IHasReceiver
|
|
||||||
{
|
{
|
||||||
|
[Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT", Schema = "dbo")]
|
||||||
|
public class Signature : ISignature, IHasReceiver, IHasAddedWhen, IUpdateAuditable
|
||||||
|
{
|
||||||
public Signature()
|
public Signature()
|
||||||
{
|
{
|
||||||
// TODO: * Check the Form App and remove the default value
|
// TODO: * Check the Form App and remove the default value
|
||||||
@@ -92,33 +88,36 @@ public class Signature : ISignature, IHasReceiver
|
|||||||
[Required]
|
[Required]
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
[DefaultValue("GETDATE()")]
|
[DefaultValue("GETDATE()")]
|
||||||
public DateTime? AddedWhen { get; set; }
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime? ChangedWhen { get; set; }
|
public DateTime? ChangedWhen { get; set; }
|
||||||
|
|
||||||
[Column("CHANGED_WHO", TypeName = "nvarchar(100)")]
|
[Column("CHANGED_WHO", TypeName = "nvarchar(100)")]
|
||||||
public string
|
public string
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
ChangedWho { get; set; }
|
ChangedWho
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
[ForeignKey("DocumentId")]
|
[ForeignKey("DocumentId")]
|
||||||
public virtual Document Document { get; set; }
|
public virtual Document Document { get; set; }
|
||||||
|
|
||||||
[ForeignKey("ReceiverId")]
|
[ForeignKey("ReceiverId")]
|
||||||
public virtual Receiver
|
public virtual Receiver
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Receiver { get; set; }
|
Receiver
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
public virtual IEnumerable<ElementAnnotation>
|
public virtual IEnumerable<ElementAnnotation>
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Annotations { get; set; }
|
Annotations
|
||||||
|
{ get; set; }
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
#if NETFRAMEWORK
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
@@ -127,8 +126,5 @@ public class Signature : ISignature, IHasReceiver
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public double Left => Math.Round(X, 5);
|
public double Left => Math.Round(X, 5);
|
||||||
#endif
|
#endif
|
||||||
}
|
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
}
|
||||||
#endif
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
namespace EnvelopeGenerator.Domain.Interfaces.Auditing
|
||||||
|
{
|
||||||
|
public interface ICreationAuditable : IHasAddedWhen, IHasAddedWho
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#if NETFRAMEWORK
|
||||||
|
using System;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Domain.Interfaces.Auditing
|
||||||
|
{
|
||||||
|
public interface IHasAddedWhen
|
||||||
|
{
|
||||||
|
DateTime AddedWhen { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
namespace EnvelopeGenerator.Domain.Interfaces.Auditing
|
||||||
|
{
|
||||||
|
public interface IHasAddedWho
|
||||||
|
{
|
||||||
|
string AddedWho { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
#if NETFRAMEWORK
|
||||||
|
using System;
|
||||||
|
#endif
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Domain.Interfaces.Auditing
|
||||||
|
{
|
||||||
|
public interface IHasChangedWhen
|
||||||
|
{
|
||||||
|
DateTime? ChangedWhen { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
namespace EnvelopeGenerator.Domain.Interfaces.Auditing
|
||||||
|
{
|
||||||
|
public interface IHasChangedWho
|
||||||
|
{
|
||||||
|
string
|
||||||
|
#if nullable
|
||||||
|
?
|
||||||
|
#endif
|
||||||
|
ChangedWho { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,6 @@
|
|||||||
|
namespace EnvelopeGenerator.Domain.Interfaces.Auditing
|
||||||
|
{
|
||||||
|
public interface IUpdateAuditable : IHasChangedWhen, IHasChangedWho
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,22 +1,11 @@
|
|||||||
namespace EnvelopeGenerator.Domain.Interfaces
|
namespace EnvelopeGenerator.Domain.Interfaces
|
||||||
#if NET
|
|
||||||
;
|
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
|
||||||
#endif
|
|
||||||
|
|
||||||
public interface IHasEnvelope
|
|
||||||
{
|
{
|
||||||
#if NET
|
public interface IHasEnvelope
|
||||||
public
|
{
|
||||||
#endif
|
|
||||||
Entities.Envelope
|
Entities.Envelope
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Envelope { get; set; }
|
Envelope { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
@@ -1,22 +1,11 @@
|
|||||||
namespace EnvelopeGenerator.Domain.Interfaces
|
namespace EnvelopeGenerator.Domain.Interfaces
|
||||||
#if NET
|
{
|
||||||
;
|
public interface IHasReceiver
|
||||||
#elif NETFRAMEWORK
|
|
||||||
{
|
{
|
||||||
#endif
|
|
||||||
|
|
||||||
public interface IHasReceiver
|
|
||||||
{
|
|
||||||
#if NET
|
|
||||||
public
|
|
||||||
#endif
|
|
||||||
Entities.Receiver
|
Entities.Receiver
|
||||||
#if NET
|
#if nullable
|
||||||
?
|
?
|
||||||
#endif
|
#endif
|
||||||
Receiver { get; set; }
|
Receiver { get; set; }
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
}
|
|
||||||
#endif
|
|
||||||
Reference in New Issue
Block a user