Compare commits
48 Commits
08601adc49
...
feat/db-mi
| Author | SHA1 | Date | |
|---|---|---|---|
| be51ca31dd | |||
| bb8d7cd208 | |||
| b6588db615 | |||
| 9a9aa2608b | |||
| 349d65d050 | |||
| 93593226e2 | |||
| 351cead423 | |||
| 07cab88e0d | |||
| faa019355a | |||
| df9bcf3221 | |||
| cda19e2b83 | |||
| 1586009a72 | |||
| 408b1e9f0d | |||
| 9158933333 | |||
| 902848958d | |||
| f5418499a7 | |||
| 47d190d9ea | |||
| 35f46d3182 | |||
| 425d21084b | |||
| 6aeba4d1e7 | |||
| 6930d7a431 | |||
| c453a1650a | |||
| b9f5ae826a | |||
| 532dc41004 | |||
| 13899cf70a | |||
| 9756303d6e | |||
| 1c51fafb69 | |||
| 94d43bce24 | |||
| f5733228bf | |||
| e3cb2ec219 | |||
|
|
260c1c174d | ||
| 1c90e693da | |||
| e4c6714677 | |||
| 812b49cfcb | |||
| f039437f4c | |||
| 6f73ba929c | |||
| fcbe956095 | |||
| e628309734 | |||
| d6cbd0597e | |||
| 9d45082bfc | |||
| 3304b01d7b | |||
| f5d33846d5 | |||
| 231140505e | |||
| 62a73e4967 | |||
| dedfb924d8 | |||
| 452077e86a | |||
|
|
a1688608ab | ||
|
|
f1920e16fa |
@@ -3,6 +3,6 @@
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public class DbTriggerParams : Dictionary<string, IEnumerable<string>>
|
public class DbTriggerParams : Dictionary<string, ICollection<string>>
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -7,7 +7,7 @@ namespace EnvelopeGenerator.Application.Contracts.Repositories;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[Obsolete("Use Read-method returning IReadQuery<TEntity> instead.")]
|
[Obsolete("Use IRepository")]
|
||||||
public interface IEmailTemplateRepository : ICRUDRepository<EmailTemplate, int>
|
public interface IEmailTemplateRepository : ICRUDRepository<EmailTemplate, int>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -6,6 +6,7 @@ namespace EnvelopeGenerator.Application.Contracts.Repositories;
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public interface IEnvelopeReceiverRepository : ICRUDRepository<EnvelopeReceiver, (int Envelope, int Receiver)>
|
public interface IEnvelopeReceiverRepository : ICRUDRepository<EnvelopeReceiver, (int Envelope, int Receiver)>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
using DigitalData.Core.Abstraction.Application.Repository;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts.Repositories;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
[Obsolete("Use IRepository")]
|
|
||||||
public interface IUserReceiverRepository : ICRUDRepository<UserReceiver, int>
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using DigitalData.Core.Abstractions;
|
using DigitalData.Core.Abstraction.Application;
|
||||||
using DigitalData.Core.Abstraction.Application;
|
|
||||||
using DigitalData.Core.Abstraction.Application.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
@@ -27,12 +26,4 @@ public interface IReceiverService : ICRUDService<ReceiverCreateDto, ReceiverRead
|
|||||||
/// <param name="signature"></param>
|
/// <param name="signature"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
Task<Result> DeleteByAsync(string? emailAddress = null, string? signature = null);
|
Task<Result> DeleteByAsync(string? emailAddress = null, string? signature = null);
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <typeparam name="TUpdateDto"></typeparam>
|
|
||||||
/// <param name="updateDto"></param>
|
|
||||||
/// <returns></returns>
|
|
||||||
Task<Result> UpdateAsync<TUpdateDto>(TUpdateDto updateDto);
|
|
||||||
}
|
}
|
||||||
@@ -3,9 +3,21 @@
|
|||||||
namespace EnvelopeGenerator.Application.Contracts.Services;
|
namespace EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
|
||||||
//TODO: move to DigitalData.Core
|
//TODO: move to DigitalData.Core
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public interface ISmsSender
|
public interface ISmsSender
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
string ServiceProvider { get; }
|
string ServiceProvider { get; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="recipient"></param>
|
||||||
|
/// <param name="message"></param>
|
||||||
|
/// <returns></returns>
|
||||||
Task<SmsResponse> SendSmsAsync(string recipient, string message);
|
Task<SmsResponse> SendSmsAsync(string recipient, string message);
|
||||||
}
|
}
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
using DigitalData.Core.Abstraction.Application;
|
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts.Services;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
[Obsolete("Use MediatR")]
|
|
||||||
public interface IUserReceiverService : IBasicCRUDService<UserReceiverDto, UserReceiver, int>
|
|
||||||
{
|
|
||||||
}
|
|
||||||
@@ -8,11 +8,6 @@ namespace EnvelopeGenerator.Application.DTOs;
|
|||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
public class ConfigDto
|
public class ConfigDto
|
||||||
{
|
{
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the path to the document.
|
|
||||||
/// </summary>
|
|
||||||
public string? DocumentPath { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the sending profile identifier.
|
/// Gets or sets the sending profile identifier.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -21,7 +16,7 @@ public class ConfigDto
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the signature host URL or name.
|
/// Gets or sets the signature host URL or name.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string? SignatureHost { get; set; }
|
public required string SignatureHost { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the name of the external program.
|
/// Gets or sets the name of the external program.
|
||||||
|
|||||||
@@ -37,7 +37,6 @@ public class MappingProfile : Profile
|
|||||||
CreateMap<Domain.Entities.Receiver, ReceiverReadDto>();
|
CreateMap<Domain.Entities.Receiver, ReceiverReadDto>();
|
||||||
CreateMap<Domain.Entities.Receiver, ReceiverCreateDto>();
|
CreateMap<Domain.Entities.Receiver, ReceiverCreateDto>();
|
||||||
CreateMap<Domain.Entities.Receiver, ReceiverUpdateDto>();
|
CreateMap<Domain.Entities.Receiver, ReceiverUpdateDto>();
|
||||||
CreateMap<UserReceiver, UserReceiverDto>();
|
|
||||||
CreateMap<Domain.Entities.EnvelopeReceiverReadOnly, EnvelopeReceiverReadOnlyDto>();
|
CreateMap<Domain.Entities.EnvelopeReceiverReadOnly, EnvelopeReceiverReadOnlyDto>();
|
||||||
|
|
||||||
// DTO to Entity mappings
|
// DTO to Entity mappings
|
||||||
@@ -55,7 +54,6 @@ public class MappingProfile : Profile
|
|||||||
CreateMap<ReceiverReadDto, Domain.Entities.Receiver>().ForMember(rcv => rcv.EnvelopeReceivers, rcvReadDto => rcvReadDto.Ignore());
|
CreateMap<ReceiverReadDto, Domain.Entities.Receiver>().ForMember(rcv => rcv.EnvelopeReceivers, rcvReadDto => rcvReadDto.Ignore());
|
||||||
CreateMap<ReceiverCreateDto, Domain.Entities.Receiver>();
|
CreateMap<ReceiverCreateDto, Domain.Entities.Receiver>();
|
||||||
CreateMap<ReceiverUpdateDto, Domain.Entities.Receiver>();
|
CreateMap<ReceiverUpdateDto, Domain.Entities.Receiver>();
|
||||||
CreateMap<UserReceiverDto, UserReceiver>();
|
|
||||||
CreateMap<EnvelopeReceiverBase, EnvelopeReceiverBasicDto>();
|
CreateMap<EnvelopeReceiverBase, EnvelopeReceiverBasicDto>();
|
||||||
CreateMap<EnvelopeReceiverReadOnlyCreateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
CreateMap<EnvelopeReceiverReadOnlyCreateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
||||||
CreateMap<EnvelopeReceiverReadOnlyUpdateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
CreateMap<EnvelopeReceiverReadOnlyUpdateDto, Domain.Entities.EnvelopeReceiverReadOnly>();
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ public record ReceiverCreateDto
|
|||||||
{
|
{
|
||||||
_sha256HexOfMail = new(() =>
|
_sha256HexOfMail = new(() =>
|
||||||
{
|
{
|
||||||
var bytes_arr = Encoding.UTF8.GetBytes(EmailAddress.ToUpper());
|
var bytes_arr = Encoding.UTF8.GetBytes(EmailAddress!.ToUpper());
|
||||||
var hash_arr = SHA256.HashData(bytes_arr);
|
var hash_arr = SHA256.HashData(bytes_arr);
|
||||||
var hexa_str = BitConverter.ToString(hash_arr);
|
var hexa_str = BitConverter.ToString(hash_arr);
|
||||||
return hexa_str.Replace("-", string.Empty);
|
return hexa_str.Replace("-", string.Empty);
|
||||||
@@ -37,7 +37,7 @@ public record ReceiverCreateDto
|
|||||||
public string? TotpSecretkey { get; init; }
|
public string? TotpSecretkey { get; init; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// var bytes_arr = Encoding.UTF8.GetBytes(EmailAddress.ToUpper());<br>
|
/// var bytes_arr = Encoding.UTF8.GetBytes(EmailAddress.ToUpper());<br/>
|
||||||
/// var hash_arr = SHA256.HashData(bytes_arr);
|
/// var hash_arr = SHA256.HashData(bytes_arr);
|
||||||
/// var hexa_str = BitConverter.ToString(hash_arr);
|
/// var hexa_str = BitConverter.ToString(hash_arr);
|
||||||
/// return hexa_str.Replace("-", string.Empty);
|
/// return hexa_str.Replace("-", string.Empty);
|
||||||
|
|||||||
@@ -4,26 +4,57 @@ using System.Text.Json.Serialization;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Application.DTOs.Receiver;
|
namespace EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
public class ReceiverReadDto
|
public class ReceiverReadDto
|
||||||
{
|
{
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
public string EmailAddress { get; set; }
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public required string EmailAddress { get; set; }
|
||||||
|
|
||||||
public string Signature { get; set; }
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public required string Signature { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public DateTime AddedWhen { get; set; }
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
[JsonIgnore]
|
[JsonIgnore]
|
||||||
public IEnumerable<EnvelopeReceiverBasicDto>? EnvelopeReceivers { get; set; }
|
public IEnumerable<EnvelopeReceiverBasicDto>? EnvelopeReceivers { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public string? LastUsedName => EnvelopeReceivers?.LastOrDefault()?.Name;
|
public string? LastUsedName => EnvelopeReceivers?.LastOrDefault()?.Name;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public string? TotpSecretkey { get; set; } = null;
|
public string? TotpSecretkey { get; set; } = null;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
public DateTime? TfaRegDeadline { get; set; }
|
public DateTime? TfaRegDeadline { get; set; }
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
public override int GetHashCode()
|
public override int GetHashCode()
|
||||||
{
|
{
|
||||||
return Id.GetHashCode();
|
return Id.GetHashCode();
|
||||||
|
|||||||
@@ -1,45 +0,0 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.DTOs;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Data Transfer Object representing a user receiver with associated details.
|
|
||||||
/// </summary>
|
|
||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
|
||||||
public class UserReceiverDto
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the unique identifier of the user receiver.
|
|
||||||
/// </summary>
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the identifier of the user associated with the receiver.
|
|
||||||
/// </summary>
|
|
||||||
public int UserId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the identifier of the receiver.
|
|
||||||
/// </summary>
|
|
||||||
public int ReceiverId { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the name of the receiver.
|
|
||||||
/// </summary>
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the company name of the receiver.
|
|
||||||
/// </summary>
|
|
||||||
public string CompanyName { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the job title of the receiver.
|
|
||||||
/// </summary>
|
|
||||||
public string JobTitle { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
/// Gets or sets the timestamp when the user receiver was added.
|
|
||||||
/// </summary>
|
|
||||||
public DateTime AddedWhen { get; set; }
|
|
||||||
}
|
|
||||||
@@ -38,7 +38,6 @@ public static class DependencyInjection
|
|||||||
services.TryAddScoped<IEnvelopeReceiverService, EnvelopeReceiverService>();
|
services.TryAddScoped<IEnvelopeReceiverService, EnvelopeReceiverService>();
|
||||||
services.TryAddScoped<IEnvelopeTypeService, EnvelopeTypeService>();
|
services.TryAddScoped<IEnvelopeTypeService, EnvelopeTypeService>();
|
||||||
services.TryAddScoped<IReceiverService, ReceiverService>();
|
services.TryAddScoped<IReceiverService, ReceiverService>();
|
||||||
services.TryAddScoped<IUserReceiverService, UserReceiverService>();
|
|
||||||
services.TryAddScoped<IEnvelopeReceiverReadOnlyService, EnvelopeReceiverReadOnlyService>();
|
services.TryAddScoped<IEnvelopeReceiverReadOnlyService, EnvelopeReceiverReadOnlyService>();
|
||||||
|
|
||||||
//Auto mapping profiles
|
//Auto mapping profiles
|
||||||
|
|||||||
@@ -5,20 +5,19 @@ namespace EnvelopeGenerator.Application.EmailTemplates.Commands.Reset;
|
|||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Ein Befehl zum Zurücksetzen einer E-Mail-Vorlage auf die Standardwerte.
|
/// Ein Befehl zum Zurücksetzen einer E-Mail-Vorlage auf die Standardwerte.
|
||||||
/// Erbt von <see cref="EmailTemplateQuery"/> und ermöglicht die Angabe einer optionalen ID und eines Typs der E-Mail-Vorlage.
|
/// Erbt von <see cref="EmailTemplateQuery"/> 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>
|
/// </summary>
|
||||||
/// 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 ResetEmailTemplateCommand : EmailTemplateQuery, IRequest
|
public record ResetEmailTemplateCommand : EmailTemplateQuery, IRequest
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -34,7 +33,7 @@ public record ResetEmailTemplateCommand : EmailTemplateQuery, IRequest
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="Id">Die optionale ID der E-Mail-Vorlage, die zurückgesetzt werden soll.</param>
|
/// <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="Constants.EmailTemplateType"/> (optional).
|
/// <param name="Type">Der Typ der E-Mail-Vorlage, z. B. <see cref="Constants.EmailTemplateType"/> (optional).</param>
|
||||||
public ResetEmailTemplateCommand(int? Id = null, Constants.EmailTemplateType? Type = null) : base(Id, Type)
|
public ResetEmailTemplateCommand(int? Id = null, Constants.EmailTemplateType? Type = null) : base(Id, Type)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -12,6 +12,7 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
|||||||
{
|
{
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
|
|
||||||
|
[Obsolete("Use Read-method returning IReadQuery<TEntity> instead.")]
|
||||||
private readonly IEmailTemplateRepository _repository;
|
private readonly IEmailTemplateRepository _repository;
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -21,6 +22,7 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
|||||||
/// <param name="repository">
|
/// <param name="repository">
|
||||||
/// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird.
|
/// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird.
|
||||||
/// </param>
|
/// </param>
|
||||||
|
[Obsolete("Use Read-method returning IReadQuery<TEntity> instead.")]
|
||||||
public ReadEmailTemplateQueryHandler(IMapper mapper, IEmailTemplateRepository repository)
|
public ReadEmailTemplateQueryHandler(IMapper mapper, IEmailTemplateRepository repository)
|
||||||
{
|
{
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
@@ -34,6 +36,7 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
|||||||
/// <param name="cancellationToken"></param>
|
/// <param name="cancellationToken"></param>
|
||||||
/// <returns></returns>
|
/// <returns></returns>
|
||||||
/// <exception cref="InvalidOperationException"></exception>
|
/// <exception cref="InvalidOperationException"></exception>
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public async Task<ReadEmailTemplateResponse?> Handle(ReadEmailTemplateQuery request, CancellationToken cancellationToken)
|
public async Task<ReadEmailTemplateResponse?> Handle(ReadEmailTemplateQuery request, CancellationToken cancellationToken)
|
||||||
{
|
{
|
||||||
var temp = request.Id is int id
|
var temp = request.Id is int id
|
||||||
@@ -46,4 +49,4 @@ public class ReadEmailTemplateQueryHandler : IRequestHandler<ReadEmailTemplateQu
|
|||||||
|
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -18,4 +18,4 @@ public record CreateEnvelopeReceiverCommand(
|
|||||||
[Required] DocumentCreateCommand Document,
|
[Required] DocumentCreateCommand Document,
|
||||||
[Required] IEnumerable<ReceiverGetOrCreateCommand> Receivers,
|
[Required] IEnumerable<ReceiverGetOrCreateCommand> Receivers,
|
||||||
bool TFAEnabled = false
|
bool TFAEnabled = false
|
||||||
) : CreateEnvelopeCommand(Title, Message, TFAEnabled), IRequest<CreateEnvelopeReceiverResponse?>;
|
) : CreateEnvelopeCommand(Title, Message, TFAEnabled), IRequest<CreateEnvelopeReceiverResponse>;
|
||||||
@@ -64,4 +64,4 @@ public class CreateEnvelopeReceiverCommandHandler : IRequestHandler<CreateEnvelo
|
|||||||
res.SentReceiver = _mapper.Map<IEnumerable<ReceiverReadDto>>(sentRecipients);
|
res.SentReceiver = _mapper.Map<IEnumerable<ReceiverReadDto>>(sentRecipients);
|
||||||
return res;
|
return res;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,131 +1,222 @@
|
|||||||
using Microsoft.Extensions.Caching.Distributed;
|
using Microsoft.Extensions.Caching.Distributed;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Extensions
|
namespace EnvelopeGenerator.Application.Extensions;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public static class CacheExtensions
|
||||||
{
|
{
|
||||||
public static class CacheExtensions
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Task SetLongAsync(this IDistributedCache cache, string key, long value, DistributedCacheEntryOptions? options = null, CancellationToken cToken = default)
|
||||||
|
=> options is null
|
||||||
|
? cache.SetAsync(key, BitConverter.GetBytes(value), token: cToken)
|
||||||
|
: cache.SetAsync(key, BitConverter.GetBytes(value), options: options, token: cToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<long?> GetLongAsync(this IDistributedCache cache, string key, CancellationToken cToken = default)
|
||||||
{
|
{
|
||||||
public static Task SetLongAsync(this IDistributedCache cache, string key, long value, DistributedCacheEntryOptions? options = null, CancellationToken cToken = default)
|
var value = await cache.GetAsync(key, cToken);
|
||||||
=> options is null
|
return value is null ? null : BitConverter.ToInt64(value, 0);
|
||||||
? cache.SetAsync(key, BitConverter.GetBytes(value), token: cToken)
|
|
||||||
: cache.SetAsync(key, BitConverter.GetBytes(value), options: options, token: cToken);
|
|
||||||
|
|
||||||
public static async Task<long?> GetLongAsync(this IDistributedCache cache, string key, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
var value = await cache.GetAsync(key, cToken);
|
|
||||||
return value is null ? null : BitConverter.ToInt64(value, 0);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Task SetDateTimeAsync(this IDistributedCache cache, string key, DateTime value, DistributedCacheEntryOptions? options = null, CancellationToken cToken = default)
|
|
||||||
=> cache.SetLongAsync(key: key, value: value.Ticks, options: options, cToken: cToken);
|
|
||||||
|
|
||||||
public static async Task<DateTime?> GetDateTimeAsync(this IDistributedCache cache, string key, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
var value = await cache.GetAsync(key, cToken);
|
|
||||||
return value is null ? null : new(BitConverter.ToInt64(value, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
public static Task SetTimeSpanAsync(this IDistributedCache cache, string key, TimeSpan value, DistributedCacheEntryOptions? options = null, CancellationToken cToken = default)
|
|
||||||
=> cache.SetLongAsync(key: key, value: value.Ticks, options: options, cToken);
|
|
||||||
|
|
||||||
public static async Task<TimeSpan?> GetTimeSpanAsync(this IDistributedCache cache, string key, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
var value = await cache.GetAsync(key, cToken);
|
|
||||||
return value is null ? null : new(BitConverter.ToInt64(value, 0));
|
|
||||||
}
|
|
||||||
|
|
||||||
//TODO: use code generator
|
|
||||||
#region GetOrSetAsync
|
|
||||||
|
|
||||||
#region string
|
|
||||||
public static async Task<string> GetOrSetAsync(this IDistributedCache cache, string key, Func<string> factory, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
var value = await cache.GetStringAsync(key, cToken);
|
|
||||||
if (value is null)
|
|
||||||
{
|
|
||||||
// create new and save
|
|
||||||
value = factory();
|
|
||||||
|
|
||||||
Task CacheAsync() => options is null
|
|
||||||
? cache.SetStringAsync(key, value, cToken)
|
|
||||||
: cache.SetStringAsync(key, value, options, cToken);
|
|
||||||
|
|
||||||
if (cacheInBackground)
|
|
||||||
_ = Task.Run(async () => await CacheAsync(), cToken);
|
|
||||||
else
|
|
||||||
await CacheAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task<string> GetOrSetAsync(this IDistributedCache cache, string key, Func<Task<string>> factoryAsync, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
var value = await cache.GetStringAsync(key, cToken);
|
|
||||||
if(value is null)
|
|
||||||
{
|
|
||||||
// create new and save
|
|
||||||
value = await factoryAsync();
|
|
||||||
|
|
||||||
Task CacheAsync() => options is null
|
|
||||||
? cache.SetStringAsync(key: key, value: value, token: cToken)
|
|
||||||
: cache.SetStringAsync(key: key, value: value, options: options, token: cToken);
|
|
||||||
|
|
||||||
if (cacheInBackground)
|
|
||||||
_ = Task.Run(async () => await CacheAsync(), cToken);
|
|
||||||
else
|
|
||||||
await CacheAsync();
|
|
||||||
}
|
|
||||||
|
|
||||||
return value;
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#region DateTime
|
|
||||||
public static async Task<DateTime> GetOrSetAsync(this IDistributedCache cache, string key, Func<DateTime> factory, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
if (await cache.GetDateTimeAsync(key, cToken) is DateTime dateTimeValue)
|
|
||||||
return dateTimeValue;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// create new and save
|
|
||||||
var newValue = factory();
|
|
||||||
|
|
||||||
Task CacheAsync() => options is null
|
|
||||||
? cache.SetDateTimeAsync(key, newValue, cToken: cToken)
|
|
||||||
: cache.SetDateTimeAsync(key, newValue, options, cToken);
|
|
||||||
|
|
||||||
if (cacheInBackground)
|
|
||||||
_ = Task.Run(async () => await CacheAsync(), cToken);
|
|
||||||
else
|
|
||||||
await CacheAsync();
|
|
||||||
|
|
||||||
return newValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public static async Task<DateTime> GetOrSetAsync(this IDistributedCache cache, string key, Func<Task<DateTime>> factory, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
|
||||||
{
|
|
||||||
if (await cache.GetDateTimeAsync(key, cToken) is DateTime dateTimeValue)
|
|
||||||
return dateTimeValue;
|
|
||||||
else
|
|
||||||
{
|
|
||||||
// create new and save
|
|
||||||
var newValue = await factory();
|
|
||||||
|
|
||||||
Task CacheAsync() => options is null
|
|
||||||
? cache.SetDateTimeAsync(key, newValue, cToken: cToken)
|
|
||||||
: cache.SetDateTimeAsync(key, newValue, options, cToken);
|
|
||||||
|
|
||||||
if (cacheInBackground)
|
|
||||||
_ = Task.Run(async () => await CacheAsync(), cToken);
|
|
||||||
else
|
|
||||||
await CacheAsync();
|
|
||||||
|
|
||||||
return newValue;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
#endregion
|
|
||||||
|
|
||||||
#endregion
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Task SetDateTimeAsync(this IDistributedCache cache, string key, DateTime value, DistributedCacheEntryOptions? options = null, CancellationToken cToken = default)
|
||||||
|
=> cache.SetLongAsync(key: key, value: value.Ticks, options: options, cToken: cToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<DateTime?> GetDateTimeAsync(this IDistributedCache cache, string key, CancellationToken cToken = default)
|
||||||
|
{
|
||||||
|
var value = await cache.GetAsync(key, cToken);
|
||||||
|
return value is null ? null : new(BitConverter.ToInt64(value, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="value"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static Task SetTimeSpanAsync(this IDistributedCache cache, string key, TimeSpan value, DistributedCacheEntryOptions? options = null, CancellationToken cToken = default)
|
||||||
|
=> cache.SetLongAsync(key: key, value: value.Ticks, options: options, cToken);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<TimeSpan?> GetTimeSpanAsync(this IDistributedCache cache, string key, CancellationToken cToken = default)
|
||||||
|
{
|
||||||
|
var value = await cache.GetAsync(key, cToken);
|
||||||
|
return value is null ? null : new(BitConverter.ToInt64(value, 0));
|
||||||
|
}
|
||||||
|
|
||||||
|
//TODO: use code generator
|
||||||
|
#region GetOrSetAsync
|
||||||
|
|
||||||
|
#region string
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="factory"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cacheInBackground"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<string> GetOrSetAsync(this IDistributedCache cache, string key, Func<string> factory, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
||||||
|
{
|
||||||
|
var value = await cache.GetStringAsync(key, cToken);
|
||||||
|
if (value is null)
|
||||||
|
{
|
||||||
|
// create new and save
|
||||||
|
value = factory();
|
||||||
|
|
||||||
|
Task CacheAsync() => options is null
|
||||||
|
? cache.SetStringAsync(key, value, cToken)
|
||||||
|
: cache.SetStringAsync(key, value, options, cToken);
|
||||||
|
|
||||||
|
if (cacheInBackground)
|
||||||
|
_ = Task.Run(async () => await CacheAsync(), cToken);
|
||||||
|
else
|
||||||
|
await CacheAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="factoryAsync"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cacheInBackground"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<string> GetOrSetAsync(this IDistributedCache cache, string key, Func<Task<string>> factoryAsync, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
||||||
|
{
|
||||||
|
var value = await cache.GetStringAsync(key, cToken);
|
||||||
|
if(value is null)
|
||||||
|
{
|
||||||
|
// create new and save
|
||||||
|
value = await factoryAsync();
|
||||||
|
|
||||||
|
Task CacheAsync() => options is null
|
||||||
|
? cache.SetStringAsync(key: key, value: value, token: cToken)
|
||||||
|
: cache.SetStringAsync(key: key, value: value, options: options, token: cToken);
|
||||||
|
|
||||||
|
if (cacheInBackground)
|
||||||
|
_ = Task.Run(async () => await CacheAsync(), cToken);
|
||||||
|
else
|
||||||
|
await CacheAsync();
|
||||||
|
}
|
||||||
|
|
||||||
|
return value;
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#region DateTime
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="factory"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cacheInBackground"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<DateTime> GetOrSetAsync(this IDistributedCache cache, string key, Func<DateTime> factory, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
||||||
|
{
|
||||||
|
if (await cache.GetDateTimeAsync(key, cToken) is DateTime dateTimeValue)
|
||||||
|
return dateTimeValue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// create new and save
|
||||||
|
var newValue = factory();
|
||||||
|
|
||||||
|
Task CacheAsync() => options is null
|
||||||
|
? cache.SetDateTimeAsync(key, newValue, cToken: cToken)
|
||||||
|
: cache.SetDateTimeAsync(key, newValue, options, cToken);
|
||||||
|
|
||||||
|
if (cacheInBackground)
|
||||||
|
_ = Task.Run(async () => await CacheAsync(), cToken);
|
||||||
|
else
|
||||||
|
await CacheAsync();
|
||||||
|
|
||||||
|
return newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="cache"></param>
|
||||||
|
/// <param name="key"></param>
|
||||||
|
/// <param name="factory"></param>
|
||||||
|
/// <param name="options"></param>
|
||||||
|
/// <param name="cacheInBackground"></param>
|
||||||
|
/// <param name="cToken"></param>
|
||||||
|
/// <returns></returns>
|
||||||
|
public static async Task<DateTime> GetOrSetAsync(this IDistributedCache cache, string key, Func<Task<DateTime>> factory, DistributedCacheEntryOptions? options = null, bool cacheInBackground = false, CancellationToken cToken = default)
|
||||||
|
{
|
||||||
|
if (await cache.GetDateTimeAsync(key, cToken) is DateTime dateTimeValue)
|
||||||
|
return dateTimeValue;
|
||||||
|
else
|
||||||
|
{
|
||||||
|
// create new and save
|
||||||
|
var newValue = await factory();
|
||||||
|
|
||||||
|
Task CacheAsync() => options is null
|
||||||
|
? cache.SetDateTimeAsync(key, newValue, cToken: cToken)
|
||||||
|
: cache.SetDateTimeAsync(key, newValue, options, cToken);
|
||||||
|
|
||||||
|
if (cacheInBackground)
|
||||||
|
_ = Task.Run(async () => await CacheAsync(), cToken);
|
||||||
|
else
|
||||||
|
await CacheAsync();
|
||||||
|
|
||||||
|
return newValue;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
#endregion
|
||||||
|
|
||||||
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -1,14 +1,27 @@
|
|||||||
using EnvelopeGenerator.Application.DTOs.Messaging;
|
using EnvelopeGenerator.Application.DTOs.Messaging;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Extensions
|
namespace EnvelopeGenerator.Application.Extensions;
|
||||||
{
|
|
||||||
public static class MappingExtensions
|
|
||||||
{
|
|
||||||
public static bool Ok(this GtxMessagingResponse gtxMessagingResponse)
|
|
||||||
=> gtxMessagingResponse.TryGetValue("message-status", out var status)
|
|
||||||
&& status?.ToString()?.ToLower() == "ok";
|
|
||||||
|
|
||||||
public static string ToBase64String(this byte[] bytes)
|
/// <summary>
|
||||||
=> Convert.ToBase64String(bytes);
|
/// Provides extension methods for common mapping and conversion operations.
|
||||||
}
|
/// </summary>
|
||||||
|
public static class MappingExtensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Determines whether the response indicates a successful "OK" message status.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="gtxMessagingResponse">The response object to evaluate.</param>
|
||||||
|
/// <returns><see langword="true"/> if the response contains a "message-status" key with a value of "ok" (case-insensitive);
|
||||||
|
/// otherwise, <see langword="false"/>.</returns>
|
||||||
|
public static bool Ok(this GtxMessagingResponse gtxMessagingResponse)
|
||||||
|
=> gtxMessagingResponse.TryGetValue("message-status", out var status)
|
||||||
|
&& status?.ToString()?.ToLower() == "ok";
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
/// Converts the specified byte array to its equivalent string representation encoded in base-64.
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="bytes">The byte array to encode.</param>
|
||||||
|
/// <returns>A base-64 encoded string representation of the input byte array.</returns>
|
||||||
|
public static string ToBase64String(this byte[] bytes)
|
||||||
|
=> Convert.ToBase64String(bytes);
|
||||||
}
|
}
|
||||||
@@ -10,6 +10,7 @@ namespace EnvelopeGenerator.Application.Histories.Queries.Read;
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
public class ReadHistoryQueryHandler : IRequestHandler<ReadHistoryQuery, IEnumerable<ReadHistoryResponse>>
|
public class ReadHistoryQueryHandler : IRequestHandler<ReadHistoryQuery, IEnumerable<ReadHistoryResponse>>
|
||||||
{
|
{
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
private readonly IEnvelopeHistoryRepository _repository;
|
private readonly IEnvelopeHistoryRepository _repository;
|
||||||
|
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
@@ -19,6 +20,7 @@ public class ReadHistoryQueryHandler : IRequestHandler<ReadHistoryQuery, IEnumer
|
|||||||
/// </summary>
|
/// </summary>
|
||||||
/// <param name="repository"></param>
|
/// <param name="repository"></param>
|
||||||
/// <param name="mapper"></param>
|
/// <param name="mapper"></param>
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public ReadHistoryQueryHandler(IEnvelopeHistoryRepository repository, IMapper mapper)
|
public ReadHistoryQueryHandler(IEnvelopeHistoryRepository repository, IMapper mapper)
|
||||||
{
|
{
|
||||||
_repository = repository;
|
_repository = repository;
|
||||||
@@ -41,4 +43,4 @@ public class ReadHistoryQueryHandler : IRequestHandler<ReadHistoryQuery, IEnumer
|
|||||||
|
|
||||||
return _mapper.Map<IEnumerable<ReadHistoryResponse>>(hists);
|
return _mapper.Map<IEnumerable<ReadHistoryResponse>>(hists);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -20,7 +20,7 @@ public class ReadHistoryResponse
|
|||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the reference identifier of the user who performed the action.
|
/// Gets or sets the reference identifier of the user who performed the action.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public string UserReference { get; set; }
|
public required string UserReference { get; set; }
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets or sets the status code of the envelope.
|
/// Gets or sets the status code of the envelope.
|
||||||
|
|||||||
@@ -74,4 +74,9 @@ public static class Key
|
|||||||
///
|
///
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static readonly string Default = nameof(Default);
|
public static readonly string Default = nameof(Default);
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
public static readonly string DbMigrationTest = nameof(DbMigrationTest);
|
||||||
}
|
}
|
||||||
@@ -1,25 +0,0 @@
|
|||||||
using AutoMapper;
|
|
||||||
using DigitalData.Core.Application;
|
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
using EnvelopeGenerator.Application.Contracts.Repositories;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services;
|
|
||||||
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
[Obsolete("Use MediatR")]
|
|
||||||
public class UserReceiverService : BasicCRUDService<IUserReceiverRepository, UserReceiverDto, UserReceiver, int>, IUserReceiverService
|
|
||||||
{
|
|
||||||
/// <summary>
|
|
||||||
///
|
|
||||||
/// </summary>
|
|
||||||
/// <param name="repository"></param>
|
|
||||||
/// <param name="mapper"></param>
|
|
||||||
public UserReceiverService(IUserReceiverRepository repository, IMapper mapper)
|
|
||||||
: base(repository, mapper)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -143,7 +143,9 @@ Namespace Jobs
|
|||||||
Logger.Debug("Documents merged!")
|
Logger.Debug("Documents merged!")
|
||||||
|
|
||||||
Dim oOutputDirectoryPath = Path.Combine(Config.ExportPath, ParentFolderUID)
|
Dim oOutputDirectoryPath = Path.Combine(Config.ExportPath, ParentFolderUID)
|
||||||
|
Logger.Debug($"oOutputDirectoryPath is {oOutputDirectoryPath}")
|
||||||
If Not Directory.Exists(oOutputDirectoryPath) Then
|
If Not Directory.Exists(oOutputDirectoryPath) Then
|
||||||
|
Logger.Debug($"Directory not existing. Creating ... ")
|
||||||
Directory.CreateDirectory(oOutputDirectoryPath)
|
Directory.CreateDirectory(oOutputDirectoryPath)
|
||||||
End If
|
End If
|
||||||
Dim oOutputFilePath = Path.Combine(oOutputDirectoryPath, $"{oEnvelope.Uuid}.pdf")
|
Dim oOutputFilePath = Path.Combine(oOutputDirectoryPath, $"{oEnvelope.Uuid}.pdf")
|
||||||
@@ -172,6 +174,7 @@ Namespace Jobs
|
|||||||
Throw New ApplicationException("Envelope could not be finalized")
|
Throw New ApplicationException("Envelope could not be finalized")
|
||||||
End If
|
End If
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
|
Logger.Error(ex)
|
||||||
Logger.Warn(ex, $"Unhandled exception while working envelope [{oId}]")
|
Logger.Warn(ex, $"Unhandled exception while working envelope [{oId}]")
|
||||||
End Try
|
End Try
|
||||||
|
|
||||||
|
|||||||
@@ -6,14 +6,12 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
[Table("TBSIG_CONFIG", Schema = "dbo")]
|
[Table("TBSIG_CONFIG", Schema = "dbo")]
|
||||||
public class Config
|
public class Config
|
||||||
{
|
{
|
||||||
[Column("DOCUMENT_PATH", TypeName = "nvarchar(256)")]
|
|
||||||
public string DocumentPath { get; set; }
|
|
||||||
|
|
||||||
[Column("SENDING_PROFILE", TypeName = "int")]
|
[Column("SENDING_PROFILE", TypeName = "int")]
|
||||||
[Required]
|
[Required]
|
||||||
public int SendingProfile { get; set; }
|
public int SendingProfile { get; set; }
|
||||||
|
|
||||||
[Column("SIGNATURE_HOST", TypeName = "nvarchar(128)")]
|
[Column("SIGNATURE_HOST", TypeName = "nvarchar(128)")]
|
||||||
|
[Required]
|
||||||
public string SignatureHost { get; set; }
|
public string SignatureHost { get; set; }
|
||||||
|
|
||||||
[Column("EXTERNAL_PROGRAM_NAME", TypeName = "nvarchar(30)")]
|
[Column("EXTERNAL_PROGRAM_NAME", TypeName = "nvarchar(30)")]
|
||||||
|
|||||||
@@ -38,10 +38,8 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
[Column("COMMENT", TypeName = "nvarchar(max)")]
|
[Column("COMMENT", TypeName = "nvarchar(max)")]
|
||||||
public string Comment { get; set; }
|
public string Comment { get; set; }
|
||||||
|
|
||||||
[ForeignKey("UserReference")]
|
|
||||||
public virtual User Sender { get; set; }
|
public virtual User Sender { get; set; }
|
||||||
|
|
||||||
[ForeignKey("UserReference")]
|
|
||||||
public virtual Receiver Receiver { get; set; }
|
public virtual Receiver Receiver { get; set; }
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
|
|||||||
@@ -23,7 +23,7 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
[NotMapped]
|
[NotMapped]
|
||||||
public Envelope Envelope { get; set; }
|
public Envelope Envelope { get; set; }
|
||||||
|
|
||||||
[Column("RECEIVER_MAIL")]
|
[Column("RECEIVER_MAIL", TypeName = "nvarchar(250)")]
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(250)]
|
[StringLength(250)]
|
||||||
[TemplatePlaceholder("NAME_RECEIVER")]
|
[TemplatePlaceholder("NAME_RECEIVER")]
|
||||||
@@ -33,9 +33,9 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
[Required]
|
[Required]
|
||||||
public DateTime DateValid { get; set; }
|
public DateTime DateValid { get; set; }
|
||||||
|
|
||||||
[Column("ADDED_WHO")]
|
[Column("ADDED_WHO", TypeName = "nvarchar(250)")]
|
||||||
[Required]
|
[Required]
|
||||||
[StringLength(100)]
|
[StringLength(250)]
|
||||||
public string AddedWho { get; set; }
|
public string AddedWho { get; set; }
|
||||||
|
|
||||||
public Receiver Receiver { get; set; }
|
public Receiver Receiver { get; set; }
|
||||||
|
|||||||
@@ -17,7 +17,8 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Required, EmailAddress]
|
[Required, EmailAddress]
|
||||||
[Column("EMAIL_ADDRESS", TypeName = "nvarchar(128)")]
|
[Column("EMAIL_ADDRESS", TypeName = "nvarchar(250)")]
|
||||||
|
[StringLength(250)]
|
||||||
public string EmailAddress { get; set; }
|
public string EmailAddress { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
|
|||||||
@@ -1,39 +0,0 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
#if NETFRAMEWORK
|
|
||||||
using System;
|
|
||||||
#endif
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
|
||||||
{
|
|
||||||
[Table("TBSIG_USER_RECEIVER", Schema = "dbo")]
|
|
||||||
public class UserReceiver
|
|
||||||
{
|
|
||||||
[Key]
|
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
|
||||||
[Column("GUID")]
|
|
||||||
public int Id { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("USER_ID")]
|
|
||||||
public int UserId { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("RECEIVER_ID")]
|
|
||||||
public int ReceiverId { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("NAME", TypeName = "nvarchar(128)")]
|
|
||||||
public string Name { get; set; }
|
|
||||||
|
|
||||||
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
|
||||||
public string CompanyName { get; set; }
|
|
||||||
|
|
||||||
[Column("JOB_TITLE", TypeName = "nvarchar(128)")]
|
|
||||||
public string JobTitle { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
|
||||||
public DateTime AddedWhen { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
26
EnvelopeGenerator.Domain/Resources/Email.Designer.cs
generated
26
EnvelopeGenerator.Domain/Resources/Email.Designer.cs
generated
@@ -1,10 +1,10 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
// Runtime Version:4.0.30319.42000
|
// Laufzeitversion:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
// the code is regenerated.
|
// der Code erneut generiert wird.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -13,12 +13,12 @@ namespace My.Resources {
|
|||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||||
// class via a tool like ResGen or Visual Studio.
|
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
@@ -33,7 +33,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
public static global::System.Resources.ResourceManager ResourceManager {
|
public static global::System.Resources.ResourceManager ResourceManager {
|
||||||
@@ -47,8 +47,8 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||||
/// resource lookups using this strongly typed resource class.
|
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
public static global::System.Globalization.CultureInfo Culture {
|
public static global::System.Globalization.CultureInfo Culture {
|
||||||
@@ -61,7 +61,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Sie haben ein Dokument zur Unterschrift erhalten: {0}.
|
/// Sucht eine lokalisierte Zeichenfolge, die Sie haben ein Dokument zur Unterschrift erhalten: {0} ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Sie_haben_ein_Dokument_zur_Unterschrift_erhalten___0_ {
|
public static string Sie_haben_ein_Dokument_zur_Unterschrift_erhalten___0_ {
|
||||||
get {
|
get {
|
||||||
|
|||||||
122
EnvelopeGenerator.Domain/Resources/Envelope.Designer.cs
generated
122
EnvelopeGenerator.Domain/Resources/Envelope.Designer.cs
generated
@@ -1,10 +1,10 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
// Runtime Version:4.0.30319.42000
|
// Laufzeitversion:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
// the code is regenerated.
|
// der Code erneut generiert wird.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -13,12 +13,12 @@ namespace My.Resources {
|
|||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||||
// class via a tool like ResGen or Visual Studio.
|
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
@@ -33,7 +33,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
public static global::System.Resources.ResourceManager ResourceManager {
|
public static global::System.Resources.ResourceManager ResourceManager {
|
||||||
@@ -47,8 +47,8 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||||
/// resource lookups using this strongly typed resource class.
|
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
public static global::System.Globalization.CultureInfo Culture {
|
public static global::System.Globalization.CultureInfo Culture {
|
||||||
@@ -61,7 +61,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten:.
|
/// Sucht eine lokalisierte Zeichenfolge, die Bitte wählen Sie die PDF-Dokumente die Sie verketten möchten: ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Dialog_Concat_PDF {
|
public static string Dialog_Concat_PDF {
|
||||||
get {
|
get {
|
||||||
@@ -70,7 +70,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Wollen Sie diesen Umschlag wirklich zurückrufen/löschen?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie diesen Umschlag wirklich zurückrufen/löschen? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Do_you_really_want_to_delete_this_envelope {
|
public static string Do_you_really_want_to_delete_this_envelope {
|
||||||
get {
|
get {
|
||||||
@@ -79,7 +79,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Wollen Sie dieses Dokument wirklich entfernen?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie dieses Dokument wirklich entfernen? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Do_you_really_want_to_remove_this_document {
|
public static string Do_you_really_want_to_remove_this_document {
|
||||||
get {
|
get {
|
||||||
@@ -88,7 +88,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Wollen Sie den ausgewählten Empfänger löschen?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie den ausgewählten Empfänger löschen? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Do_you_want_to_delete_the_selected_recipient {
|
public static string Do_you_want_to_delete_the_selected_recipient {
|
||||||
get {
|
get {
|
||||||
@@ -97,7 +97,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Wollen Sie die Signatur löschen?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie die Signatur löschen? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Do_you_want_to_delete_the_signature {
|
public static string Do_you_want_to_delete_the_signature {
|
||||||
get {
|
get {
|
||||||
@@ -106,7 +106,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Wollen Sie den Signaturprozess nun starten?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie den Signaturprozess nun starten? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Do_you_want_to_start_the_signature_process_now {
|
public static string Do_you_want_to_start_the_signature_process_now {
|
||||||
get {
|
get {
|
||||||
@@ -115,7 +115,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Das Dokument konnte nicht geöffnet werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Das Dokument konnte nicht geöffnet werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Document_could_not_be_opened {
|
public static string Document_could_not_be_opened {
|
||||||
get {
|
get {
|
||||||
@@ -124,7 +124,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Dokument konnte nicht gespeichert werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Dokument konnte nicht gespeichert werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Document_Could_Not_Be_Saved {
|
public static string Document_Could_Not_Be_Saved {
|
||||||
get {
|
get {
|
||||||
@@ -133,7 +133,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag an Empfänger {0} weitergeleitet..
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag an Empfänger {0} weitergeleitet. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Document_forwarded {
|
public static string Document_forwarded {
|
||||||
get {
|
get {
|
||||||
@@ -142,7 +142,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Aktuell ist per Drag and Drop nur eine PDF-Datei erlaubt..
|
/// Sucht eine lokalisierte Zeichenfolge, die Aktuell ist per Drag and Drop nur eine PDF-Datei erlaubt. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Drop_only_one_file {
|
public static string Drop_only_one_file {
|
||||||
get {
|
get {
|
||||||
@@ -151,7 +151,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Bearbeite Umschlag.
|
/// Sucht eine lokalisierte Zeichenfolge, die Bearbeite Umschlag ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Edit_Envelope {
|
public static string Edit_Envelope {
|
||||||
get {
|
get {
|
||||||
@@ -160,7 +160,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signatur-Elemente konnten nicht geladen werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signatur-Elemente konnten nicht geladen werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Elements_could_not_be_loaded {
|
public static string Elements_could_not_be_loaded {
|
||||||
get {
|
get {
|
||||||
@@ -169,7 +169,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signatur-Elemente konnten nicht gespeichert werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signatur-Elemente konnten nicht gespeichert werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Elements_could_not_be_saved {
|
public static string Elements_could_not_be_saved {
|
||||||
get {
|
get {
|
||||||
@@ -178,7 +178,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Der Umschlag wurde bereits versendet!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Der Umschlag wurde bereits versendet! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Envelope_already_sent {
|
public static string Envelope_already_sent {
|
||||||
get {
|
get {
|
||||||
@@ -187,7 +187,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag konnte nicht gesendet werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag konnte nicht gesendet werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Envelope_could_not_be_sent {
|
public static string Envelope_could_not_be_sent {
|
||||||
get {
|
get {
|
||||||
@@ -196,7 +196,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag-Editor.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag-Editor ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Envelope_Editor {
|
public static string Envelope_Editor {
|
||||||
get {
|
get {
|
||||||
@@ -205,7 +205,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Die Einladungen zum Signieren wurden zum Versand eingereiht..
|
/// Sucht eine lokalisierte Zeichenfolge, die Die Einladungen zum Signieren wurden zum Versand eingereiht. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Envelope_Invitations_Sent {
|
public static string Envelope_Invitations_Sent {
|
||||||
get {
|
get {
|
||||||
@@ -214,7 +214,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Übersicht.
|
/// Sucht eine lokalisierte Zeichenfolge, die Übersicht ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Envelope_Overview {
|
public static string Envelope_Overview {
|
||||||
get {
|
get {
|
||||||
@@ -223,7 +223,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Die Einladungen wurden erfolgreich zum Versand bereitgestellt..
|
/// Sucht eine lokalisierte Zeichenfolge, die Die Einladungen wurden erfolgreich zum Versand bereitgestellt. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Envelope_successfully_sent {
|
public static string Envelope_successfully_sent {
|
||||||
get {
|
get {
|
||||||
@@ -232,7 +232,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Die Email-Adresse [ @Mail ] konnte nicht validiert werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Die Email-Adresse [ @Mail ] konnte nicht validiert werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Error_email_Validation {
|
public static string Error_email_Validation {
|
||||||
get {
|
get {
|
||||||
@@ -241,8 +241,8 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to The mobile phone number [@PhoneNr] could not be validated.
|
/// Sucht eine lokalisierte Zeichenfolge, die The mobile phone number [@PhoneNr] could not be validated.
|
||||||
///Pattern: +491234567890.
|
///Pattern: +491234567890 ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Error_phone_Validation {
|
public static string Error_phone_Validation {
|
||||||
get {
|
get {
|
||||||
@@ -251,7 +251,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehler beim Senden des Umschlags:.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Senden des Umschlags: ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Error_sending_the_envelope {
|
public static string Error_sending_the_envelope {
|
||||||
get {
|
get {
|
||||||
@@ -260,7 +260,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehler beim Speichern des Umschlags!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Speichern des Umschlags! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Error_when_saving_the_envelope {
|
public static string Error_when_saving_the_envelope {
|
||||||
get {
|
get {
|
||||||
@@ -269,7 +269,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehler beim Speichern der Empfänger!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Speichern der Empfänger! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Error_when_saving_the_recipients {
|
public static string Error_when_saving_the_recipients {
|
||||||
get {
|
get {
|
||||||
@@ -278,7 +278,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehler bei der Validierung des Umschlags:.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehler bei der Validierung des Umschlags: ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Error_when_validating_the_envelope {
|
public static string Error_when_validating_the_envelope {
|
||||||
get {
|
get {
|
||||||
@@ -287,7 +287,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehler beim Speichern des Umschlags: .
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehler beim Speichern des Umschlags: ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Errors_when_saving_the_envelope {
|
public static string Errors_when_saving_the_envelope {
|
||||||
get {
|
get {
|
||||||
@@ -296,7 +296,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Mindestens ein Empfänger hat keine Anrede oder keine Email Adresse..
|
/// Sucht eine lokalisierte Zeichenfolge, die Mindestens ein Empfänger hat keine Anrede oder keine Email Adresse. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Incomplete_Receivers {
|
public static string Incomplete_Receivers {
|
||||||
get {
|
get {
|
||||||
@@ -305,7 +305,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Empfänger {0} hat keine gültige Email Addresse..
|
/// Sucht eine lokalisierte Zeichenfolge, die Empfänger {0} hat keine gültige Email Addresse. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Invalid_Email_Address {
|
public static string Invalid_Email_Address {
|
||||||
get {
|
get {
|
||||||
@@ -314,7 +314,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Die Einladung an [@Mail] wurde nochmal versendet!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Die Einladung an [@Mail] wurde nochmal versendet! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Invitation_successfully_resend {
|
public static string Invitation_successfully_resend {
|
||||||
get {
|
get {
|
||||||
@@ -323,7 +323,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehlendes Dokument.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Missing_Documents {
|
public static string Missing_Documents {
|
||||||
get {
|
get {
|
||||||
@@ -332,7 +332,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Es muss mindestens ein Signaturfeld gesetzt werden..
|
/// Sucht eine lokalisierte Zeichenfolge, die Es muss mindestens ein Signaturfeld gesetzt werden. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Missing_Elements {
|
public static string Missing_Elements {
|
||||||
get {
|
get {
|
||||||
@@ -341,7 +341,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Für den Empfänger {0} gibt es noch kein Signaturfeld..
|
/// Sucht eine lokalisierte Zeichenfolge, die Für den Empfänger {0} gibt es noch kein Signaturfeld. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Missing_Elements_for_Receiver {
|
public static string Missing_Elements_for_Receiver {
|
||||||
get {
|
get {
|
||||||
@@ -350,7 +350,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehlende Nachricht.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehlende Nachricht ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Missing_Message {
|
public static string Missing_Message {
|
||||||
get {
|
get {
|
||||||
@@ -359,7 +359,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fehlende Empfänger.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fehlende Empfänger ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Missing_Receivers {
|
public static string Missing_Receivers {
|
||||||
get {
|
get {
|
||||||
@@ -368,7 +368,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to .
|
/// Sucht eine lokalisierte Zeichenfolge, die ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string ModificationOriginFile_FormFields {
|
public static string ModificationOriginFile_FormFields {
|
||||||
get {
|
get {
|
||||||
@@ -377,7 +377,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Neuer Umschlag.
|
/// Sucht eine lokalisierte Zeichenfolge, die Neuer Umschlag ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string New_Envelope {
|
public static string New_Envelope {
|
||||||
get {
|
get {
|
||||||
@@ -386,7 +386,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Es ist nur eine Datei zulässig!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Es ist nur eine Datei zulässig! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Only_one_file_is_allowed {
|
public static string Only_one_file_is_allowed {
|
||||||
get {
|
get {
|
||||||
@@ -395,7 +395,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Bitte lesen und unterzeichnen Sie dieses Dokument..
|
/// Sucht eine lokalisierte Zeichenfolge, die Bitte lesen und unterzeichnen Sie dieses Dokument. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Please_read_and_sign_this_document {
|
public static string Please_read_and_sign_this_document {
|
||||||
get {
|
get {
|
||||||
@@ -404,7 +404,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Bitte wählen Sie einen Empfänger aus dem Reiter Empfänger aus..
|
/// Sucht eine lokalisierte Zeichenfolge, die Bitte wählen Sie einen Empfänger aus dem Reiter Empfänger aus. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Please_select_a_recipient_from_the_Recipients_tab {
|
public static string Please_select_a_recipient_from_the_Recipients_tab {
|
||||||
get {
|
get {
|
||||||
@@ -413,7 +413,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Empfänger konnte nicht gelöscht werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Empfänger konnte nicht gelöscht werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Recipient_could_not_be_deleted {
|
public static string Recipient_could_not_be_deleted {
|
||||||
get {
|
get {
|
||||||
@@ -422,7 +422,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Soll der Umschlag gespeichert werden?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Soll der Umschlag gespeichert werden? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Should_The_Envelope_Be_Saved {
|
public static string Should_The_Envelope_Be_Saved {
|
||||||
get {
|
get {
|
||||||
@@ -431,7 +431,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Platzhalter Signatur.
|
/// Sucht eine lokalisierte Zeichenfolge, die Platzhalter Signatur ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Signature {
|
public static string Signature {
|
||||||
get {
|
get {
|
||||||
@@ -440,7 +440,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signatur-Editor.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signatur-Editor ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Signature_Editor {
|
public static string Signature_Editor {
|
||||||
get {
|
get {
|
||||||
@@ -449,7 +449,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Der Umschlag konnte nicht gelöscht werden!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Der Umschlag konnte nicht gelöscht werden! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string The_envelope_could_not_be_deleted {
|
public static string The_envelope_could_not_be_deleted {
|
||||||
get {
|
get {
|
||||||
@@ -458,7 +458,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Der Umschlag enthält keine Dokumente.
|
/// Sucht eine lokalisierte Zeichenfolge, die Der Umschlag enthält keine Dokumente ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string The_envelope_does_not_contain_any_documents {
|
public static string The_envelope_does_not_contain_any_documents {
|
||||||
get {
|
get {
|
||||||
@@ -467,7 +467,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Es gibt für diesen Empfänger bereits Elemente. Wollen Sie den Empfänger trotzdem löschen?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Es gibt für diesen Empfänger bereits Elemente. Wollen Sie den Empfänger trotzdem löschen? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string There_are_already_elements_for_this_recipient {
|
public static string There_are_already_elements_for_this_recipient {
|
||||||
get {
|
get {
|
||||||
@@ -476,7 +476,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese Speichern?.
|
/// Sucht eine lokalisierte Zeichenfolge, die Es sind ungespeicherte Änderungen vorhanden. Wollen Sie diese Speichern? ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string There_are_unsaved_changes {
|
public static string There_are_unsaved_changes {
|
||||||
get {
|
get {
|
||||||
@@ -485,7 +485,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Sie haben ein Dokument zum signieren erhalten:.
|
/// Sucht eine lokalisierte Zeichenfolge, die Sie haben ein Dokument zum signieren erhalten: ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string You_received_a_document_to_sign {
|
public static string You_received_a_document_to_sign {
|
||||||
get {
|
get {
|
||||||
|
|||||||
110
EnvelopeGenerator.Domain/Resources/Model.Designer.cs
generated
110
EnvelopeGenerator.Domain/Resources/Model.Designer.cs
generated
@@ -1,10 +1,10 @@
|
|||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
// <auto-generated>
|
// <auto-generated>
|
||||||
// This code was generated by a tool.
|
// Dieser Code wurde von einem Tool generiert.
|
||||||
// Runtime Version:4.0.30319.42000
|
// Laufzeitversion:4.0.30319.42000
|
||||||
//
|
//
|
||||||
// Changes to this file may cause incorrect behavior and will be lost if
|
// Änderungen an dieser Datei können falsches Verhalten verursachen und gehen verloren, wenn
|
||||||
// the code is regenerated.
|
// der Code erneut generiert wird.
|
||||||
// </auto-generated>
|
// </auto-generated>
|
||||||
//------------------------------------------------------------------------------
|
//------------------------------------------------------------------------------
|
||||||
|
|
||||||
@@ -13,12 +13,12 @@ namespace My.Resources {
|
|||||||
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// A strongly-typed resource class, for looking up localized strings, etc.
|
/// Eine stark typisierte Ressourcenklasse zum Suchen von lokalisierten Zeichenfolgen usw.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
// This class was auto-generated by the StronglyTypedResourceBuilder
|
// Diese Klasse wurde von der StronglyTypedResourceBuilder automatisch generiert
|
||||||
// class via a tool like ResGen or Visual Studio.
|
// -Klasse über ein Tool wie ResGen oder Visual Studio automatisch generiert.
|
||||||
// To add or remove a member, edit your .ResX file then rerun ResGen
|
// Um einen Member hinzuzufügen oder zu entfernen, bearbeiten Sie die .ResX-Datei und führen dann ResGen
|
||||||
// with the /str option, or rebuild your VS project.
|
// mit der /str-Option erneut aus, oder Sie erstellen Ihr VS-Projekt neu.
|
||||||
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
[global::System.CodeDom.Compiler.GeneratedCodeAttribute("System.Resources.Tools.StronglyTypedResourceBuilder", "17.0.0.0")]
|
||||||
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
[global::System.Diagnostics.DebuggerNonUserCodeAttribute()]
|
||||||
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
[global::System.Runtime.CompilerServices.CompilerGeneratedAttribute()]
|
||||||
@@ -33,7 +33,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Returns the cached ResourceManager instance used by this class.
|
/// Gibt die zwischengespeicherte ResourceManager-Instanz zurück, die von dieser Klasse verwendet wird.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
public static global::System.Resources.ResourceManager ResourceManager {
|
public static global::System.Resources.ResourceManager ResourceManager {
|
||||||
@@ -47,8 +47,8 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Overrides the current thread's CurrentUICulture property for all
|
/// Überschreibt die CurrentUICulture-Eigenschaft des aktuellen Threads für alle
|
||||||
/// resource lookups using this strongly typed resource class.
|
/// Ressourcenzuordnungen, die diese stark typisierte Ressourcenklasse verwenden.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
[global::System.ComponentModel.EditorBrowsableAttribute(global::System.ComponentModel.EditorBrowsableState.Advanced)]
|
||||||
public static global::System.Globalization.CultureInfo Culture {
|
public static global::System.Globalization.CultureInfo Culture {
|
||||||
@@ -61,7 +61,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Zugriffscode korrekt eingegeben.
|
/// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode korrekt eingegeben ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string AccessCodeCorrect {
|
public static string AccessCodeCorrect {
|
||||||
get {
|
get {
|
||||||
@@ -70,7 +70,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Zugriffscode falsch eingegeben.
|
/// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode falsch eingegeben ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string AccessCodeIncorrect {
|
public static string AccessCodeIncorrect {
|
||||||
get {
|
get {
|
||||||
@@ -79,7 +79,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Zugriffscode angefordert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode angefordert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string AccessCodeRequested {
|
public static string AccessCodeRequested {
|
||||||
get {
|
get {
|
||||||
@@ -88,7 +88,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Fortgeschrittene Elektronische Signatur.
|
/// Sucht eine lokalisierte Zeichenfolge, die Fortgeschrittene Elektronische Signatur ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string AdvancedElectronicSignature {
|
public static string AdvancedElectronicSignature {
|
||||||
get {
|
get {
|
||||||
@@ -97,7 +97,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Abgeschlossen.
|
/// Sucht eine lokalisierte Zeichenfolge, die Abgeschlossen ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Completed {
|
public static string Completed {
|
||||||
get {
|
get {
|
||||||
@@ -106,7 +106,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Vollständig Signiert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Vollständig Signiert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string CompletelySigned {
|
public static string CompletelySigned {
|
||||||
get {
|
get {
|
||||||
@@ -115,7 +115,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Vertrag.
|
/// Sucht eine lokalisierte Zeichenfolge, die Vertrag ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Contract {
|
public static string Contract {
|
||||||
get {
|
get {
|
||||||
@@ -124,7 +124,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Erstellt.
|
/// Sucht eine lokalisierte Zeichenfolge, die Erstellt ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Created {
|
public static string Created {
|
||||||
get {
|
get {
|
||||||
@@ -133,7 +133,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Dokument Rotation geändert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Dokument Rotation geändert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string DocumentMod_Rotation {
|
public static string DocumentMod_Rotation {
|
||||||
get {
|
get {
|
||||||
@@ -142,7 +142,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Dokument geöffnet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Dokument geöffnet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string DocumentOpened {
|
public static string DocumentOpened {
|
||||||
get {
|
get {
|
||||||
@@ -151,7 +151,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Unterzeichnung abgelehnt.
|
/// Sucht eine lokalisierte Zeichenfolge, die Unterzeichnung abgelehnt ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string DocumentRejected {
|
public static string DocumentRejected {
|
||||||
get {
|
get {
|
||||||
@@ -160,7 +160,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Dokument unterzeichnet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Dokument unterzeichnet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string DocumentSigned {
|
public static string DocumentSigned {
|
||||||
get {
|
get {
|
||||||
@@ -169,7 +169,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Entwurf.
|
/// Sucht eine lokalisierte Zeichenfolge, die Entwurf ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Draft {
|
public static string Draft {
|
||||||
get {
|
get {
|
||||||
@@ -178,7 +178,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Archiviert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Archiviert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeArchived {
|
public static string EnvelopeArchived {
|
||||||
get {
|
get {
|
||||||
@@ -187,7 +187,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Vollständig signiert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Vollständig signiert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeCompletelySigned {
|
public static string EnvelopeCompletelySigned {
|
||||||
get {
|
get {
|
||||||
@@ -196,7 +196,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag Erstellt.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag Erstellt ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeCreated {
|
public static string EnvelopeCreated {
|
||||||
get {
|
get {
|
||||||
@@ -205,7 +205,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag Gelöscht.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag Gelöscht ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeDeleted {
|
public static string EnvelopeDeleted {
|
||||||
get {
|
get {
|
||||||
@@ -214,7 +214,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Teil-Signiert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Teil-Signiert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopePartlySigned {
|
public static string EnvelopePartlySigned {
|
||||||
get {
|
get {
|
||||||
@@ -223,7 +223,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag in Queue.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag in Queue ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeQueued {
|
public static string EnvelopeQueued {
|
||||||
get {
|
get {
|
||||||
@@ -232,7 +232,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag abgelehnt.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag abgelehnt ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeRejected {
|
public static string EnvelopeRejected {
|
||||||
get {
|
get {
|
||||||
@@ -241,7 +241,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signierungszertifikat erstellt.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signierungszertifikat erstellt ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeReportCreated {
|
public static string EnvelopeReportCreated {
|
||||||
get {
|
get {
|
||||||
@@ -250,7 +250,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Gespeichert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Gespeichert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeSaved {
|
public static string EnvelopeSaved {
|
||||||
get {
|
get {
|
||||||
@@ -259,7 +259,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Gesendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Gesendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeSent {
|
public static string EnvelopeSent {
|
||||||
get {
|
get {
|
||||||
@@ -268,7 +268,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Umschlag zurückgezogen.
|
/// Sucht eine lokalisierte Zeichenfolge, die Umschlag zurückgezogen ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string EnvelopeWithdrawn {
|
public static string EnvelopeWithdrawn {
|
||||||
get {
|
get {
|
||||||
@@ -277,7 +277,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Zugriffscode versendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Zugriffscode versendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string MessageAccessCodeSent {
|
public static string MessageAccessCodeSent {
|
||||||
get {
|
get {
|
||||||
@@ -286,7 +286,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Abschlussemail versendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Abschlussemail versendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string MessageCompletionSent {
|
public static string MessageCompletionSent {
|
||||||
get {
|
get {
|
||||||
@@ -295,7 +295,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signaturbestätigung versendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signaturbestätigung versendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string MessageConfirmationSent {
|
public static string MessageConfirmationSent {
|
||||||
get {
|
get {
|
||||||
@@ -304,7 +304,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Löschinformation versendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Löschinformation versendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string MessageDeletionSent {
|
public static string MessageDeletionSent {
|
||||||
get {
|
get {
|
||||||
@@ -313,7 +313,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Dokumentenlink versendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Dokumentenlink versendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string MessageInvitationSent {
|
public static string MessageInvitationSent {
|
||||||
get {
|
get {
|
||||||
@@ -322,7 +322,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Nein.
|
/// Sucht eine lokalisierte Zeichenfolge, die Nein ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string No {
|
public static string No {
|
||||||
get {
|
get {
|
||||||
@@ -331,7 +331,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Teil-Signiert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Teil-Signiert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string PartlySigned {
|
public static string PartlySigned {
|
||||||
get {
|
get {
|
||||||
@@ -340,7 +340,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Qualifizierte Signatur.
|
/// Sucht eine lokalisierte Zeichenfolge, die Qualifizierte Signatur ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string QualifiedSignature {
|
public static string QualifiedSignature {
|
||||||
get {
|
get {
|
||||||
@@ -349,7 +349,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Arbeitsanweisung.
|
/// Sucht eine lokalisierte Zeichenfolge, die Arbeitsanweisung ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string ReadAndSign {
|
public static string ReadAndSign {
|
||||||
get {
|
get {
|
||||||
@@ -358,7 +358,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Wollen Sie die 2-Faktor Definition für diesen Empfänger zurücksetzen. Der Empfänger muss sich dann neu identifizieren!.
|
/// Sucht eine lokalisierte Zeichenfolge, die Wollen Sie die 2-Faktor Definition für diesen Empfänger zurücksetzen. Der Empfänger muss sich dann neu identifizieren! ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string ResetTOTPUser {
|
public static string ResetTOTPUser {
|
||||||
get {
|
get {
|
||||||
@@ -367,7 +367,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Gespeichert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Gespeichert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Saved {
|
public static string Saved {
|
||||||
get {
|
get {
|
||||||
@@ -376,7 +376,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Gesendet.
|
/// Sucht eine lokalisierte Zeichenfolge, die Gesendet ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Sent {
|
public static string Sent {
|
||||||
get {
|
get {
|
||||||
@@ -385,7 +385,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signatur.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signatur ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Signature {
|
public static string Signature {
|
||||||
get {
|
get {
|
||||||
@@ -394,7 +394,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signatur bestätigt.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signatur bestätigt ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string SignatureConfirmed {
|
public static string SignatureConfirmed {
|
||||||
get {
|
get {
|
||||||
@@ -403,7 +403,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Signiert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Signiert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Signed {
|
public static string Signed {
|
||||||
get {
|
get {
|
||||||
@@ -412,7 +412,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Erfolgreich! Dialog wird geschlossen..
|
/// Sucht eine lokalisierte Zeichenfolge, die Erfolgreich! Dialog wird geschlossen. ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Success_FormClose {
|
public static string Success_FormClose {
|
||||||
get {
|
get {
|
||||||
@@ -421,7 +421,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Unsigniert.
|
/// Sucht eine lokalisierte Zeichenfolge, die Unsigniert ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Unsigned {
|
public static string Unsigned {
|
||||||
get {
|
get {
|
||||||
@@ -430,7 +430,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Ja.
|
/// Sucht eine lokalisierte Zeichenfolge, die Ja ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string Yes {
|
public static string Yes {
|
||||||
get {
|
get {
|
||||||
@@ -439,7 +439,7 @@ namespace My.Resources {
|
|||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Looks up a localized string similar to Ja, mit Anhang.
|
/// Sucht eine lokalisierte Zeichenfolge, die Ja, mit Anhang ähnelt.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
public static string YesWithAttachment {
|
public static string YesWithAttachment {
|
||||||
get {
|
get {
|
||||||
|
|||||||
@@ -101,6 +101,9 @@
|
|||||||
<Reference Include="DigitalData.Modules.Messaging, Version=1.9.8.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="DigitalData.Modules.Messaging, Version=1.9.8.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\DigitalData.Modules.Messaging.1.9.8\lib\net462\DigitalData.Modules.Messaging.dll</HintPath>
|
<HintPath>..\packages\DigitalData.Modules.Messaging.1.9.8\lib\net462\DigitalData.Modules.Messaging.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="DigitalData.UserManager.Domain, Version=3.2.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\UserManager.Domain.3.2.2\lib\net462\DigitalData.UserManager.Domain.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="DocumentFormat.OpenXml, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
<Reference Include="DocumentFormat.OpenXml, Version=3.2.0.0, Culture=neutral, PublicKeyToken=8fb06cb64d019a17, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\DocumentFormat.OpenXml.3.2.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
|
<HintPath>..\packages\DocumentFormat.OpenXml.3.2.0\lib\net46\DocumentFormat.OpenXml.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
@@ -238,6 +241,9 @@
|
|||||||
<Reference Include="System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
<Reference Include="System.Collections.Immutable, Version=9.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Collections.Immutable.9.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
|
<HintPath>..\packages\System.Collections.Immutable.9.0.0\lib\net462\System.Collections.Immutable.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.ComponentModel.Annotations, Version=4.2.1.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.ComponentModel.Annotations.4.7.0\lib\net461\System.ComponentModel.Annotations.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.ComponentModel.DataAnnotations" />
|
<Reference Include="System.ComponentModel.DataAnnotations" />
|
||||||
<Reference Include="System.Configuration" />
|
<Reference Include="System.Configuration" />
|
||||||
<Reference Include="System.Core" />
|
<Reference Include="System.Core" />
|
||||||
@@ -245,6 +251,9 @@
|
|||||||
<Reference Include="System.Data.Odbc, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Data.Odbc, Version=6.0.0.1, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Data.Odbc.6.0.1\lib\net461\System.Data.Odbc.dll</HintPath>
|
<HintPath>..\packages\System.Data.Odbc.6.0.1\lib\net461\System.Data.Odbc.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
<Reference Include="System.Drawing.Common, Version=4.0.0.2, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
|
<HintPath>..\packages\System.Drawing.Common.4.7.3\lib\net461\System.Drawing.Common.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
<Reference Include="System.Formats.Asn1, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
<Reference Include="System.Formats.Asn1, Version=9.0.0.0, Culture=neutral, PublicKeyToken=cc7b13ffcd2ddd51, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\System.Formats.Asn1.9.0.0\lib\net462\System.Formats.Asn1.dll</HintPath>
|
<HintPath>..\packages\System.Formats.Asn1.9.0.0\lib\net462\System.Formats.Asn1.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
|
|||||||
@@ -594,31 +594,40 @@ Public Class frmMain
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitm_ResendInvitation.ItemClick
|
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitm_ResendInvitation.ItemClick
|
||||||
Dim oView As GridView = GridEnvelopes.FocusedView
|
Dim oHandle = SplashScreenManager.ShowOverlayForm(Me)
|
||||||
Dim selReceiver As Receiver
|
Try
|
||||||
If oView.Name = ViewReceivers.Name Then
|
Dim oView As GridView = GridEnvelopes.FocusedView
|
||||||
selReceiver = oView.GetRow(oView.FocusedRowHandle)
|
Dim selReceiver As Receiver
|
||||||
Else
|
If oView.Name = ViewReceivers.Name Then
|
||||||
MsgBox(Resources.Envelope.Please_select_a_recipient_from_the_Recipients_tab, MsgBoxStyle.Information, Text)
|
selReceiver = oView.GetRow(oView.FocusedRowHandle)
|
||||||
End If
|
Else
|
||||||
If ViewEnvelopes.FocusedRowHandle < 0 Or IsNothing(selReceiver) Then
|
MsgBox(Resources.Envelope.Please_select_a_recipient_from_the_Recipients_tab, MsgBoxStyle.Information, Text)
|
||||||
Exit Sub
|
|
||||||
End If
|
|
||||||
Dim oEnvelope As Envelope = ViewEnvelopes.GetRow(ViewEnvelopes.FocusedRowHandle)
|
|
||||||
|
|
||||||
Dim oController = New EnvelopeEditorController(State, oEnvelope)
|
|
||||||
Dim Documents As New BindingList(Of EnvelopeDocument)
|
|
||||||
Dim Receivers As New BindingList(Of Receiver)
|
|
||||||
Receivers = New BindingList(Of Receiver)(oController.Envelope.Receivers)
|
|
||||||
For Each oReceiver As Receiver In Receivers
|
|
||||||
If oReceiver.EmailAddress = selReceiver.EmailAddress Then
|
|
||||||
If oController.ActionService.ResendReceiver(oEnvelope, oReceiver) = True Then
|
|
||||||
Dim oMsg = Resources.Envelope.Invitation_successfully_resend.Replace("@Mail", oReceiver.EmailAddress)
|
|
||||||
MsgBox(oMsg, MsgBoxStyle.Information, Text)
|
|
||||||
|
|
||||||
End If
|
|
||||||
End If
|
End If
|
||||||
Next
|
If ViewEnvelopes.FocusedRowHandle < 0 Or IsNothing(selReceiver) Then
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
Dim oEnvelope As Envelope = ViewEnvelopes.GetRow(ViewEnvelopes.FocusedRowHandle)
|
||||||
|
|
||||||
|
Dim oController = New EnvelopeEditorController(State, oEnvelope)
|
||||||
|
Dim Documents As New BindingList(Of EnvelopeDocument)
|
||||||
|
Dim Receivers As New BindingList(Of Receiver)
|
||||||
|
Receivers = New BindingList(Of Receiver)(oController.Envelope.Receivers)
|
||||||
|
For Each oReceiver As Receiver In Receivers
|
||||||
|
If oReceiver.EmailAddress = selReceiver.EmailAddress Then
|
||||||
|
If oController.ActionService.ResendReceiver(oEnvelope, oReceiver) = True Then
|
||||||
|
Dim oMsg = Resources.Envelope.Invitation_successfully_resend.Replace("@Mail", oReceiver.EmailAddress)
|
||||||
|
MsgBox(oMsg, MsgBoxStyle.Information, Text)
|
||||||
|
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
Catch ex As Exception
|
||||||
|
Logger.Error(ex)
|
||||||
|
Finally
|
||||||
|
|
||||||
|
|
||||||
|
End Try
|
||||||
|
SplashScreenManager.CloseOverlayForm(oHandle)
|
||||||
|
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
|
|||||||
@@ -35,7 +35,9 @@
|
|||||||
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
<package id="System.Buffers" version="4.6.0" targetFramework="net462" />
|
||||||
<package id="System.CodeDom" version="9.0.0" targetFramework="net462" />
|
<package id="System.CodeDom" version="9.0.0" targetFramework="net462" />
|
||||||
<package id="System.Collections.Immutable" version="9.0.0" targetFramework="net462" />
|
<package id="System.Collections.Immutable" version="9.0.0" targetFramework="net462" />
|
||||||
|
<package id="System.ComponentModel.Annotations" version="4.7.0" targetFramework="net462" />
|
||||||
<package id="System.Data.Odbc" version="6.0.1" targetFramework="net462" />
|
<package id="System.Data.Odbc" version="6.0.1" targetFramework="net462" />
|
||||||
|
<package id="System.Drawing.Common" version="4.7.3" targetFramework="net462" />
|
||||||
<package id="System.Formats.Asn1" version="9.0.0" targetFramework="net462" />
|
<package id="System.Formats.Asn1" version="9.0.0" targetFramework="net462" />
|
||||||
<package id="System.IO.Packaging" version="9.0.0" targetFramework="net462" />
|
<package id="System.IO.Packaging" version="9.0.0" targetFramework="net462" />
|
||||||
<package id="System.IO.Pipelines" version="9.0.0" targetFramework="net462" />
|
<package id="System.IO.Pipelines" version="9.0.0" targetFramework="net462" />
|
||||||
@@ -48,4 +50,5 @@
|
|||||||
<package id="System.Text.Json" version="9.0.0" targetFramework="net462" />
|
<package id="System.Text.Json" version="9.0.0" targetFramework="net462" />
|
||||||
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
<package id="System.Threading.Tasks.Extensions" version="4.5.4" targetFramework="net462" />
|
||||||
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
<package id="System.ValueTuple" version="4.5.0" targetFramework="net462" />
|
||||||
|
<package id="UserManager.Domain" version="3.2.2" targetFramework="net462" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -16,6 +16,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
|||||||
public partial class AuthController : ControllerBase
|
public partial class AuthController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<AuthController> _logger;
|
private readonly ILogger<AuthController> _logger;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IUserService _userService;
|
private readonly IUserService _userService;
|
||||||
private readonly IDirectorySearchService _dirSearchService;
|
private readonly IDirectorySearchService _dirSearchService;
|
||||||
|
|
||||||
@@ -25,6 +26,7 @@ public partial class AuthController : ControllerBase
|
|||||||
/// <param name="logger">The logger instance.</param>
|
/// <param name="logger">The logger instance.</param>
|
||||||
/// <param name="userService">The user service instance.</param>
|
/// <param name="userService">The user service instance.</param>
|
||||||
/// <param name="dirSearchService">The directory search service instance.</param>
|
/// <param name="dirSearchService">The directory search service instance.</param>
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public AuthController(ILogger<AuthController> logger, IUserService userService, IDirectorySearchService dirSearchService)
|
public AuthController(ILogger<AuthController> logger, IUserService userService, IDirectorySearchService dirSearchService)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
|||||||
@@ -27,6 +27,7 @@ public class EmailTemplateController : ControllerBase
|
|||||||
|
|
||||||
private readonly IMapper _mapper;
|
private readonly IMapper _mapper;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
private readonly IEmailTemplateRepository _repository;
|
private readonly IEmailTemplateRepository _repository;
|
||||||
|
|
||||||
private readonly IMediator _mediator;
|
private readonly IMediator _mediator;
|
||||||
@@ -38,6 +39,7 @@ public class EmailTemplateController : ControllerBase
|
|||||||
/// <param name="repository">
|
/// <param name="repository">
|
||||||
/// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird.
|
/// Die AutoMapper-Instanz, die zum Zuordnen von Objekten verwendet wird.
|
||||||
/// </param>
|
/// </param>
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public EmailTemplateController(IMapper mapper, IEmailTemplateRepository repository, ILogger<EmailTemplateController> logger, IMediator mediator)
|
public EmailTemplateController(IMapper mapper, IEmailTemplateRepository repository, ILogger<EmailTemplateController> logger, IMediator mediator)
|
||||||
{
|
{
|
||||||
_mapper = mapper;
|
_mapper = mapper;
|
||||||
@@ -115,4 +117,4 @@ public class EmailTemplateController : ControllerBase
|
|||||||
return Ok();
|
return Ok();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.Envelopes.Commands;
|
using EnvelopeGenerator.Application.Envelopes.Commands;
|
||||||
using EnvelopeGenerator.Application.Envelopes.Queries.Read;
|
using EnvelopeGenerator.Application.Envelopes.Queries.Read;
|
||||||
@@ -6,8 +6,6 @@ using MediatR;
|
|||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using System.ComponentModel;
|
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||||
|
|
||||||
@@ -31,6 +29,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
|||||||
public class EnvelopeController : ControllerBase
|
public class EnvelopeController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<EnvelopeController> _logger;
|
private readonly ILogger<EnvelopeController> _logger;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeService _envelopeService;
|
private readonly IEnvelopeService _envelopeService;
|
||||||
private readonly IMediator _mediator;
|
private readonly IMediator _mediator;
|
||||||
|
|
||||||
@@ -40,6 +39,7 @@ public class EnvelopeController : ControllerBase
|
|||||||
/// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param>
|
/// <param name="logger">Der Logger, der für das Protokollieren von Informationen verwendet wird.</param>
|
||||||
/// <param name="envelopeService">Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.</param>
|
/// <param name="envelopeService">Der Dienst, der für die Verarbeitung von Umschlägen zuständig ist.</param>
|
||||||
/// <param name="mediator"></param>
|
/// <param name="mediator"></param>
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService, IMediator mediator)
|
public EnvelopeController(ILogger<EnvelopeController> logger, IEnvelopeService envelopeService, IMediator mediator)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@@ -59,6 +59,7 @@ public class EnvelopeController : ControllerBase
|
|||||||
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> GetAsync([FromQuery] ReadEnvelopeQuery envelope)
|
public async Task<IActionResult> GetAsync([FromQuery] ReadEnvelopeQuery envelope)
|
||||||
{
|
{
|
||||||
if (User.GetId() is int intId)
|
if (User.GetId() is int intId)
|
||||||
@@ -98,6 +99,7 @@ public class EnvelopeController : ControllerBase
|
|||||||
/// <response code="404">Das Dokument wurde nicht gefunden oder ist nicht verfügbar.</response>
|
/// <response code="404">Das Dokument wurde nicht gefunden oder ist nicht verfügbar.</response>
|
||||||
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
||||||
[HttpGet("doc-result")]
|
[HttpGet("doc-result")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> GetDocResultAsync([FromQuery] int id, [FromQuery] bool view = false)
|
public async Task<IActionResult> GetDocResultAsync([FromQuery] int id, [FromQuery] bool view = false)
|
||||||
{
|
{
|
||||||
if (User.GetId() is int intId)
|
if (User.GetId() is int intId)
|
||||||
@@ -154,4 +156,4 @@ public class EnvelopeController : ControllerBase
|
|||||||
else
|
else
|
||||||
return Ok(res);
|
return Ok(res);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,5 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.Contracts.SQLExecutor;
|
using EnvelopeGenerator.Application.Contracts.SQLExecutor;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
@@ -31,6 +31,7 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
{
|
{
|
||||||
private readonly ILogger<EnvelopeReceiverController> _logger;
|
private readonly ILogger<EnvelopeReceiverController> _logger;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeReceiverService _erService;
|
private readonly IEnvelopeReceiverService _erService;
|
||||||
|
|
||||||
private readonly IMediator _mediator;
|
private readonly IMediator _mediator;
|
||||||
@@ -56,6 +57,7 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
/// <param name="erExecutor"></param>
|
/// <param name="erExecutor"></param>
|
||||||
/// <param name="documentExecutor"></param>
|
/// <param name="documentExecutor"></param>
|
||||||
/// <param name="csOpt"></param>
|
/// <param name="csOpt"></param>
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor, IOptions<ConnectionString> csOpt)
|
public EnvelopeReceiverController(ILogger<EnvelopeReceiverController> logger, IEnvelopeReceiverService envelopeReceiverService, IMediator mediator, IMapper mapper, IEnvelopeExecutor envelopeExecutor, IEnvelopeReceiverExecutor erExecutor, IDocumentExecutor documentExecutor, IOptions<ConnectionString> csOpt)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@@ -82,6 +84,7 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] ReadEnvelopeReceiverQuery envelopeReceiver)
|
public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] ReadEnvelopeReceiverQuery envelopeReceiver)
|
||||||
{
|
{
|
||||||
var username = User.GetUsernameOrDefault();
|
var username = User.GetUsernameOrDefault();
|
||||||
@@ -123,6 +126,7 @@ public class EnvelopeReceiverController : ControllerBase
|
|||||||
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
/// <response code="500">Ein unerwarteter Fehler ist aufgetreten.</response>
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet("salute")]
|
[HttpGet("salute")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> GetReceiverName([FromQuery] ReadReceiverNameQuery receiver)
|
public async Task<IActionResult> GetReceiverName([FromQuery] ReadReceiverNameQuery receiver)
|
||||||
{
|
{
|
||||||
return await _erService.ReadLastUsedReceiverNameByMailAsync(receiver.EmailAddress, receiver.Id, receiver.Signature).ThenAsync(
|
return await _erService.ReadLastUsedReceiverNameByMailAsync(receiver.EmailAddress, receiver.Id, receiver.Signature).ThenAsync(
|
||||||
|
|||||||
@@ -1,23 +1,39 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
[ApiExplorerSettings(IgnoreApi = true)]
|
[ApiExplorerSettings(IgnoreApi = true)]
|
||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
public class EnvelopeTypeController : ControllerBase
|
public class EnvelopeTypeController : ControllerBase
|
||||||
{
|
{
|
||||||
private readonly ILogger<EnvelopeTypeController> _logger;
|
private readonly ILogger<EnvelopeTypeController> _logger;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeTypeService _service;
|
private readonly IEnvelopeTypeService _service;
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <param name="logger"></param>
|
||||||
|
/// <param name="service"></param>
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public EnvelopeTypeController(ILogger<EnvelopeTypeController> logger, IEnvelopeTypeService service)
|
public EnvelopeTypeController(ILogger<EnvelopeTypeController> logger, IEnvelopeTypeService service)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
_service = service;
|
_service = service;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/// <summary>
|
||||||
|
///
|
||||||
|
/// </summary>
|
||||||
|
/// <returns></returns>
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> GetAllAsync()
|
public async Task<IActionResult> GetAllAsync()
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
using DigitalData.Core.API;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.API;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using EnvelopeGenerator.Application.Receivers.Queries.Read;
|
using EnvelopeGenerator.Application.Receivers.Queries.Read;
|
||||||
@@ -19,6 +19,7 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers;
|
|||||||
[Route("api/[controller]")]
|
[Route("api/[controller]")]
|
||||||
[ApiController]
|
[ApiController]
|
||||||
[Authorize]
|
[Authorize]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>
|
public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
@@ -94,4 +95,4 @@ public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverS
|
|||||||
return base.GetById(id);
|
return base.GetById(id);
|
||||||
}
|
}
|
||||||
#endregion
|
#endregion
|
||||||
}
|
}
|
||||||
@@ -22,7 +22,7 @@
|
|||||||
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
|
<PackageReference Include="DigitalData.Auth.Client" Version="1.3.7" />
|
||||||
<PackageReference Include="DigitalData.Core.API" Version="2.2.1" />
|
<PackageReference Include="DigitalData.Core.API" Version="2.2.1" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4" />
|
<PackageReference Include="Microsoft.AspNetCore.OpenApi" Version="9.0.4" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.4" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
|
||||||
<PackageReference Include="NLog" Version="5.2.5" />
|
<PackageReference Include="NLog" Version="5.2.5" />
|
||||||
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.0" />
|
<PackageReference Include="NLog.Web.AspNetCore" Version="5.3.0" />
|
||||||
<PackageReference Include="Scalar.AspNetCore" Version="2.2.1" />
|
<PackageReference Include="Scalar.AspNetCore" Version="2.2.1" />
|
||||||
|
|||||||
@@ -40,7 +40,7 @@ try
|
|||||||
|
|
||||||
builder.Services.AddControllers();
|
builder.Services.AddControllers();
|
||||||
|
|
||||||
//CORS Policy
|
// CORS Policy
|
||||||
var allowedOrigins = config.GetSection("AllowedOrigins").Get<string[]>() ??
|
var allowedOrigins = config.GetSection("AllowedOrigins").Get<string[]>() ??
|
||||||
throw new InvalidOperationException("AllowedOrigins section is missing in the configuration.");
|
throw new InvalidOperationException("AllowedOrigins section is missing in the configuration.");
|
||||||
builder.Services.AddCors(options =>
|
builder.Services.AddCors(options =>
|
||||||
@@ -93,7 +93,7 @@ try
|
|||||||
Id = "Bearer"
|
Id = "Bearer"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
new string[] {}
|
Array.Empty<string>()
|
||||||
}
|
}
|
||||||
});
|
});
|
||||||
|
|
||||||
@@ -104,8 +104,12 @@ try
|
|||||||
}
|
}
|
||||||
});
|
});
|
||||||
builder.Services.AddOpenApi();
|
builder.Services.AddOpenApi();
|
||||||
// DbContext
|
|
||||||
var connStr = config.GetConnectionString("Default") ?? throw new InvalidOperationException("There is no default connection string in appsettings.json.");
|
//AddEF Core dbcontext
|
||||||
|
var useDbMigration = Environment.GetEnvironmentVariable("MIGRATION_TEST_MODE") == true.ToString() || config.GetValue<bool>("UseDbMigration");
|
||||||
|
var cnnStrName = useDbMigration ? "DbMigrationTest" : "Default";
|
||||||
|
var connStr = config.GetConnectionString(cnnStrName)
|
||||||
|
?? throw new InvalidOperationException($"Connection string '{cnnStrName}' is missing in the application configuration.");
|
||||||
|
|
||||||
builder.Services.Configure<ConnectionString>(cs => cs.Value = connStr);
|
builder.Services.Configure<ConnectionString>(cs => cs.Value = connStr);
|
||||||
|
|
||||||
@@ -129,7 +133,7 @@ try
|
|||||||
{
|
{
|
||||||
var clientParams = deferredProvider.GetOptions<ClientParams>();
|
var clientParams = deferredProvider.GetOptions<ClientParams>();
|
||||||
var publicKey = clientParams!.PublicKeys.Get(authTokenKeys.Issuer, authTokenKeys.Audience);
|
var publicKey = clientParams!.PublicKeys.Get(authTokenKeys.Issuer, authTokenKeys.Audience);
|
||||||
return new List<SecurityKey>() { publicKey.SecurityKey };
|
return [publicKey.SecurityKey];
|
||||||
},
|
},
|
||||||
ValidateIssuer = true,
|
ValidateIssuer = true,
|
||||||
ValidIssuer = authTokenKeys.Issuer,
|
ValidIssuer = authTokenKeys.Issuer,
|
||||||
@@ -167,7 +171,9 @@ try
|
|||||||
});
|
});
|
||||||
|
|
||||||
// User manager
|
// User manager
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services.AddUserManager<EGDbContext>();
|
builder.Services.AddUserManager<EGDbContext>();
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
// LDAP
|
// LDAP
|
||||||
builder.ConfigureBySection<DirectorySearchOptions>();
|
builder.ConfigureBySection<DirectorySearchOptions>();
|
||||||
@@ -177,9 +183,11 @@ try
|
|||||||
builder.Services.AddCookieBasedLocalizer();
|
builder.Services.AddCookieBasedLocalizer();
|
||||||
|
|
||||||
// Envelope generator serives
|
// Envelope generator serives
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services
|
builder.Services
|
||||||
.AddEnvelopeGeneratorInfrastructureServices(sqlExecutorConfigureOptions: executor => executor.ConnectionString = connStr)
|
.AddEnvelopeGeneratorInfrastructureServices(sqlExecutorConfigureOptions: executor => executor.ConnectionString = connStr)
|
||||||
.AddEnvelopeGeneratorServices(config);
|
.AddEnvelopeGeneratorServices(config);
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
@@ -201,10 +209,10 @@ try
|
|||||||
app.UseCors("AllowSpecificOriginsPolicy");
|
app.UseCors("AllowSpecificOriginsPolicy");
|
||||||
|
|
||||||
// Localizer
|
// Localizer
|
||||||
string[] supportedCultureNames = { "de-DE", "en-US" };
|
string[] supportedCultureNames = ["de-DE", "en-US"];
|
||||||
IList<CultureInfo> list = supportedCultureNames.Select((string cn) => new CultureInfo(cn)).ToList();
|
IList<CultureInfo> list = [.. supportedCultureNames.Select(cn => new CultureInfo(cn))];
|
||||||
CultureInfo cultureInfo = list.FirstOrDefault() ?? throw new ArgumentNullException("supportedCultureNames", "Supported cultures cannot be empty.");
|
var cultureInfo = list.FirstOrDefault() ?? throw new InvalidOperationException("There is no supported culture.");
|
||||||
RequestLocalizationOptions requestLocalizationOptions = new RequestLocalizationOptions
|
var requestLocalizationOptions = new RequestLocalizationOptions
|
||||||
{
|
{
|
||||||
SupportedCultures = list,
|
SupportedCultures = list,
|
||||||
SupportedUICultures = list
|
SupportedUICultures = list
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
{
|
{
|
||||||
"UseSwagger": true,
|
"UseSwagger": true,
|
||||||
|
"UseDbMigration": true,
|
||||||
"DiPMode": true,
|
"DiPMode": true,
|
||||||
"Logging": {
|
"Logging": {
|
||||||
"LogLevel": {
|
"LogLevel": {
|
||||||
@@ -10,7 +11,8 @@
|
|||||||
"AllowedHosts": "*",
|
"AllowedHosts": "*",
|
||||||
"AllowedOrigins": [ "http://localhost:4200" ],
|
"AllowedOrigins": [ "http://localhost:4200" ],
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
|
||||||
|
"DbMigrationTest": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
||||||
},
|
},
|
||||||
"DirectorySearchOptions": {
|
"DirectorySearchOptions": {
|
||||||
"ServerName": "DD-VMP01-DC01",
|
"ServerName": "DD-VMP01-DC01",
|
||||||
|
|||||||
@@ -32,6 +32,7 @@ public static class DIExtensions
|
|||||||
/// This method ensures that the repositories are registered as scoped services, meaning that a new instance of each repository
|
/// This method ensures that the repositories are registered as scoped services, meaning that a new instance of each repository
|
||||||
/// will be created per HTTP request (or per scope) within the dependency injection container.
|
/// will be created per HTTP request (or per scope) within the dependency injection container.
|
||||||
/// </remarks>
|
/// </remarks>
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public static IServiceCollection AddEnvelopeGeneratorInfrastructureServices(this IServiceCollection services,
|
public static IServiceCollection AddEnvelopeGeneratorInfrastructureServices(this IServiceCollection services,
|
||||||
Action<IServiceProvider, DbContextOptionsBuilder>? dbContextOptions = null,
|
Action<IServiceProvider, DbContextOptionsBuilder>? dbContextOptions = null,
|
||||||
IConfiguration? sqlExecutorConfiguration = null,
|
IConfiguration? sqlExecutorConfiguration = null,
|
||||||
@@ -52,7 +53,6 @@ public static class DIExtensions
|
|||||||
services.TryAddScoped<IEnvelopeReceiverRepository, EnvelopeReceiverRepository>();
|
services.TryAddScoped<IEnvelopeReceiverRepository, EnvelopeReceiverRepository>();
|
||||||
services.TryAddScoped<IEnvelopeTypeRepository, EnvelopeTypeRepository>();
|
services.TryAddScoped<IEnvelopeTypeRepository, EnvelopeTypeRepository>();
|
||||||
services.TryAddScoped<IReceiverRepository, ReceiverRepository>();
|
services.TryAddScoped<IReceiverRepository, ReceiverRepository>();
|
||||||
services.TryAddScoped<IUserReceiverRepository, UserReceiverRepository>();
|
|
||||||
services.TryAddScoped<IEnvelopeReceiverReadOnlyRepository, EnvelopeReceiverReadOnlyRepository>();
|
services.TryAddScoped<IEnvelopeReceiverReadOnlyRepository, EnvelopeReceiverReadOnlyRepository>();
|
||||||
|
|
||||||
services.AddDbRepository<EGDbContext, Config>(context => context.Configs).UseAutoMapper();
|
services.AddDbRepository<EGDbContext, Config>(context => context.Configs).UseAutoMapper();
|
||||||
@@ -66,7 +66,6 @@ public static class DIExtensions
|
|||||||
services.AddDbRepository<EGDbContext, EnvelopeReceiver>(context => context.EnvelopeReceivers).UseAutoMapper();
|
services.AddDbRepository<EGDbContext, EnvelopeReceiver>(context => context.EnvelopeReceivers).UseAutoMapper();
|
||||||
services.AddDbRepository<EGDbContext, EnvelopeType>(context => context.EnvelopeTypes).UseAutoMapper();
|
services.AddDbRepository<EGDbContext, EnvelopeType>(context => context.EnvelopeTypes).UseAutoMapper();
|
||||||
services.AddDbRepository<EGDbContext, Receiver>(context => context.Receivers).UseAutoMapper();
|
services.AddDbRepository<EGDbContext, Receiver>(context => context.Receivers).UseAutoMapper();
|
||||||
services.AddDbRepository<EGDbContext, UserReceiver>(context => context.UserReceivers).UseAutoMapper();
|
|
||||||
services.AddDbRepository<EGDbContext, EnvelopeReceiverReadOnly>(context => context.EnvelopeReceiverReadOnlys).UseAutoMapper();
|
services.AddDbRepository<EGDbContext, EnvelopeReceiverReadOnly>(context => context.EnvelopeReceiverReadOnlys).UseAutoMapper();
|
||||||
|
|
||||||
services.AddSQLExecutor<Envelope>();
|
services.AddSQLExecutor<Envelope>();
|
||||||
@@ -157,4 +156,4 @@ public static class DIExtensions
|
|||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -17,8 +17,6 @@ namespace EnvelopeGenerator.Infrastructure;
|
|||||||
//TODO: Adding EmailOut instead of EmailOut.Abst is not correct for the arch. Re-design EmailPut consedering this. IMailDbContext shoud move to Abstraction layer (hint: in this case using DBSet in abst. will be problem because entity framework will have to be added.
|
//TODO: Adding EmailOut instead of EmailOut.Abst is not correct for the arch. Re-design EmailPut consedering this. IMailDbContext shoud move to Abstraction layer (hint: in this case using DBSet in abst. will be problem because entity framework will have to be added.
|
||||||
public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
||||||
{
|
{
|
||||||
public DbSet<UserReceiver> UserReceivers { get; set; }
|
|
||||||
|
|
||||||
public DbSet<Config> Configs { get; set; }
|
public DbSet<Config> Configs { get; set; }
|
||||||
|
|
||||||
public DbSet<EnvelopeReceiver> EnvelopeReceivers { get; set; }
|
public DbSet<EnvelopeReceiver> EnvelopeReceivers { get; set; }
|
||||||
@@ -61,14 +59,15 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
|
|
||||||
private readonly DbTriggerParams _triggers;
|
private readonly DbTriggerParams _triggers;
|
||||||
|
|
||||||
private readonly ILogger<EGDbContext> _logger;
|
private readonly ILogger<EGDbContext>? _logger;
|
||||||
|
|
||||||
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext> logger) : base(options)
|
public bool IsMigration { get; set; } = false;
|
||||||
|
|
||||||
|
public EGDbContext(DbContextOptions<EGDbContext> options, IOptions<DbTriggerParams> triggerParamOptions, ILogger<EGDbContext>? logger = null) : base(options)
|
||||||
{
|
{
|
||||||
_triggers = triggerParamOptions.Value;
|
_triggers = triggerParamOptions.Value;
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
|
|
||||||
UserReceivers = Set<UserReceiver>();
|
|
||||||
Configs = Set<Config>();
|
Configs = Set<Config>();
|
||||||
EnvelopeReceivers = Set<EnvelopeReceiver>();
|
EnvelopeReceivers = Set<EnvelopeReceiver>();
|
||||||
Envelopes = Set<Envelope>();
|
Envelopes = Set<Envelope>();
|
||||||
@@ -106,7 +105,6 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
modelBuilder.Entity<EnvelopeHistory>();
|
modelBuilder.Entity<EnvelopeHistory>();
|
||||||
modelBuilder.Entity<EnvelopeType>();
|
modelBuilder.Entity<EnvelopeType>();
|
||||||
modelBuilder.Entity<Receiver>();
|
modelBuilder.Entity<Receiver>();
|
||||||
modelBuilder.Entity<UserReceiver>();
|
|
||||||
modelBuilder.Entity<EmailOut>();
|
modelBuilder.Entity<EmailOut>();
|
||||||
|
|
||||||
// Configure the one-to-many relationship of Envelope
|
// Configure the one-to-many relationship of Envelope
|
||||||
@@ -130,17 +128,20 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
.WithMany(ed => ed.Elements)
|
.WithMany(ed => ed.Elements)
|
||||||
.HasForeignKey(dre => dre.DocumentId);
|
.HasForeignKey(dre => dre.DocumentId);
|
||||||
|
|
||||||
modelBuilder.Entity<EnvelopeHistory>()
|
if (!IsMigration)
|
||||||
.HasOne(eh => eh.Receiver)
|
{
|
||||||
.WithMany()
|
modelBuilder.Entity<EnvelopeHistory>()
|
||||||
.HasForeignKey(eh => eh.UserReference)
|
.HasOne(eh => eh.Receiver)
|
||||||
.HasPrincipalKey(e => e.EmailAddress);
|
.WithMany()
|
||||||
|
.HasForeignKey(eh => eh.UserReference)
|
||||||
|
.HasPrincipalKey(e => e.EmailAddress);
|
||||||
|
|
||||||
modelBuilder.Entity<EnvelopeHistory>()
|
modelBuilder.Entity<EnvelopeHistory>()
|
||||||
.HasOne(eh => eh.Sender)
|
.HasOne(eh => eh.Sender)
|
||||||
.WithMany()
|
.WithMany()
|
||||||
.HasForeignKey(eh => eh.UserReference)
|
.HasForeignKey(eh => eh.UserReference)
|
||||||
.HasPrincipalKey(e => e.Email);
|
.HasPrincipalKey(e => e.Email);
|
||||||
|
}
|
||||||
|
|
||||||
modelBuilder.Entity<EnvelopeReceiverReadOnly>()
|
modelBuilder.Entity<EnvelopeReceiverReadOnly>()
|
||||||
.HasOne(erro => erro.Receiver)
|
.HasOne(erro => erro.Receiver)
|
||||||
@@ -155,7 +156,7 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
.ForEach(tName =>
|
.ForEach(tName =>
|
||||||
{
|
{
|
||||||
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(tName));
|
modelBuilder.Entity<T>().ToTable(tb => tb.HasTrigger(tName));
|
||||||
_logger.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
|
_logger?.LogInformation("Trigger '{triggerName}' has been added to the '{entityName}' entity.", tName, typeof(T).Name);
|
||||||
});
|
});
|
||||||
|
|
||||||
// TODO: call add trigger methods with attributes and reflection
|
// TODO: call add trigger methods with attributes and reflection
|
||||||
@@ -171,7 +172,6 @@ public class EGDbContext : DbContext, IUserManagerDbContext, IMailDbContext
|
|||||||
AddTrigger<EnvelopeReceiverReadOnly>();
|
AddTrigger<EnvelopeReceiverReadOnly>();
|
||||||
AddTrigger<EnvelopeType>();
|
AddTrigger<EnvelopeType>();
|
||||||
AddTrigger<Receiver>();
|
AddTrigger<Receiver>();
|
||||||
AddTrigger<UserReceiver>();
|
|
||||||
AddTrigger<EmailOut>();
|
AddTrigger<EmailOut>();
|
||||||
|
|
||||||
//configure model builder for user manager tables
|
//configure model builder for user manager tables
|
||||||
|
|||||||
46
EnvelopeGenerator.Infrastructure/EGDbContextFactory.cs
Normal file
46
EnvelopeGenerator.Infrastructure/EGDbContextFactory.cs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
using EnvelopeGenerator.Application.Configurations;
|
||||||
|
using Microsoft.EntityFrameworkCore;
|
||||||
|
using Microsoft.EntityFrameworkCore.Design;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
|
using Microsoft.Extensions.Options;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Infrastructure
|
||||||
|
{
|
||||||
|
public class EGDbContextFactory : IDesignTimeDbContextFactory<EGDbContext>
|
||||||
|
{
|
||||||
|
public EGDbContext CreateDbContext(string[] args)
|
||||||
|
{
|
||||||
|
var config = new ConfigurationBuilder()
|
||||||
|
.SetBasePath(Directory.GetCurrentDirectory()) // Önemli!
|
||||||
|
.AddJsonFile("appsettings.migration.json")
|
||||||
|
.Build();
|
||||||
|
|
||||||
|
// create DbContextOptions
|
||||||
|
var optionsBuilder = new DbContextOptionsBuilder<EGDbContext>();
|
||||||
|
optionsBuilder.UseSqlServer(config.GetConnectionString("Default"));
|
||||||
|
|
||||||
|
// create DbTriggerParams
|
||||||
|
var triggerLists = config.GetSection("DbTriggerParams").Get<Dictionary<string, List<string>>>();
|
||||||
|
var dbTriggerParams = new DbTriggerParams();
|
||||||
|
if(triggerLists is not null)
|
||||||
|
foreach (var triggerList in triggerLists)
|
||||||
|
{
|
||||||
|
if(triggerList.Value.Count == 0)
|
||||||
|
continue; // Skip empty trigger lists
|
||||||
|
|
||||||
|
var tableName = triggerList.Key;
|
||||||
|
|
||||||
|
dbTriggerParams[tableName] = new List<string>();
|
||||||
|
|
||||||
|
foreach (var trigger in triggerList.Value)
|
||||||
|
{
|
||||||
|
dbTriggerParams[tableName].Add(trigger);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
var dbContext = new EGDbContext(optionsBuilder.Options, Options.Create(dbTriggerParams));
|
||||||
|
dbContext.IsMigration = true;
|
||||||
|
return dbContext;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -23,16 +23,37 @@
|
|||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net7.0'">
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="7.0.20" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.20" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="7.0.20" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="7.0.20">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net8.0'">
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.15" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="8.0.17" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.15" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="8.0.17" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="8.0.17">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="8.0.17" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
|
<ItemGroup Condition="'$(TargetFramework)' == 'net9.0'">
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.5" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore" Version="9.0.6" />
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.5" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Relational" Version="9.0.6" />
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.Design" Version="9.0.6">
|
||||||
|
<PrivateAssets>all</PrivateAssets>
|
||||||
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
|
</PackageReference>
|
||||||
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="9.0.6" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
</Project>
|
<ItemGroup>
|
||||||
|
<None Update="appsettings.migration.json">
|
||||||
|
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
|
||||||
|
</None>
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
@@ -12,13 +12,16 @@ namespace EnvelopeGenerator.Infrastructure.Executor;
|
|||||||
|
|
||||||
public class EnvelopeExecutor : SQLExecutor, IEnvelopeExecutor
|
public class EnvelopeExecutor : SQLExecutor, IEnvelopeExecutor
|
||||||
{
|
{
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
private readonly IUserRepository _userRepository;
|
private readonly IUserRepository _userRepository;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public EnvelopeExecutor(IServiceProvider provider, IOptions<SQLExecutorParams> sqlExecutorParamsOptions, IUserRepository userRepository) : base(provider, sqlExecutorParamsOptions)
|
public EnvelopeExecutor(IServiceProvider provider, IOptions<SQLExecutorParams> sqlExecutorParamsOptions, IUserRepository userRepository) : base(provider, sqlExecutorParamsOptions)
|
||||||
{
|
{
|
||||||
_userRepository = userRepository;
|
_userRepository = userRepository;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public async Task<Envelope> CreateEnvelopeAsync(int userId, string title = "", string message = "", bool tfaEnabled = false, CancellationToken cancellation = default)
|
public async Task<Envelope> CreateEnvelopeAsync(int userId, string title = "", string message = "", bool tfaEnabled = false, CancellationToken cancellation = default)
|
||||||
{
|
{
|
||||||
using var connection = new SqlConnection(Params.ConnectionString);
|
using var connection = new SqlConnection(Params.ConnectionString);
|
||||||
@@ -28,7 +31,7 @@ public class EnvelopeExecutor : SQLExecutor, IEnvelopeExecutor
|
|||||||
var envelopes = await connection.QueryAsync<Envelope>(formattedSql);
|
var envelopes = await connection.QueryAsync<Envelope>(formattedSql);
|
||||||
var envelope = envelopes.FirstOrDefault()
|
var envelope = envelopes.FirstOrDefault()
|
||||||
?? throw new InvalidOperationException($"Envelope creation failed. Parameters:" +
|
?? throw new InvalidOperationException($"Envelope creation failed. Parameters:" +
|
||||||
$"userId={userId}, title='{title}', message='{message}', tfaEnabled={tfaEnabled}."); ;
|
$"userId={userId}, title='{title}', message='{message}', tfaEnabled={tfaEnabled}.");
|
||||||
|
|
||||||
envelope.User = await _userRepository.ReadByIdAsync(envelope.UserId);
|
envelope.User = await _userRepository.ReadByIdAsync(envelope.UserId);
|
||||||
|
|
||||||
|
|||||||
1380
EnvelopeGenerator.Infrastructure/Migrations/20250701151754_InitialCreate.Designer.cs
generated
Normal file
1380
EnvelopeGenerator.Infrastructure/Migrations/20250701151754_InitialCreate.Designer.cs
generated
Normal file
File diff suppressed because it is too large
Load Diff
@@ -0,0 +1,811 @@
|
|||||||
|
using System;
|
||||||
|
using Microsoft.EntityFrameworkCore.Migrations;
|
||||||
|
|
||||||
|
#nullable disable
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Infrastructure.Migrations
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
public partial class InitialCreate : Migration
|
||||||
|
{
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Up(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.EnsureSchema(
|
||||||
|
name: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_CLIENT_USER",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
USER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CLIENT_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
COMMENT = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_CLIENT_USER", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_GROUPS",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
AD_SYNC = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
Internal = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
Active = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
Comment = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
|
||||||
|
ECM_FK_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_GROUPS", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_MODULES",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
Name = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
SHORT_NAME = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_MODULES", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_USER",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
PRENAME = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
NAME = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
USERNAME = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
|
||||||
|
SHORTNAME = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: true),
|
||||||
|
EMAIL = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
|
||||||
|
LANGUAGE = table.Column<string>(type: "nvarchar(5)", maxLength: 5, nullable: false),
|
||||||
|
COMMENT = table.Column<string>(type: "nvarchar(500)", maxLength: 500, nullable: true),
|
||||||
|
DELETED = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
DATE_FORMAT = table.Column<string>(type: "nvarchar(10)", maxLength: 10, nullable: false),
|
||||||
|
ACTIVE = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
GENERAL_VIEWER = table.Column<string>(type: "nvarchar(30)", maxLength: 30, nullable: false),
|
||||||
|
WAN_ENVIRONMENT = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
USERID_FK_INT_ECM = table.Column<int>(type: "int", nullable: false),
|
||||||
|
DELETED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||||
|
DELETED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: false),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_USER", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBEMLP_EMAIL_OUT",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
REMINDER_TYPE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SENDING_PROFILE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
REFERENCE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
REFERENCE_STRING = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true),
|
||||||
|
ENTITY_ID = table.Column<int>(type: "int", nullable: true),
|
||||||
|
WF_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
WF_REFERENCE = table.Column<string>(type: "varchar(200)", maxLength: 200, nullable: true),
|
||||||
|
EMAIL_ADRESS = table.Column<string>(type: "varchar(1000)", maxLength: 1000, nullable: false),
|
||||||
|
EMAIL_SUBJ = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: false),
|
||||||
|
EMAIL_BODY = table.Column<string>(type: "varchar(max)", nullable: false),
|
||||||
|
EMAIL_ATTMT1 = table.Column<string>(type: "varchar(512)", maxLength: 512, nullable: true),
|
||||||
|
EMAIL_SENT = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||||
|
COMMENT = table.Column<string>(type: "varchar(500)", maxLength: 500, nullable: true),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: false),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "varchar(50)", maxLength: 50, nullable: true),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||||
|
ERROR_TIMESTAMP = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||||
|
ERROR_MSG = table.Column<string>(type: "varchar(900)", maxLength: 900, nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBEMLP_EMAIL_OUT", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_CONFIG",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
SENDING_PROFILE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SIGNATURE_HOST = table.Column<string>(type: "nvarchar(128)", nullable: false),
|
||||||
|
EXTERNAL_PROGRAM_NAME = table.Column<string>(type: "nvarchar(30)", nullable: true),
|
||||||
|
EXPORT_PATH = table.Column<string>(type: "nvarchar(256)", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_EMAIL_TEMPLATE",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
NAME = table.Column<string>(type: "nvarchar(64)", nullable: true),
|
||||||
|
BODY = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
SUBJECT = table.Column<string>(type: "nvarchar(512)", nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_EMAIL_TEMPLATE", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE_CERTIFICATE",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ENVELOPE_UUID = table.Column<string>(type: "nvarchar(36)", nullable: false),
|
||||||
|
ENVELOPE_SUBJECT = table.Column<string>(type: "nvarchar(512)", nullable: false),
|
||||||
|
CREATOR_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CREATOR_NAME = table.Column<string>(type: "nvarchar(128)", nullable: false),
|
||||||
|
CREATOR_EMAIL = table.Column<string>(type: "nvarchar(128)", nullable: false),
|
||||||
|
ENVELOPE_STATUS = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE_CERTIFICATE", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE_TYPE",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
TITLE = table.Column<string>(type: "nvarchar(128)", nullable: false),
|
||||||
|
LANGUAGE = table.Column<string>(type: "nvarchar(5)", nullable: true),
|
||||||
|
EXPIRES_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CERTIFICATION_TYPE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
USE_ACCESS_CODE = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
FINAL_EMAIL_TO_CREATOR = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FINAL_EMAIL_TO_RECEIVERS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
EXPIRES_WARNING_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SEND_REMINDER_EMAILS = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
FIRST_REMINDER_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
REMINDER_INTERVAL_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CONTRACT_TYPE = table.Column<int>(type: "int", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE_TYPE", x => x.GUID);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_GROUPS_USER",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
USER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
GROUP_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
Comment = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_GROUPS_USER", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_GROUPS_USER_TBDD_GROUPS_GROUP_ID",
|
||||||
|
column: x => x.GROUP_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_GROUPS",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_GROUPS_USER_TBDD_USER_USER_ID",
|
||||||
|
column: x => x.USER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_USER",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_USER_MODULES",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
USER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
MODULE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
COMMENT = table.Column<string>(type: "nvarchar(200)", maxLength: 200, nullable: true),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_USER_MODULES", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_USER_MODULES_TBDD_MODULES_MODULE_ID",
|
||||||
|
column: x => x.MODULE_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_MODULES",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_USER_MODULES_TBDD_USER_USER_ID",
|
||||||
|
column: x => x.USER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_USER",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBDD_USER_REPRESENTATION",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
USER_ID = table.Column<int>(type: "int", nullable: true),
|
||||||
|
REPR_GROUP = table.Column<int>(type: "int", nullable: true),
|
||||||
|
GROUP_ID = table.Column<int>(type: "int", nullable: true),
|
||||||
|
REPR_USER = table.Column<int>(type: "int", nullable: true),
|
||||||
|
VALID_FROM = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||||
|
VALID_TO = table.Column<DateTime>(type: "datetime2", nullable: true),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "nvarchar(50)", maxLength: 50, nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBDD_USER_REPRESENTATION", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_USER_REPRESENTATION_TBDD_GROUPS_GROUP_ID",
|
||||||
|
column: x => x.GROUP_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_GROUPS",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_USER_REPRESENTATION_TBDD_GROUPS_REPR_GROUP",
|
||||||
|
column: x => x.REPR_GROUP,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_GROUPS",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_USER_REPRESENTATION_TBDD_USER_REPR_USER",
|
||||||
|
column: x => x.REPR_USER,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_USER",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBDD_USER_REPRESENTATION_TBDD_USER_USER_ID",
|
||||||
|
column: x => x.USER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_USER",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
USER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
STATUS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ENVELOPE_UUID = table.Column<string>(type: "nvarchar(36)", nullable: false),
|
||||||
|
MESSAGE = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
EXPIRES_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
EXPIRES_WARNING_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
TITLE = table.Column<string>(type: "nvarchar(128)", nullable: true),
|
||||||
|
CONTRACT_TYPE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
LANGUAGE = table.Column<string>(type: "nvarchar(5)", nullable: true),
|
||||||
|
SEND_REMINDER_EMAILS = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
FIRST_REMINDER_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
REMINDER_INTERVAL_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ENVELOPE_TYPE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
CERTIFICATION_TYPE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
USE_ACCESS_CODE = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
FINAL_EMAIL_TO_CREATOR = table.Column<int>(type: "int", nullable: false),
|
||||||
|
FINAL_EMAIL_TO_RECEIVERS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
EXPIRES_WHEN_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
EXPIRES_WARNING_WHEN_DAYS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
TFA_ENABLED = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
DOC_RESULT = table.Column<byte[]>(type: "varbinary(max)", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_TBDD_USER_USER_ID",
|
||||||
|
column: x => x.USER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_USER",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_TBSIG_ENVELOPE_TYPE_ENVELOPE_TYPE",
|
||||||
|
column: x => x.ENVELOPE_TYPE,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE_TYPE",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE_DOCUMENT",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
BYTE_DATA = table.Column<byte[]>(type: "varbinary(max)", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE_DOCUMENT", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_DOCUMENT_TBSIG_ENVELOPE_ENVELOPE_ID",
|
||||||
|
column: x => x.ENVELOPE_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_RECEIVER",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
EMAIL_ADDRESS = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
|
||||||
|
SIGNATURE = table.Column<string>(type: "nvarchar(64)", nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
TOTP_SECRET_KEY = table.Column<string>(type: "nvarchar(MAX)", nullable: true),
|
||||||
|
TFA_REG_DEADLINE = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
EnvelopeId = table.Column<int>(type: "int", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_RECEIVER", x => x.GUID);
|
||||||
|
table.UniqueConstraint("AK_TBSIG_RECEIVER_EMAIL_ADDRESS", x => x.EMAIL_ADDRESS);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_RECEIVER_TBSIG_ENVELOPE_EnvelopeId",
|
||||||
|
column: x => x.EnvelopeId,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
DOCUMENT_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
RECEIVER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ELEMENT_TYPE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
POSITION_X = table.Column<double>(type: "float", nullable: false),
|
||||||
|
POSITION_Y = table.Column<double>(type: "float", nullable: false),
|
||||||
|
WIDTH = table.Column<double>(type: "float", nullable: false),
|
||||||
|
HEIGHT = table.Column<double>(type: "float", nullable: false),
|
||||||
|
PAGE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
REQUIRED = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
TOOLTIP = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
READ_ONLY = table.Column<bool>(type: "bit", nullable: false),
|
||||||
|
ANNOTATION_INDEX = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_DOCUMENT_RECEIVER_ELEMENT", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_DOCUMENT_RECEIVER_ELEMENT_TBSIG_ENVELOPE_DOCUMENT_DOCUMENT_ID",
|
||||||
|
column: x => x.DOCUMENT_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE_DOCUMENT",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_DOCUMENT_RECEIVER_ELEMENT_TBSIG_RECEIVER_RECEIVER_ID",
|
||||||
|
column: x => x.RECEIVER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_RECEIVER",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_DOCUMENT_STATUS",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<int>(type: "int", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
RECEIVER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
STATUS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
STATUS_CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
VALUE = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_DOCUMENT_STATUS", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_DOCUMENT_STATUS_TBSIG_ENVELOPE_ENVELOPE_ID",
|
||||||
|
column: x => x.ENVELOPE_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_DOCUMENT_STATUS_TBSIG_RECEIVER_RECEIVER_ID",
|
||||||
|
column: x => x.RECEIVER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_RECEIVER",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE_HISTORY",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<long>(type: "bigint", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
USER_REFERENCE = table.Column<string>(type: "nvarchar(128)", nullable: false),
|
||||||
|
STATUS = table.Column<int>(type: "int", nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
ACTION_DATE = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
COMMENT = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
SenderId = table.Column<int>(type: "int", nullable: true),
|
||||||
|
ReceiverId = table.Column<int>(type: "int", nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE_HISTORY", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_HISTORY_TBDD_USER_SenderId",
|
||||||
|
column: x => x.SenderId,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBDD_USER",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_HISTORY_TBSIG_ENVELOPE_ENVELOPE_ID",
|
||||||
|
column: x => x.ENVELOPE_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_HISTORY_TBSIG_RECEIVER_ReceiverId",
|
||||||
|
column: x => x.ReceiverId,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_RECEIVER",
|
||||||
|
principalColumn: "GUID");
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE_RECEIVER",
|
||||||
|
schema: "dbo",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
ENVELOPE_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
RECEIVER_ID = table.Column<int>(type: "int", nullable: false),
|
||||||
|
SEQUENCE = table.Column<int>(type: "int", nullable: false),
|
||||||
|
NAME = table.Column<string>(type: "nvarchar(128)", nullable: true),
|
||||||
|
JOB_TITLE = table.Column<string>(type: "nvarchar(128)", nullable: true),
|
||||||
|
COMPANY_NAME = table.Column<string>(type: "nvarchar(128)", nullable: true),
|
||||||
|
PRIVATE_MESSAGE = table.Column<string>(type: "nvarchar(max)", nullable: true),
|
||||||
|
ACCESS_CODE = table.Column<string>(type: "nvarchar(64)", nullable: true),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime", nullable: false),
|
||||||
|
PHONE_NUMBER = table.Column<string>(type: "nvarchar(20)", maxLength: 20, nullable: true)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE_RECEIVER", x => new { x.ENVELOPE_ID, x.RECEIVER_ID });
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_RECEIVER_TBSIG_ENVELOPE_ENVELOPE_ID",
|
||||||
|
column: x => x.ENVELOPE_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_ENVELOPE",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_RECEIVER_TBSIG_RECEIVER_RECEIVER_ID",
|
||||||
|
column: x => x.RECEIVER_ID,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_RECEIVER",
|
||||||
|
principalColumn: "GUID",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateTable(
|
||||||
|
name: "TBSIG_ENVELOPE_RECEIVER_READ_ONLY",
|
||||||
|
columns: table => new
|
||||||
|
{
|
||||||
|
GUID = table.Column<long>(type: "bigint", nullable: false)
|
||||||
|
.Annotation("SqlServer:Identity", "1, 1"),
|
||||||
|
ENVELOPE_ID = table.Column<long>(type: "bigint", nullable: false),
|
||||||
|
RECEIVER_MAIL = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
|
||||||
|
DATE_VALID = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||||
|
ADDED_WHO = table.Column<string>(type: "nvarchar(250)", maxLength: 250, nullable: false),
|
||||||
|
ADDED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: false),
|
||||||
|
CHANGED_WHO = table.Column<string>(type: "nvarchar(100)", maxLength: 100, nullable: true),
|
||||||
|
CHANGED_WHEN = table.Column<DateTime>(type: "datetime2", nullable: false)
|
||||||
|
},
|
||||||
|
constraints: table =>
|
||||||
|
{
|
||||||
|
table.PrimaryKey("PK_TBSIG_ENVELOPE_RECEIVER_READ_ONLY", x => x.GUID);
|
||||||
|
table.ForeignKey(
|
||||||
|
name: "FK_TBSIG_ENVELOPE_RECEIVER_READ_ONLY_TBSIG_RECEIVER_ADDED_WHO",
|
||||||
|
column: x => x.ADDED_WHO,
|
||||||
|
principalSchema: "dbo",
|
||||||
|
principalTable: "TBSIG_RECEIVER",
|
||||||
|
principalColumn: "EMAIL_ADDRESS",
|
||||||
|
onDelete: ReferentialAction.Cascade);
|
||||||
|
});
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_GROUPS_USER_GROUP_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_GROUPS_USER",
|
||||||
|
column: "GROUP_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_GROUPS_USER_USER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_GROUPS_USER",
|
||||||
|
column: "USER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_USER_MODULES_MODULE_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_USER_MODULES",
|
||||||
|
column: "MODULE_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_USER_MODULES_USER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_USER_MODULES",
|
||||||
|
column: "USER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_USER_REPRESENTATION_GROUP_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_USER_REPRESENTATION",
|
||||||
|
column: "GROUP_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_USER_REPRESENTATION_REPR_GROUP",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_USER_REPRESENTATION",
|
||||||
|
column: "REPR_GROUP");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_USER_REPRESENTATION_REPR_USER",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_USER_REPRESENTATION",
|
||||||
|
column: "REPR_USER");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBDD_USER_REPRESENTATION_USER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBDD_USER_REPRESENTATION",
|
||||||
|
column: "USER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_DOCUMENT_RECEIVER_ELEMENT_DOCUMENT_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
|
||||||
|
column: "DOCUMENT_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_DOCUMENT_RECEIVER_ELEMENT_RECEIVER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
|
||||||
|
column: "RECEIVER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_DOCUMENT_STATUS_ENVELOPE_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_DOCUMENT_STATUS",
|
||||||
|
column: "ENVELOPE_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_DOCUMENT_STATUS_RECEIVER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_DOCUMENT_STATUS",
|
||||||
|
column: "RECEIVER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_ENVELOPE_TYPE",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE",
|
||||||
|
column: "ENVELOPE_TYPE");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_USER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE",
|
||||||
|
column: "USER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_DOCUMENT_ENVELOPE_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE_DOCUMENT",
|
||||||
|
column: "ENVELOPE_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_HISTORY_ENVELOPE_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE_HISTORY",
|
||||||
|
column: "ENVELOPE_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_HISTORY_ReceiverId",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE_HISTORY",
|
||||||
|
column: "ReceiverId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_HISTORY_SenderId",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE_HISTORY",
|
||||||
|
column: "SenderId");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_RECEIVER_RECEIVER_ID",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_ENVELOPE_RECEIVER",
|
||||||
|
column: "RECEIVER_ID");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_ENVELOPE_RECEIVER_READ_ONLY_ADDED_WHO",
|
||||||
|
table: "TBSIG_ENVELOPE_RECEIVER_READ_ONLY",
|
||||||
|
column: "ADDED_WHO");
|
||||||
|
|
||||||
|
migrationBuilder.CreateIndex(
|
||||||
|
name: "IX_TBSIG_RECEIVER_EnvelopeId",
|
||||||
|
schema: "dbo",
|
||||||
|
table: "TBSIG_RECEIVER",
|
||||||
|
column: "EnvelopeId");
|
||||||
|
}
|
||||||
|
|
||||||
|
/// <inheritdoc />
|
||||||
|
protected override void Down(MigrationBuilder migrationBuilder)
|
||||||
|
{
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_CLIENT_USER",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_GROUPS_USER",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_USER_MODULES",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_USER_REPRESENTATION",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBEMLP_EMAIL_OUT");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_CONFIG",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_DOCUMENT_RECEIVER_ELEMENT",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_DOCUMENT_STATUS",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_EMAIL_TEMPLATE",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE_CERTIFICATE",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE_HISTORY",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE_RECEIVER",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE_RECEIVER_READ_ONLY");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_MODULES",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_GROUPS",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE_DOCUMENT",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_RECEIVER",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBDD_USER",
|
||||||
|
schema: "dbo");
|
||||||
|
|
||||||
|
migrationBuilder.DropTable(
|
||||||
|
name: "TBSIG_ENVELOPE_TYPE",
|
||||||
|
schema: "dbo");
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
File diff suppressed because it is too large
Load Diff
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class ConfigRepository : CRUDRepository<Config, int, EGDbContext>, IConfigRepository
|
public class ConfigRepository : CRUDRepository<Config, int, EGDbContext>, IConfigRepository
|
||||||
{
|
{
|
||||||
public ConfigRepository(EGDbContext dbContext) : base(dbContext, dbContext.Configs)
|
public ConfigRepository(EGDbContext dbContext) : base(dbContext, dbContext.Configs)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Application.Contracts.Repositories;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class DocumentReceiverElementRepository : CRUDRepository<DocumentReceiverElement, int, EGDbContext>, IDocumentReceiverElementRepository
|
public class DocumentReceiverElementRepository : CRUDRepository<DocumentReceiverElement, int, EGDbContext>, IDocumentReceiverElementRepository
|
||||||
{
|
{
|
||||||
public DocumentReceiverElementRepository(EGDbContext dbContext) : base(dbContext, dbContext.DocumentReceiverElements)
|
public DocumentReceiverElementRepository(EGDbContext dbContext) : base(dbContext, dbContext.DocumentReceiverElements)
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
using DigitalData.Core.Infrastructure;
|
using DigitalData.Core.Infrastructure;
|
||||||
using DigitalData.UserManager.Infrastructure.Repositories;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Application.Contracts.Repositories;
|
using EnvelopeGenerator.Application.Contracts.Repositories;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class DocumentStatusRepository : CRUDRepository<DocumentStatus, int, EGDbContext>, IDocumentStatusRepository
|
public class DocumentStatusRepository : CRUDRepository<DocumentStatus, int, EGDbContext>, IDocumentStatusRepository
|
||||||
{
|
{
|
||||||
public DocumentStatusRepository(EGDbContext dbContext) : base(dbContext, dbContext.DocumentStatus)
|
public DocumentStatusRepository(EGDbContext dbContext) : base(dbContext, dbContext.DocumentStatus)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Application.Contracts.Repositories;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class EnvelopeCertificateRepository : CRUDRepository<EnvelopeCertificate, int, EGDbContext>, IEnvelopeCertificateRepository
|
public class EnvelopeCertificateRepository : CRUDRepository<EnvelopeCertificate, int, EGDbContext>, IEnvelopeCertificateRepository
|
||||||
{
|
{
|
||||||
public EnvelopeCertificateRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeCertificates)
|
public EnvelopeCertificateRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeCertificates)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Application.Contracts.Repositories;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class EnvelopeDocumentRepository : CRUDRepository<EnvelopeDocument, int, EGDbContext>, IEnvelopeDocumentRepository
|
public class EnvelopeDocumentRepository : CRUDRepository<EnvelopeDocument, int, EGDbContext>, IEnvelopeDocumentRepository
|
||||||
{
|
{
|
||||||
public EnvelopeDocumentRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeDocument)
|
public EnvelopeDocumentRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeDocument)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class EnvelopeReceiverReadOnlyRepository : CRUDRepository<EnvelopeReceiverReadOnly, long, EGDbContext>, IEnvelopeReceiverReadOnlyRepository
|
public class EnvelopeReceiverReadOnlyRepository : CRUDRepository<EnvelopeReceiverReadOnly, long, EGDbContext>, IEnvelopeReceiverReadOnlyRepository
|
||||||
{
|
{
|
||||||
private readonly IEnvelopeRepository _envRepo;
|
private readonly IEnvelopeRepository _envRepo;
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class EnvelopeRepository : CRUDRepository<Envelope, int, EGDbContext>, IEnvelopeRepository
|
public class EnvelopeRepository : CRUDRepository<Envelope, int, EGDbContext>, IEnvelopeRepository
|
||||||
{
|
{
|
||||||
public EnvelopeRepository(EGDbContext dbContext) : base(dbContext, dbContext.Envelopes)
|
public EnvelopeRepository(EGDbContext dbContext) : base(dbContext, dbContext.Envelopes)
|
||||||
|
|||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Application.Contracts.Repositories;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class EnvelopeTypeRepository : CRUDRepository<EnvelopeType, int, EGDbContext>, IEnvelopeTypeRepository
|
public class EnvelopeTypeRepository : CRUDRepository<EnvelopeType, int, EGDbContext>, IEnvelopeTypeRepository
|
||||||
{
|
{
|
||||||
public EnvelopeTypeRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeTypes)
|
public EnvelopeTypeRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeTypes)
|
||||||
|
|||||||
@@ -5,6 +5,7 @@ using Microsoft.EntityFrameworkCore;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
|
||||||
|
[Obsolete("Use IRepository")]
|
||||||
public class ReceiverRepository : CRUDRepository<Receiver, int, EGDbContext>, IReceiverRepository
|
public class ReceiverRepository : CRUDRepository<Receiver, int, EGDbContext>, IReceiverRepository
|
||||||
{
|
{
|
||||||
public ReceiverRepository(EGDbContext dbContext) : base(dbContext, dbContext.Receivers)
|
public ReceiverRepository(EGDbContext dbContext) : base(dbContext, dbContext.Receivers)
|
||||||
|
|||||||
@@ -1,12 +0,0 @@
|
|||||||
using DigitalData.Core.Infrastructure;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
using EnvelopeGenerator.Application.Contracts.Repositories;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Infrastructure.Repositories;
|
|
||||||
|
|
||||||
public class UserReceiverRepository : CRUDRepository<UserReceiver, int, EGDbContext>, IUserReceiverRepository
|
|
||||||
{
|
|
||||||
public UserReceiverRepository(EGDbContext dbContext) : base(dbContext, dbContext.UserReceivers)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
|
||||||
13
EnvelopeGenerator.Infrastructure/appsettings.migration.json
Normal file
13
EnvelopeGenerator.Infrastructure/appsettings.migration.json
Normal file
@@ -0,0 +1,13 @@
|
|||||||
|
{
|
||||||
|
"ConnectionStrings": {
|
||||||
|
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
||||||
|
},
|
||||||
|
"DbTriggerParams": {
|
||||||
|
"Envelope": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ],
|
||||||
|
"EnvelopeHistory": [ "TBSIG_ENVELOPE_HISTORY_AFT_INS" ],
|
||||||
|
"EmailOut": [ "TBEMLP_EMAIL_OUT_AFT_INS", "TBEMLP_EMAIL_OUT_AFT_UPD" ],
|
||||||
|
"EnvelopeReceiverReadOnly": [ "TBSIG_ENVELOPE_RECEIVER_READ_ONLY_UPD" ],
|
||||||
|
"Receiver": [],
|
||||||
|
"EmailTemplate": [ "TBSIG_EMAIL_TEMPLATE_AFT_UPD" ]
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -67,7 +67,7 @@ Public Class Scheduler_FinishEnvelope
|
|||||||
|
|
||||||
Await Scheduler.Start()
|
Await Scheduler.Start()
|
||||||
|
|
||||||
Logger.Info("Scheduler started!")
|
Logger.Debug("Scheduler started!")
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Logger.Error(ex)
|
Logger.Error(ex)
|
||||||
End Try
|
End Try
|
||||||
|
|||||||
@@ -34,7 +34,7 @@ Public Class Service
|
|||||||
TempFiles.Create()
|
TempFiles.Create()
|
||||||
|
|
||||||
' === Initialize Databases ===
|
' === Initialize Databases ===
|
||||||
Logger.Info("Inititalize Database ...")
|
Logger.Debug("Inititalize Database ...")
|
||||||
|
|
||||||
If Config.ConnectionString = String.Empty Then
|
If Config.ConnectionString = String.Empty Then
|
||||||
Throw New ApplicationException("Connection String is empty!")
|
Throw New ApplicationException("Connection String is empty!")
|
||||||
|
|||||||
@@ -13,9 +13,11 @@ public class CommandManager
|
|||||||
{
|
{
|
||||||
WriteIndented = true
|
WriteIndented = true
|
||||||
};
|
};
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeReceiverService _envelopeReceiverService;
|
private readonly IEnvelopeReceiverService _envelopeReceiverService;
|
||||||
private readonly IMediator _mediator;
|
private readonly IMediator _mediator;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public CommandManager(IEnvelopeReceiverService envelopeReceiverService, IMediator mediator)
|
public CommandManager(IEnvelopeReceiverService envelopeReceiverService, IMediator mediator)
|
||||||
{
|
{
|
||||||
_envelopeReceiverService = envelopeReceiverService;
|
_envelopeReceiverService = envelopeReceiverService;
|
||||||
@@ -29,6 +31,7 @@ public class CommandManager
|
|||||||
Console.WriteLine($"v{Assembly.GetExecutingAssembly().GetName().Version}");
|
Console.WriteLine($"v{Assembly.GetExecutingAssembly().GetName().Version}");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
[Subcommand]
|
[Subcommand]
|
||||||
public IEnvelopeReceiverService EnvelopeReceiver => _envelopeReceiverService;
|
public IEnvelopeReceiverService EnvelopeReceiver => _envelopeReceiverService;
|
||||||
|
|
||||||
@@ -55,4 +58,4 @@ public class CommandManager
|
|||||||
File.WriteAllBytes(path, document?.ByteData ?? Array.Empty<byte>());
|
File.WriteAllBytes(path, document?.ByteData ?? Array.Empty<byte>());
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -14,6 +14,7 @@ namespace EnvelopeGenerator.Terminal;
|
|||||||
|
|
||||||
public static class DependencyInjection
|
public static class DependencyInjection
|
||||||
{
|
{
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public static IServiceCollection AddCommandManagerRunner(this IServiceCollection services, IConfiguration configuration, Case @case = Case.KebabCase, string connectionStringKeyName = "Default")
|
public static IServiceCollection AddCommandManagerRunner(this IServiceCollection services, IConfiguration configuration, Case @case = Case.KebabCase, string connectionStringKeyName = "Default")
|
||||||
{
|
{
|
||||||
var connStr = configuration.GetConnectionString(connectionStringKeyName)
|
var connStr = configuration.GetConnectionString(connectionStringKeyName)
|
||||||
@@ -27,7 +28,7 @@ public static class DependencyInjection
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Add envelope generator services
|
// Add envelope generator services
|
||||||
services.AddEnvelopeGeneratorInfrastructureServices(options => options.UseSqlServer(connStr));
|
services.AddEnvelopeGeneratorInfrastructureServices((provider, options) => options.UseSqlServer(connStr));
|
||||||
|
|
||||||
return services
|
return services
|
||||||
.AddSingleton<CommandManager>()
|
.AddSingleton<CommandManager>()
|
||||||
@@ -52,4 +53,4 @@ public static class DependencyInjection
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static Task<int> RunCommandManagerRunner(this IHost host, string[] args) => host.Services.RunCommandManagerRunner(args);
|
public static Task<int> RunCommandManagerRunner(this IHost host, string[] args) => host.Services.RunCommandManagerRunner(args);
|
||||||
}
|
}
|
||||||
@@ -15,7 +15,9 @@ public class Program
|
|||||||
|
|
||||||
var config = builder.Configuration;
|
var config = builder.Configuration;
|
||||||
|
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services.AddCommandManagerRunner(config);
|
builder.Services.AddCommandManagerRunner(config);
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
|
|||||||
@@ -12,7 +12,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
|
||||||
|
"Dev": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
||||||
},
|
},
|
||||||
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==",
|
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==",
|
||||||
"Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.
|
"Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.
|
||||||
|
|||||||
@@ -10,6 +10,7 @@ namespace EnvelopeGenerator.Tests.Application;
|
|||||||
|
|
||||||
public class Mock
|
public class Mock
|
||||||
{
|
{
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public static IHost CreateHost(Action<HostApplicationBuilder>? builderOptions = null, string configPath = "appsettings.json", bool useRealDb = false, params string[] args)
|
public static IHost CreateHost(Action<HostApplicationBuilder>? builderOptions = null, string configPath = "appsettings.json", bool useRealDb = false, params string[] args)
|
||||||
{
|
{
|
||||||
var builder = Host.CreateApplicationBuilder(args.Any() ? args : null);
|
var builder = Host.CreateApplicationBuilder(args.Any() ? args : null);
|
||||||
@@ -17,7 +18,7 @@ public class Mock
|
|||||||
builder.Configuration.AddJsonFile(configPath, optional: true, reloadOnChange: true);
|
builder.Configuration.AddJsonFile(configPath, optional: true, reloadOnChange: true);
|
||||||
|
|
||||||
builder.Services
|
builder.Services
|
||||||
.AddEnvelopeGeneratorInfrastructureServices(opt =>
|
.AddEnvelopeGeneratorInfrastructureServices((provider, opt) =>
|
||||||
{
|
{
|
||||||
if (useRealDb)
|
if (useRealDb)
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -26,6 +26,7 @@ public class DocumentController : BaseController
|
|||||||
_envDocService = envDocService;
|
_envDocService = envDocService;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
[NonAction]
|
[NonAction]
|
||||||
public async Task<IActionResult> Get([FromRoute] string envelopeKey, [FromQuery] int index)
|
public async Task<IActionResult> Get([FromRoute] string envelopeKey, [FromQuery] int index)
|
||||||
{
|
{
|
||||||
@@ -53,6 +54,7 @@ public class DocumentController : BaseController
|
|||||||
|
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
[HttpPost("{envelopeKey}")]
|
[HttpPost("{envelopeKey}")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> Open(string envelopeKey)
|
public async Task<IActionResult> Open(string envelopeKey)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -1,153 +1,161 @@
|
|||||||
using DigitalData.Core.DTO;
|
using EnvelopeGenerator.CommonServices;
|
||||||
using EnvelopeGenerator.CommonServices;
|
|
||||||
using EnvelopeGenerator.Web.Services;
|
using EnvelopeGenerator.Web.Services;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Text.Encodings.Web;
|
using System.Text.Encodings.Web;
|
||||||
using static EnvelopeGenerator.CommonServices.Constants;
|
|
||||||
using EnvelopeGenerator.Extensions;
|
using EnvelopeGenerator.Extensions;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
using static EnvelopeGenerator.Domain.Constants;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
using EnvelopeGenerator.Domain;
|
||||||
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers
|
namespace EnvelopeGenerator.Web.Controllers;
|
||||||
|
|
||||||
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/[controller]")]
|
||||||
|
public class EnvelopeController : BaseController
|
||||||
{
|
{
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
private readonly EnvelopeOldService envelopeService;
|
||||||
[ApiController]
|
private readonly ActionService? actionService;
|
||||||
[Route("api/[controller]")]
|
private readonly UrlEncoder _urlEncoder;
|
||||||
public class EnvelopeController : BaseController
|
[Obsolete("Use MediatR")]
|
||||||
|
private readonly IEnvelopeHistoryService _histService;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
private readonly IReceiverService _receiverService;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
private readonly IEnvelopeReceiverService _envRcvService;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public EnvelopeController(DatabaseService database,
|
||||||
|
EnvelopeOldService envelope,
|
||||||
|
ILogger<EnvelopeController> logger, UrlEncoder urlEncoder,
|
||||||
|
IEnvelopeHistoryService envelopeHistoryService,
|
||||||
|
IReceiverService receiverService,
|
||||||
|
IEnvelopeReceiverService envelopeReceiverService) : base(database, logger)
|
||||||
{
|
{
|
||||||
private readonly EnvelopeOldService envelopeService;
|
envelopeService = envelope;
|
||||||
private readonly ActionService? actionService;
|
actionService = database?.Services?.actionService;
|
||||||
private readonly UrlEncoder _urlEncoder;
|
_urlEncoder = urlEncoder;
|
||||||
private readonly IEnvelopeHistoryService _histService;
|
_histService = envelopeHistoryService;
|
||||||
private readonly IReceiverService _receiverService;
|
_receiverService = receiverService;
|
||||||
private readonly IEnvelopeReceiverService _envRcvService;
|
_envRcvService = envelopeReceiverService;
|
||||||
|
}
|
||||||
|
|
||||||
public EnvelopeController(DatabaseService database,
|
[NonAction]
|
||||||
EnvelopeOldService envelope,
|
[Obsolete("Use MediatR")]
|
||||||
ILogger<EnvelopeController> logger, UrlEncoder urlEncoder,
|
public async Task<IActionResult> Get([FromRoute] string envelopeKey)
|
||||||
IEnvelopeHistoryService envelopeHistoryService,
|
{
|
||||||
IReceiverService receiverService,
|
try
|
||||||
IEnvelopeReceiverService envelopeReceiverService) : base(database, logger)
|
|
||||||
{
|
{
|
||||||
envelopeService = envelope;
|
envelopeKey = _urlEncoder.Encode(envelopeKey);
|
||||||
actionService = database?.Services?.actionService;
|
|
||||||
_urlEncoder = urlEncoder;
|
// Validate Envelope Key and load envelope
|
||||||
_histService = envelopeHistoryService;
|
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
||||||
_receiverService = receiverService;
|
|
||||||
_envRcvService = envelopeReceiverService;
|
EnvelopeReceiver response = await envelopeService.LoadEnvelope(envelopeKey);
|
||||||
|
|
||||||
|
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
||||||
|
{
|
||||||
|
return Problem(statusCode: 403);
|
||||||
|
}
|
||||||
|
|
||||||
|
_logger.LogInformation("Loaded envelope [{0}] for receiver [{1}]", response.Envelope.Id, response.Envelope.Id);
|
||||||
|
return Json(response);
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
[NonAction]
|
|
||||||
public async Task<IActionResult> Get([FromRoute] string envelopeKey)
|
|
||||||
{
|
{
|
||||||
try
|
_logger.LogError(e, "{Message}", e.Message);
|
||||||
{
|
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||||
envelopeKey = _urlEncoder.Encode(envelopeKey);
|
|
||||||
|
|
||||||
// Validate Envelope Key and load envelope
|
|
||||||
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
|
||||||
|
|
||||||
EnvelopeReceiver response = await envelopeService.LoadEnvelope(envelopeKey);
|
|
||||||
|
|
||||||
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
|
||||||
{
|
|
||||||
return Problem(statusCode: 403);
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInformation("Loaded envelope [{0}] for receiver [{1}]", response.Envelope.Id, response.Envelope.Id);
|
|
||||||
return Json(response);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.LogError(e, "{Message}", e.Message);
|
|
||||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
[HttpPost("{envelopeKey}")]
|
[HttpPost("{envelopeKey}")]
|
||||||
public async Task<IActionResult> Update(string envelopeKey, int index)
|
[Obsolete("Use MediatR")]
|
||||||
|
public async Task<IActionResult> Update(string envelopeKey, int index)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
try
|
envelopeKey = _urlEncoder.Encode(envelopeKey);
|
||||||
|
|
||||||
|
var authSignature = this.GetAuthReceiverSignature();
|
||||||
|
|
||||||
|
if (authSignature != envelopeKey.GetReceiverSignature())
|
||||||
|
return Unauthorized();
|
||||||
|
|
||||||
|
// Validate Envelope Key and load envelope
|
||||||
|
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
||||||
|
EnvelopeReceiver response = await envelopeService.LoadEnvelope(envelopeKey);
|
||||||
|
|
||||||
|
// Again check if receiver has already signed
|
||||||
|
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
||||||
{
|
{
|
||||||
envelopeKey = _urlEncoder.Encode(envelopeKey);
|
return Problem(statusCode: 403);
|
||||||
|
}
|
||||||
|
|
||||||
var authSignature = this.GetAuthReceiverSignature();
|
var document = envelopeService.GetDocument(index, envelopeKey);
|
||||||
|
|
||||||
if (authSignature != envelopeKey.GetReceiverSignature())
|
string? annotationData = await envelopeService.EnsureValidAnnotationData(Request);
|
||||||
return Unauthorized();
|
|
||||||
|
|
||||||
// Validate Envelope Key and load envelope
|
envelopeService.InsertDocumentStatus(new Domain.Entities.DocumentStatus()
|
||||||
envelopeService.EnsureValidEnvelopeKey(envelopeKey);
|
{
|
||||||
EnvelopeReceiver response = await envelopeService.LoadEnvelope(envelopeKey);
|
EnvelopeId = response.Envelope.Id,
|
||||||
|
ReceiverId = response.Receiver.Id,
|
||||||
|
Value = annotationData,
|
||||||
|
Status = Constants.DocumentStatus.Signed
|
||||||
|
});
|
||||||
|
|
||||||
// Again check if receiver has already signed
|
var signResult = actionService?.SignEnvelope(response.Envelope, response.Receiver);
|
||||||
if (envelopeService.ReceiverAlreadySigned(response.Envelope, response.Receiver.Id) == true)
|
|
||||||
|
return Ok(new object());
|
||||||
|
}
|
||||||
|
catch (Exception e)
|
||||||
|
{
|
||||||
|
_logger.LogError(e, "{Message}", e.Message);
|
||||||
|
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
|
[HttpPost("reject")]
|
||||||
|
[Obsolete("Use DigitalData.Core.Exceptions and .Middleware")]
|
||||||
|
public async Task<IActionResult> Reject([FromBody] string? reason = null)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
var signature = this.GetAuthReceiverSignature();
|
||||||
|
var uuid = this.GetAuthEnvelopeUuid();
|
||||||
|
var mail = this.GetAuthReceiverMail();
|
||||||
|
if(uuid is null || signature is null || mail is null)
|
||||||
|
{
|
||||||
|
_logger.LogEnvelopeError(uuid: uuid, signature: signature,
|
||||||
|
message: @$"Unauthorized POST request in api\envelope\reject. One of claims, Envelope, signature or mail ({mail}) is null.");
|
||||||
|
return Unauthorized();
|
||||||
|
}
|
||||||
|
|
||||||
|
var envRcvRes = await _envRcvService.ReadByUuidSignatureAsync(uuid: uuid, signature: signature);
|
||||||
|
|
||||||
|
if (envRcvRes.IsFailed)
|
||||||
|
{
|
||||||
|
_logger.LogNotice(envRcvRes.Notices);
|
||||||
|
return Unauthorized("you are not authirized");
|
||||||
|
}
|
||||||
|
|
||||||
|
return await _histService.RecordAsync(envRcvRes.Data.EnvelopeId, userReference: mail, EnvelopeStatus.DocumentRejected, comment: reason).ThenAsync(
|
||||||
|
Success: id => NoContent(),
|
||||||
|
Fail: IActionResult (mssg, ntc) =>
|
||||||
{
|
{
|
||||||
return Problem(statusCode: 403);
|
_logger.LogEnvelopeError(uuid: uuid, signature: signature, message: "Unexpected error happend in api/envelope/reject");
|
||||||
}
|
_logger.LogNotice(ntc);
|
||||||
|
return this.ViewInnerServiceError();
|
||||||
var document = envelopeService.GetDocument(index, envelopeKey);
|
|
||||||
|
|
||||||
string? annotationData = await envelopeService.EnsureValidAnnotationData(Request);
|
|
||||||
|
|
||||||
envelopeService.InsertDocumentStatus(new Common.DocumentStatus()
|
|
||||||
{
|
|
||||||
EnvelopeId = response.Envelope.Id,
|
|
||||||
ReceiverId = response.Receiver.Id,
|
|
||||||
Value = annotationData,
|
|
||||||
Status = Common.Constants.DocumentStatus.Signed
|
|
||||||
});
|
});
|
||||||
|
|
||||||
var signResult = actionService?.SignEnvelope(response.Envelope, response.Receiver);
|
|
||||||
|
|
||||||
return Ok(new object());
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.LogError(e, "{Message}", e.Message);
|
|
||||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
|
||||||
[HttpPost("reject")]
|
|
||||||
public async Task<IActionResult> Reject([FromBody] string? reason = null)
|
|
||||||
{
|
{
|
||||||
try
|
_logger.LogError(e, "{Message}", e.Message);
|
||||||
{
|
return StatusCode(StatusCodes.Status500InternalServerError);
|
||||||
var signature = this.GetAuthReceiverSignature();
|
|
||||||
var uuid = this.GetAuthEnvelopeUuid();
|
|
||||||
var mail = this.GetAuthReceiverMail();
|
|
||||||
if(uuid is null || signature is null || mail is null)
|
|
||||||
{
|
|
||||||
_logger.LogEnvelopeError(uuid: uuid, signature: signature,
|
|
||||||
message: @$"Unauthorized POST request in api\envelope\reject. One of claims, Envelope, signature or mail ({mail}) is null.");
|
|
||||||
return Unauthorized();
|
|
||||||
}
|
|
||||||
|
|
||||||
var envRcvRes = await _envRcvService.ReadByUuidSignatureAsync(uuid: uuid, signature: signature);
|
|
||||||
|
|
||||||
if (envRcvRes.IsFailed)
|
|
||||||
{
|
|
||||||
_logger.LogNotice(envRcvRes.Notices);
|
|
||||||
return Unauthorized("you are not authirized");
|
|
||||||
}
|
|
||||||
|
|
||||||
return await _histService.RecordAsync(envRcvRes.Data.EnvelopeId, userReference: mail, EnvelopeStatus.DocumentRejected, comment: reason).ThenAsync(
|
|
||||||
Success: id => NoContent(),
|
|
||||||
Fail: IActionResult (mssg, ntc) =>
|
|
||||||
{
|
|
||||||
_logger.LogEnvelopeError(uuid: uuid, signature: signature, message: "Unexpected error happend in api/envelope/reject");
|
|
||||||
_logger.LogNotice(ntc);
|
|
||||||
return this.ViewInnerServiceError();
|
|
||||||
});
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.LogError(e, "{Message}", e.Message);
|
|
||||||
return StatusCode(StatusCodes.Status500InternalServerError);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,5 +1,4 @@
|
|||||||
using EnvelopeGenerator.CommonServices;
|
using EnvelopeGenerator.Web.Services;
|
||||||
using EnvelopeGenerator.Web.Services;
|
|
||||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
@@ -8,33 +7,40 @@ using Microsoft.AspNetCore.Authorization;
|
|||||||
using DigitalData.Core.API;
|
using DigitalData.Core.API;
|
||||||
using EnvelopeGenerator.Extensions;
|
using EnvelopeGenerator.Extensions;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using DigitalData.Core.DTO;
|
|
||||||
using Microsoft.AspNetCore.Localization;
|
using Microsoft.AspNetCore.Localization;
|
||||||
using EnvelopeGenerator.Web.Models;
|
using EnvelopeGenerator.Web.Models;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
using EnvelopeGenerator.Application.Resources;
|
||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
using static EnvelopeGenerator.CommonServices.Constants;
|
|
||||||
using Ganss.Xss;
|
using Ganss.Xss;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using DigitalData.Core.Client;
|
using DigitalData.Core.Client;
|
||||||
using OtpNet;
|
using OtpNet;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
using static EnvelopeGenerator.Domain.Constants;
|
||||||
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers;
|
namespace EnvelopeGenerator.Web.Controllers;
|
||||||
|
|
||||||
public class HomeController : ViewControllerBase
|
public class HomeController : ViewControllerBase
|
||||||
{
|
{
|
||||||
private readonly EnvelopeOldService envelopeOldService;
|
private readonly EnvelopeOldService envelopeOldService;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeReceiverService _envRcvService;
|
private readonly IEnvelopeReceiverService _envRcvService;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeHistoryService _historyService;
|
private readonly IEnvelopeHistoryService _historyService;
|
||||||
private readonly IConfiguration _configuration;
|
private readonly IConfiguration _configuration;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeMailService _mailService;
|
private readonly IEnvelopeMailService _mailService;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeReceiverReadOnlyService _readOnlyService;
|
private readonly IEnvelopeReceiverReadOnlyService _readOnlyService;
|
||||||
private readonly IAuthenticator _authenticator;
|
private readonly IAuthenticator _authenticator;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IReceiverService _rcvService;
|
private readonly IReceiverService _rcvService;
|
||||||
private readonly IEnvelopeSmsHandler _envSmsHandler;
|
private readonly IEnvelopeSmsHandler _envSmsHandler;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public HomeController(EnvelopeOldService envelopeOldService, ILogger<HomeController> logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer<Resource> localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IAuthenticator authenticator, IReceiverService receiverService, IEnvelopeSmsHandler envelopeSmsService) : base(logger, sanitizer, cultures, localizer)
|
public HomeController(EnvelopeOldService envelopeOldService, ILogger<HomeController> logger, IEnvelopeReceiverService envelopeReceiverService, IEnvelopeHistoryService historyService, IStringLocalizer<Resource> localizer, IConfiguration configuration, HtmlSanitizer sanitizer, Cultures cultures, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverReadOnlyService readOnlyService, IAuthenticator authenticator, IReceiverService receiverService, IEnvelopeSmsHandler envelopeSmsService) : base(logger, sanitizer, cultures, localizer)
|
||||||
{
|
{
|
||||||
this.envelopeOldService = envelopeOldService;
|
this.envelopeOldService = envelopeOldService;
|
||||||
@@ -69,6 +75,7 @@ public class HomeController : ViewControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("EnvelopeKey/{envelopeReceiverId}")]
|
[HttpGet("EnvelopeKey/{envelopeReceiverId}")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> MainAsync([FromRoute] string envelopeReceiverId, [FromQuery] string? culture = null)
|
public async Task<IActionResult> MainAsync([FromRoute] string envelopeReceiverId, [FromQuery] string? culture = null)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -131,6 +138,7 @@ public class HomeController : ViewControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("EnvelopeKey/{envelopeReceiverId}/Locked")]
|
[HttpGet("EnvelopeKey/{envelopeReceiverId}/Locked")]
|
||||||
|
[Obsolete("Use DigitalData.Core.Exceptions and .Middleware")]
|
||||||
public async Task<IActionResult> EnvelopeLocked([FromRoute] string envelopeReceiverId)
|
public async Task<IActionResult> EnvelopeLocked([FromRoute] string envelopeReceiverId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -163,6 +171,7 @@ public class HomeController : ViewControllerBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private async Task<IActionResult> CreateShowEnvelopeView(string envelopeReceiverId, EnvelopeReceiverDto er)
|
private async Task<IActionResult> CreateShowEnvelopeView(string envelopeReceiverId, EnvelopeReceiverDto er)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -251,6 +260,7 @@ public class HomeController : ViewControllerBase
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
[NonAction]
|
[NonAction]
|
||||||
private async Task<IActionResult?> HandleAccessCodeAsync(Auth auth, EnvelopeReceiverSecretDto er_secret, string envelopeReceiverId)
|
private async Task<IActionResult?> HandleAccessCodeAsync(Auth auth, EnvelopeReceiverSecretDto er_secret, string envelopeReceiverId)
|
||||||
{
|
{
|
||||||
@@ -323,6 +333,7 @@ public class HomeController : ViewControllerBase
|
|||||||
#endregion
|
#endregion
|
||||||
|
|
||||||
[HttpPost("EnvelopeKey/{envelopeReceiverId}/Locked")]
|
[HttpPost("EnvelopeKey/{envelopeReceiverId}/Locked")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> LogInEnvelope([FromRoute] string envelopeReceiverId, [FromForm] Auth auth)
|
public async Task<IActionResult> LogInEnvelope([FromRoute] string envelopeReceiverId, [FromForm] Auth auth)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -401,6 +412,7 @@ public class HomeController : ViewControllerBase
|
|||||||
|
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
[HttpGet("EnvelopeKey/{envelopeReceiverId}/Success")]
|
[HttpGet("EnvelopeKey/{envelopeReceiverId}/Success")]
|
||||||
|
[Obsolete("Use DigitalData.Core.Exceptions and .Middleware")]
|
||||||
public async Task<IActionResult> EnvelopeSigned(string envelopeReceiverId)
|
public async Task<IActionResult> EnvelopeSigned(string envelopeReceiverId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -412,7 +424,7 @@ public class HomeController : ViewControllerBase
|
|||||||
if(!isExisting)
|
if(!isExisting)
|
||||||
return this.ViewEnvelopeNotFound();
|
return this.ViewEnvelopeNotFound();
|
||||||
|
|
||||||
Common.EnvelopeReceiver response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
EnvelopeReceiver response = await envelopeOldService.LoadEnvelope(envelopeReceiverId);
|
||||||
if (!envelopeOldService.ReceiverAlreadySigned((Envelope)response.Envelope, (int)response.Receiver.Id))
|
if (!envelopeOldService.ReceiverAlreadySigned((Envelope)response.Envelope, (int)response.Receiver.Id))
|
||||||
return base.Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
|
return base.Redirect($"/EnvelopeKey/{envelopeReceiverId}/Locked");
|
||||||
|
|
||||||
@@ -436,6 +448,7 @@ public class HomeController : ViewControllerBase
|
|||||||
|
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
[HttpGet("EnvelopeKey/{envelopeReceiverId}/Rejected")]
|
[HttpGet("EnvelopeKey/{envelopeReceiverId}/Rejected")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> EnvelopeRejected(string envelopeReceiverId)
|
public async Task<IActionResult> EnvelopeRejected(string envelopeReceiverId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -467,6 +480,7 @@ public class HomeController : ViewControllerBase
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("EnvelopeKey/{readOnlyKey}/ReadOnly")]
|
[HttpGet("EnvelopeKey/{readOnlyKey}/ReadOnly")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> EnvelopeReceiverReadOnly([FromRoute] string readOnlyKey)
|
public async Task<IActionResult> EnvelopeReceiverReadOnly([FromRoute] string readOnlyKey)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -1,10 +1,10 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using Newtonsoft.Json;
|
using Newtonsoft.Json;
|
||||||
using static EnvelopeGenerator.CommonServices.Constants;
|
using static EnvelopeGenerator.Domain.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers
|
namespace EnvelopeGenerator.Web.Controllers
|
||||||
{
|
{
|
||||||
@@ -14,12 +14,16 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
{
|
{
|
||||||
private readonly ILogger<ReadOnlyController> _logger;
|
private readonly ILogger<ReadOnlyController> _logger;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeReceiverReadOnlyService _erroService;
|
private readonly IEnvelopeReceiverReadOnlyService _erroService;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeMailService _mailService;
|
private readonly IEnvelopeMailService _mailService;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeHistoryService _histService;
|
private readonly IEnvelopeHistoryService _histService;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public ReadOnlyController(ILogger<ReadOnlyController> logger, IEnvelopeReceiverReadOnlyService erroService, IEnvelopeMailService mailService, IEnvelopeHistoryService histService)
|
public ReadOnlyController(ILogger<ReadOnlyController> logger, IEnvelopeReceiverReadOnlyService erroService, IEnvelopeMailService mailService, IEnvelopeHistoryService histService)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger = logger;
|
||||||
@@ -30,6 +34,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
|
|
||||||
[HttpPost]
|
[HttpPost]
|
||||||
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
[Authorize(Roles = ReceiverRole.FullyAuth)]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> CreateAsync([FromBody] EnvelopeReceiverReadOnlyCreateDto createDto)
|
public async Task<IActionResult> CreateAsync([FromBody] EnvelopeReceiverReadOnlyCreateDto createDto)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
@@ -62,7 +67,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
}
|
}
|
||||||
|
|
||||||
//read new entity
|
//read new entity
|
||||||
var read_res = await _erroService.ReadByIdAsync(creation_res.Data);
|
var read_res = await _erroService.ReadByIdAsync(creation_res.Data.Id);
|
||||||
if (read_res.IsFailed)
|
if (read_res.IsFailed)
|
||||||
{
|
{
|
||||||
_logger.LogNotice(creation_res);
|
_logger.LogNotice(creation_res);
|
||||||
@@ -76,7 +81,7 @@ namespace EnvelopeGenerator.Web.Controllers
|
|||||||
{
|
{
|
||||||
//TODO: implement multi-threading to history process (Task)
|
//TODO: implement multi-threading to history process (Task)
|
||||||
//TODO: remove casting after change the id type
|
//TODO: remove casting after change the id type
|
||||||
var hist_res = await _histService.RecordAsync((int)createDto.EnvelopeId, createDto.AddedWho, Common.Constants.EnvelopeStatus.EnvelopeShared);
|
var hist_res = await _histService.RecordAsync((int)createDto.EnvelopeId, createDto.AddedWho, EnvelopeStatus.EnvelopeShared);
|
||||||
if (hist_res.IsFailed)
|
if (hist_res.IsFailed)
|
||||||
{
|
{
|
||||||
_logger.LogError("Although the envelope was sent as read-only, the EnvelopeShared hisotry could not be saved. Create DTO:\n{createDto}", JsonConvert.SerializeObject(createDto));
|
_logger.LogError("Although the envelope was sent as read-only, the EnvelopeShared hisotry could not be saved. Create DTO:\n{createDto}", JsonConvert.SerializeObject(createDto));
|
||||||
|
|||||||
@@ -4,25 +4,28 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using EnvelopeGenerator.Extensions;
|
using EnvelopeGenerator.Extensions;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
using EnvelopeGenerator.Application.Resources;
|
||||||
using DigitalData.Core.DTO;
|
|
||||||
using EnvelopeGenerator.Application.Extensions;
|
using EnvelopeGenerator.Application.Extensions;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using Microsoft.AspNetCore.Authorization;
|
using Microsoft.AspNetCore.Authorization;
|
||||||
using static EnvelopeGenerator.CommonServices.Constants;
|
|
||||||
using Microsoft.AspNetCore.Authentication.Cookies;
|
using Microsoft.AspNetCore.Authentication.Cookies;
|
||||||
using Microsoft.AspNetCore.Authentication;
|
using Microsoft.AspNetCore.Authentication;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
|
using static EnvelopeGenerator.Domain.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers;
|
namespace EnvelopeGenerator.Web.Controllers;
|
||||||
|
|
||||||
//TODO: Add authorization as well as limiting the link duration (intermediate token with different role) or sign it
|
//TODO: Add authorization as well as limiting the link duration (intermediate token with different role) or sign it
|
||||||
public class TFARegController : ViewControllerBase
|
public class TFARegController : ViewControllerBase
|
||||||
{
|
{
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IEnvelopeReceiverService _envRcvService;
|
private readonly IEnvelopeReceiverService _envRcvService;
|
||||||
private readonly IAuthenticator _authenticator;
|
private readonly IAuthenticator _authenticator;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
private readonly IReceiverService _rcvService;
|
private readonly IReceiverService _rcvService;
|
||||||
private readonly TFARegParams _params;
|
private readonly TFARegParams _params;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public TFARegController(ILogger<TFARegController> logger, HtmlSanitizer sanitizer, Cultures cultures, IStringLocalizer<Resource> localizer, IEnvelopeReceiverService erService, IAuthenticator authenticator, IReceiverService receiverService, IOptions<TFARegParams> tfaRegParamsOptions) : base(logger, sanitizer, cultures, localizer)
|
public TFARegController(ILogger<TFARegController> logger, HtmlSanitizer sanitizer, Cultures cultures, IStringLocalizer<Resource> localizer, IEnvelopeReceiverService erService, IAuthenticator authenticator, IReceiverService receiverService, IOptions<TFARegParams> tfaRegParamsOptions) : base(logger, sanitizer, cultures, localizer)
|
||||||
{
|
{
|
||||||
_envRcvService = erService;
|
_envRcvService = erService;
|
||||||
@@ -34,6 +37,7 @@ public class TFARegController : ViewControllerBase
|
|||||||
//TODO: move under auth route
|
//TODO: move under auth route
|
||||||
[Authorize]
|
[Authorize]
|
||||||
[HttpGet("tfa/{envelopeReceiverId}")]
|
[HttpGet("tfa/{envelopeReceiverId}")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public async Task<IActionResult> Reg(string envelopeReceiverId)
|
public async Task<IActionResult> Reg(string envelopeReceiverId)
|
||||||
{
|
{
|
||||||
try
|
try
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ using EnvelopeGenerator.Domain.Entities;
|
|||||||
using DigitalData.Core.API;
|
using DigitalData.Core.API;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
{
|
|
||||||
public class TestConfigController : ReadControllerBase<IConfigService, ConfigDto, Config, int>
|
[Obsolete("Use MediatR")]
|
||||||
{
|
public class TestConfigController : ReadControllerBase<IConfigService, ConfigDto, Config, int>
|
||||||
public TestConfigController(ILogger<TestConfigController> logger, IConfigService service) : base(logger, service)
|
{
|
||||||
{
|
public TestConfigController(ILogger<TestConfigController> logger, IConfigService service) : base(logger, service)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,18 +1,18 @@
|
|||||||
using DigitalData.Core.API;
|
using DigitalData.Core.API;
|
||||||
using DigitalData.Core.Abstraction.Application;
|
using DigitalData.Core.Abstraction.Application;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using DigitalData.Core.Abstractions;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/test/[controller]")]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public class TestControllerBase<TCRUDService, TDto, TEntity, TId> : BasicCRUDControllerBase<TCRUDService, TDto, TEntity, TId>
|
||||||
|
where TCRUDService : ICRUDService<TDto, TDto, TEntity, TId>
|
||||||
|
where TDto : class
|
||||||
|
where TEntity : class
|
||||||
{
|
{
|
||||||
[ApiController]
|
public TestControllerBase(ILogger logger, TCRUDService service) : base(logger, service)
|
||||||
[Route("api/test/[controller]")]
|
|
||||||
public class TestControllerBase<TCRUDService, TDto, TEntity, TId> : BasicCRUDControllerBase<TCRUDService, TDto, TEntity, TId>
|
|
||||||
where TCRUDService : ICRUDService<TDto, TDto, TEntity, TId>
|
|
||||||
where TDto : class, IUnique<TId> where TEntity : class, IUnique<TId>
|
|
||||||
{
|
{
|
||||||
public TestControllerBase(ILogger logger, TCRUDService service) : base(logger, service)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Domain.Entities;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test;
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public class TestDocumentReceiverElementController : TestControllerBase<IDocumentReceiverElementService, DocumentReceiverElementDto, DocumentReceiverElement, int>
|
public class TestDocumentReceiverElementController : TestControllerBase<IDocumentReceiverElementService, DocumentReceiverElementDto, DocumentReceiverElement, int>
|
||||||
{
|
{
|
||||||
public TestDocumentReceiverElementController(ILogger<TestDocumentReceiverElementController> logger, IDocumentReceiverElementService service) : base(logger, service)
|
public TestDocumentReceiverElementController(ILogger<TestDocumentReceiverElementController> logger, IDocumentReceiverElementService service) : base(logger, service)
|
||||||
|
|||||||
@@ -2,13 +2,12 @@
|
|||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
{
|
|
||||||
public class TestDocumentStatusController : TestControllerBase<IDocumentStatusService, DocumentStatusDto, DocumentStatus, int>
|
|
||||||
{
|
|
||||||
public TestDocumentStatusController(ILogger<TestDocumentStatusController> logger, IDocumentStatusService service) : base(logger, service)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
[Obsolete("Use MediatR")]
|
||||||
|
public class TestDocumentStatusController : TestControllerBase<IDocumentStatusService, DocumentStatusDto, DocumentStatus, int>
|
||||||
|
{
|
||||||
|
public TestDocumentStatusController(ILogger<TestDocumentStatusController> logger, IDocumentStatusService service) : base(logger, service)
|
||||||
|
{
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,33 +1,34 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using static EnvelopeGenerator.CommonServices.Constants;
|
using static EnvelopeGenerator.Domain.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public class TestEmailTemplateController : TestControllerBase<IEmailTemplateService, EmailTemplateDto, EmailTemplate, int>
|
||||||
{
|
{
|
||||||
public class TestEmailTemplateController : TestControllerBase<IEmailTemplateService, EmailTemplateDto, EmailTemplate, int>
|
public TestEmailTemplateController(ILogger<TestEmailTemplateController> logger, IEmailTemplateService service) : base(logger, service)
|
||||||
{
|
{
|
||||||
public TestEmailTemplateController(ILogger<TestEmailTemplateController> logger, IEmailTemplateService service) : base(logger, service)
|
|
||||||
{
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public virtual async Task<IActionResult> GetAll([FromQuery] string? tempType = null)
|
|
||||||
{
|
|
||||||
return tempType is null
|
|
||||||
? await base.GetAll()
|
|
||||||
: await _service.ReadByNameAsync((EmailTemplateType)Enum.Parse(typeof(EmailTemplateType), tempType)).ThenAsync(
|
|
||||||
Success: Ok,
|
|
||||||
Fail: IActionResult (messages, notices) =>
|
|
||||||
{
|
|
||||||
_logger.LogNotice(notices);
|
|
||||||
return NotFound(messages);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
|
|
||||||
[NonAction]
|
|
||||||
public override Task<IActionResult> GetAll() => base.GetAll();
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public virtual async Task<IActionResult> GetAll([FromQuery] string? tempType = null)
|
||||||
|
{
|
||||||
|
return tempType is null
|
||||||
|
? await base.GetAll()
|
||||||
|
: await _service.ReadByNameAsync((EmailTemplateType)Enum.Parse(typeof(EmailTemplateType), tempType)).ThenAsync(
|
||||||
|
Success: Ok,
|
||||||
|
Fail: IActionResult (messages, notices) =>
|
||||||
|
{
|
||||||
|
_logger.LogNotice(notices);
|
||||||
|
return NotFound(messages);
|
||||||
|
});
|
||||||
|
}
|
||||||
|
|
||||||
|
[NonAction]
|
||||||
|
public override Task<IActionResult> GetAll() => base.GetAll();
|
||||||
}
|
}
|
||||||
@@ -2,13 +2,13 @@
|
|||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
{
|
|
||||||
public class TestEnvelopeCertificateController : TestControllerBase<IEnvelopeCertificateService, EnvelopeCertificateDto, EnvelopeCertificate, int>
|
[Obsolete("Use MediatR")]
|
||||||
{
|
public class TestEnvelopeCertificateController : TestControllerBase<IEnvelopeCertificateService, EnvelopeCertificateDto, EnvelopeCertificate, int>
|
||||||
public TestEnvelopeCertificateController(ILogger<TestEnvelopeCertificateController> logger, IEnvelopeCertificateService service) : base(logger, service)
|
{
|
||||||
{
|
public TestEnvelopeCertificateController(ILogger<TestEnvelopeCertificateController> logger, IEnvelopeCertificateService service) : base(logger, service)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -4,53 +4,53 @@ using Microsoft.AspNetCore.Mvc;
|
|||||||
using EnvelopeGenerator.Extensions;
|
using EnvelopeGenerator.Extensions;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public class TestEnvelopeController : TestControllerBase<IEnvelopeService, EnvelopeDto, Envelope, int>
|
||||||
{
|
{
|
||||||
public class TestEnvelopeController : TestControllerBase<IEnvelopeService, EnvelopeDto, Envelope, int>
|
public TestEnvelopeController(ILogger<TestEnvelopeController> logger, IEnvelopeService service) : base(logger, service)
|
||||||
{
|
{
|
||||||
public TestEnvelopeController(ILogger<TestEnvelopeController> logger, IEnvelopeService service) : base(logger, service)
|
}
|
||||||
|
|
||||||
|
[NonAction]
|
||||||
|
public override Task<IActionResult> GetAll() => base.GetAll();
|
||||||
|
|
||||||
|
[HttpGet]
|
||||||
|
public async Task<IActionResult> GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = false, [FromQuery] bool withHistory = false, [FromQuery] bool withDocumentReceiverElement = false, [FromQuery] bool withUser = false, [FromQuery] bool withAll = true)
|
||||||
|
{
|
||||||
|
if (envelopeKey is not null)
|
||||||
{
|
{
|
||||||
|
(var uuid, var signature) = envelopeKey.DecodeEnvelopeReceiverId();
|
||||||
|
if (uuid is null)
|
||||||
|
return BadRequest("UUID is null");
|
||||||
|
var envlopeServiceResult = await _service.ReadByUuidAsync(
|
||||||
|
uuid: uuid,
|
||||||
|
withDocuments: withDocuments, withHistory: withHistory, withDocumentReceiverElement: withDocumentReceiverElement, withUser: withUser, withAll: withAll);
|
||||||
|
|
||||||
|
if (envlopeServiceResult.IsSuccess)
|
||||||
|
{
|
||||||
|
return Ok(envlopeServiceResult.Data);
|
||||||
|
}
|
||||||
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
[NonAction]
|
var result = await _service.ReadAllWithAsync(documents: withDocuments, history: withHistory);
|
||||||
public override Task<IActionResult> GetAll() => base.GetAll();
|
if (result.IsSuccess)
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public async Task<IActionResult> GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = false, [FromQuery] bool withHistory = false, [FromQuery] bool withDocumentReceiverElement = false, [FromQuery] bool withUser = false, [FromQuery] bool withAll = true)
|
|
||||||
{
|
{
|
||||||
if(envelopeKey is not null)
|
return Ok(result);
|
||||||
{
|
|
||||||
(var uuid, var signature) = envelopeKey.DecodeEnvelopeReceiverId();
|
|
||||||
if (uuid is null)
|
|
||||||
return BadRequest("UUID is null");
|
|
||||||
var envlopeServiceResult = await _service.ReadByUuidAsync(
|
|
||||||
uuid: uuid,
|
|
||||||
withDocuments: withDocuments, withHistory: withHistory, withDocumentReceiverElement:withDocumentReceiverElement, withUser:withUser, withAll:withAll);
|
|
||||||
|
|
||||||
if (envlopeServiceResult.IsSuccess)
|
|
||||||
{
|
|
||||||
return Ok(envlopeServiceResult.Data);
|
|
||||||
}
|
|
||||||
return NotFound();
|
|
||||||
}
|
|
||||||
|
|
||||||
var result = await _service.ReadAllWithAsync(documents: withDocuments, history: withHistory);
|
|
||||||
if (result.IsSuccess)
|
|
||||||
{
|
|
||||||
return Ok(result);
|
|
||||||
}
|
|
||||||
return NotFound(result);
|
|
||||||
}
|
}
|
||||||
|
return NotFound(result);
|
||||||
|
}
|
||||||
|
|
||||||
[HttpGet("decode")]
|
[HttpGet("decode")]
|
||||||
public IActionResult DecodeEnvelopeReceiverId(string envelopeReceiverId, int type = 0)
|
public IActionResult DecodeEnvelopeReceiverId(string envelopeReceiverId, int type = 0)
|
||||||
|
{
|
||||||
|
return type switch
|
||||||
{
|
{
|
||||||
return type switch
|
1 => Ok(envelopeReceiverId.GetEnvelopeUuid()),
|
||||||
{
|
2 => Ok(envelopeReceiverId.GetReceiverSignature()),
|
||||||
1 => Ok(envelopeReceiverId.GetEnvelopeUuid()),
|
_ => Ok(envelopeReceiverId.DecodeEnvelopeReceiverId()),
|
||||||
2 => Ok(envelopeReceiverId.GetReceiverSignature()),
|
};
|
||||||
_ => Ok(envelopeReceiverId.DecodeEnvelopeReceiverId()),
|
}
|
||||||
};
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Domain.Entities;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test;
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public class TestEnvelopeDocumentController : TestControllerBase<IEnvelopeDocumentService, EnvelopeDocumentDto, EnvelopeDocument, int>
|
public class TestEnvelopeDocumentController : TestControllerBase<IEnvelopeDocumentService, EnvelopeDocumentDto, EnvelopeDocument, int>
|
||||||
{
|
{
|
||||||
public TestEnvelopeDocumentController(ILogger<TestEnvelopeDocumentController> logger, IEnvelopeDocumentService service) : base(logger, service)
|
public TestEnvelopeDocumentController(ILogger<TestEnvelopeDocumentController> logger, IEnvelopeDocumentService service) : base(logger, service)
|
||||||
|
|||||||
@@ -3,9 +3,11 @@ using EnvelopeGenerator.Application.Contracts.Services;
|
|||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
using static EnvelopeGenerator.Domain.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test;
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public class TestEnvelopeHistoryController : CRUDControllerBase<IEnvelopeHistoryService, EnvelopeHistoryCreateDto, EnvelopeHistoryDto, EnvelopeHistoryDto, EnvelopeHistory, long>
|
public class TestEnvelopeHistoryController : CRUDControllerBase<IEnvelopeHistoryService, EnvelopeHistoryCreateDto, EnvelopeHistoryDto, EnvelopeHistoryDto, EnvelopeHistory, long>
|
||||||
{
|
{
|
||||||
public TestEnvelopeHistoryController(ILogger<TestEnvelopeHistoryController> logger, IEnvelopeHistoryService service) : base(logger, service)
|
public TestEnvelopeHistoryController(ILogger<TestEnvelopeHistoryController> logger, IEnvelopeHistoryService service) : base(logger, service)
|
||||||
@@ -13,7 +15,7 @@ public class TestEnvelopeHistoryController : CRUDControllerBase<IEnvelopeHistory
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet("Count")]
|
[HttpGet("Count")]
|
||||||
public async Task<IActionResult> Count(int? envelopeId = null, string? userReference = null, int? status = null)
|
public async Task<IActionResult> Count(int? envelopeId = null, string? userReference = null, EnvelopeStatus? status = null)
|
||||||
{
|
{
|
||||||
return Ok(await _service.CountAsync(envelopeId, userReference, status));
|
return Ok(await _service.CountAsync(envelopeId, userReference, status));
|
||||||
}
|
}
|
||||||
@@ -25,7 +27,7 @@ public class TestEnvelopeHistoryController : CRUDControllerBase<IEnvelopeHistory
|
|||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> GetAsyncWith(int? envelopeId = null, string? userReference = null, int? status = null)
|
public async Task<IActionResult> GetAsyncWith(int? envelopeId = null, string? userReference = null, EnvelopeStatus? status = null)
|
||||||
{
|
{
|
||||||
return Ok(await _service.ReadAsync(envelopeId: envelopeId, userReference: userReference, status: status));
|
return Ok(await _service.ReadAsync(envelopeId: envelopeId, userReference: userReference, status: status));
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,48 +1,50 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Net;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/test/[controller]")]
|
||||||
|
public class TestEnvelopeMailController : ControllerBase
|
||||||
{
|
{
|
||||||
[ApiController]
|
private readonly ILogger<TestEnvelopeMailController> _logger;
|
||||||
[Route("api/test/[controller]")]
|
[Obsolete("Use MediatR")]
|
||||||
public class TestEnvelopeMailController : ControllerBase
|
private readonly IEnvelopeMailService _mailService;
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
private readonly IEnvelopeReceiverService _envRcvService;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public TestEnvelopeMailController(ILogger<TestEnvelopeMailController> logger, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverService envelopeReceiverService)
|
||||||
{
|
{
|
||||||
private readonly ILogger<TestEnvelopeMailController> _logger;
|
_logger = logger;
|
||||||
private readonly IEnvelopeMailService _mailService;
|
_mailService = envelopeMailService;
|
||||||
private readonly IEnvelopeReceiverService _envRcvService;
|
_envRcvService = envelopeReceiverService;
|
||||||
|
}
|
||||||
|
|
||||||
public TestEnvelopeMailController(ILogger<TestEnvelopeMailController> logger, IEnvelopeMailService envelopeMailService, IEnvelopeReceiverService envelopeReceiverService)
|
[HttpGet]
|
||||||
{
|
[Obsolete("Use MediatR")]
|
||||||
_logger = logger;
|
public async Task<IActionResult> SendAccessCode([FromQuery] string envelopeReceiverId = "ZDlmYjZmYjctNTBhNS00NTcyLWI5NTQtYzJjYmY4N2UwZmZhOjowRDI3MkEwNTdGMjRBMkY3MEZDMzM3QkRBQzA1MjYxRjU3NTI2QzgxQ0IyMUE5NzE1RjA1NTJFQzdFNjIwNjY1")
|
||||||
_mailService = envelopeMailService;
|
{
|
||||||
_envRcvService = envelopeReceiverService;
|
return await _envRcvService.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelopeReceiverId).ThenAsync<EnvelopeReceiverDto, IActionResult>(
|
||||||
}
|
SuccessAsync: async er =>
|
||||||
|
{
|
||||||
|
|
||||||
[HttpGet]
|
|
||||||
public async Task<IActionResult> SendAccessCode([FromQuery] string envelopeReceiverId = "ZDlmYjZmYjctNTBhNS00NTcyLWI5NTQtYzJjYmY4N2UwZmZhOjowRDI3MkEwNTdGMjRBMkY3MEZDMzM3QkRBQzA1MjYxRjU3NTI2QzgxQ0IyMUE5NzE1RjA1NTJFQzdFNjIwNjY1")
|
var mailRes = await _mailService.SendAccessCodeAsync(envelopeReceiverDto: er);
|
||||||
{
|
if (mailRes.IsFailed)
|
||||||
return await _envRcvService.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelopeReceiverId).ThenAsync<EnvelopeReceiverDto, IActionResult>(
|
|
||||||
SuccessAsync: async er =>
|
|
||||||
{
|
{
|
||||||
|
_logger.LogNotice(mailRes);
|
||||||
|
return StatusCode(500, mailRes.Notices);
|
||||||
|
}
|
||||||
|
|
||||||
|
return Ok();
|
||||||
var mailRes = await _mailService.SendAccessCodeAsync(envelopeReceiverDto: er);
|
},
|
||||||
if (mailRes.IsFailed)
|
Fail: (messages, notices) =>
|
||||||
{
|
{
|
||||||
_logger.LogNotice(mailRes);
|
_logger.LogNotice(notices);
|
||||||
return StatusCode(500, mailRes.Notices);
|
return StatusCode(500, notices);
|
||||||
}
|
});
|
||||||
|
|
||||||
return Ok();
|
|
||||||
},
|
|
||||||
Fail: (messages, notices) =>
|
|
||||||
{
|
|
||||||
_logger.LogNotice(notices);
|
|
||||||
return StatusCode(500, notices);
|
|
||||||
});
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,66 +1,66 @@
|
|||||||
using DigitalData.Core.API;
|
using DigitalData.Core.API;
|
||||||
using DigitalData.Core.DTO;
|
|
||||||
using EnvelopeGenerator.Extensions;
|
using EnvelopeGenerator.Extensions;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
|
using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public class TestEnvelopeReceiverController : ReadControllerBase<IEnvelopeReceiverService, EnvelopeReceiverDto, EnvelopeReceiver, (int Envelope, int Receiver)>
|
||||||
{
|
{
|
||||||
public class TestEnvelopeReceiverController : ReadControllerBase<IEnvelopeReceiverService, EnvelopeReceiverDto, EnvelopeReceiver, (int Envelope, int Receiver)>
|
public TestEnvelopeReceiverController(ILogger<TestEnvelopeReceiverController> logger, IEnvelopeReceiverService service) : base(logger, service)
|
||||||
{
|
{
|
||||||
public TestEnvelopeReceiverController(ILogger<TestEnvelopeReceiverController> logger, IEnvelopeReceiverService service) : base(logger, service)
|
}
|
||||||
|
|
||||||
|
[HttpGet("verify-access-code/{envelope_receiver_id}")]
|
||||||
|
public async Task<IActionResult> VerifyAccessCode([FromRoute] string envelope_receiver_id, [FromQuery] string access_code)
|
||||||
|
{
|
||||||
|
var verification = await _service.VerifyAccessCodeAsync(envelopeReceiverId:envelope_receiver_id, accessCode: access_code);
|
||||||
|
|
||||||
|
if (verification.IsSuccess)
|
||||||
|
return Ok(verification);
|
||||||
|
else if (verification.HasFlag(Flag.SecurityBreach))
|
||||||
|
return Forbid();
|
||||||
|
else if (verification.HasFlag(Flag.SecurityBreachOrDataIntegrity))
|
||||||
|
return Conflict();
|
||||||
|
else
|
||||||
|
return this.InnerServiceError(verification);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("e-r-id/{envelope_receiver_id}")]
|
||||||
|
public async Task<IActionResult> GetByEnvelopeReceiverId([FromRoute] string envelope_receiver_id)
|
||||||
|
{
|
||||||
|
var er_result = await _service.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelope_receiver_id);
|
||||||
|
if (er_result.IsSuccess)
|
||||||
|
return Ok(er_result);
|
||||||
|
else
|
||||||
|
return this.InnerServiceError(er_result);
|
||||||
|
}
|
||||||
|
|
||||||
|
[HttpGet("decode")]
|
||||||
|
public IActionResult DecodeEnvelopeReceiverId(string envelopeReceiverId, bool isReadOnly = false)
|
||||||
|
{
|
||||||
|
if (isReadOnly)
|
||||||
{
|
{
|
||||||
|
var readOnlyId = envelopeReceiverId.DecodeEnvelopeReceiverReadOnlyId();
|
||||||
|
return Ok(new { readOnlyId });
|
||||||
}
|
}
|
||||||
|
else
|
||||||
[HttpGet("verify-access-code/{envelope_receiver_id}")]
|
|
||||||
public async Task<IActionResult> VerifyAccessCode([FromRoute] string envelope_receiver_id, [FromQuery] string access_code)
|
|
||||||
{
|
{
|
||||||
var verification = await _service.VerifyAccessCodeAsync(envelopeReceiverId:envelope_receiver_id, accessCode: access_code);
|
var (EnvelopeUuid, ReceiverSignature) = envelopeReceiverId.DecodeEnvelopeReceiverId();
|
||||||
|
return Ok(new { uuid = EnvelopeUuid, signature = ReceiverSignature });
|
||||||
if (verification.IsSuccess)
|
|
||||||
return Ok(verification);
|
|
||||||
else if (verification.HasFlag(Flag.SecurityBreach))
|
|
||||||
return Forbid();
|
|
||||||
else if (verification.HasFlag(Flag.SecurityBreachOrDataIntegrity))
|
|
||||||
return Conflict();
|
|
||||||
else
|
|
||||||
return this.InnerServiceError(verification);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("e-r-id/{envelope_receiver_id}")]
|
|
||||||
public async Task<IActionResult> GetByEnvelopeReceiverId([FromRoute] string envelope_receiver_id)
|
|
||||||
{
|
|
||||||
var er_result = await _service.ReadByEnvelopeReceiverIdAsync(envelopeReceiverId: envelope_receiver_id);
|
|
||||||
if (er_result.IsSuccess)
|
|
||||||
return Ok(er_result);
|
|
||||||
else
|
|
||||||
return this.InnerServiceError(er_result);
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("decode")]
|
|
||||||
public IActionResult DecodeEnvelopeReceiverId(string envelopeReceiverId, bool isReadOnly = false)
|
|
||||||
{
|
|
||||||
if (isReadOnly)
|
|
||||||
{
|
|
||||||
var readOnlyId = envelopeReceiverId.DecodeEnvelopeReceiverReadOnlyId();
|
|
||||||
return Ok(new { readOnlyId });
|
|
||||||
}
|
|
||||||
else
|
|
||||||
{
|
|
||||||
var (EnvelopeUuid, ReceiverSignature) = envelopeReceiverId.DecodeEnvelopeReceiverId();
|
|
||||||
return Ok(new { uuid = EnvelopeUuid, signature = ReceiverSignature });
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("encode")]
|
|
||||||
public IActionResult EncodeEnvelopeReceiverId(string? uuid = null, string? signature = null, long? readOnlyId = null)
|
|
||||||
{
|
|
||||||
if(readOnlyId is long readOnlyId_long)
|
|
||||||
return Ok(readOnlyId_long.EncodeEnvelopeReceiverId());
|
|
||||||
else
|
|
||||||
return Ok((uuid ?? string.Empty, signature ?? string.Empty).EncodeEnvelopeReceiverId());
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[HttpGet("encode")]
|
||||||
|
public IActionResult EncodeEnvelopeReceiverId(string? uuid = null, string? signature = null, long? readOnlyId = null)
|
||||||
|
{
|
||||||
|
if(readOnlyId is long readOnlyId_long)
|
||||||
|
return Ok(readOnlyId_long.EncodeEnvelopeReceiverId());
|
||||||
|
else
|
||||||
|
return Ok((uuid ?? string.Empty, signature ?? string.Empty).EncodeEnvelopeReceiverId());
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,6 +4,7 @@ using EnvelopeGenerator.Domain.Entities;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test;
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
public class TestEnvelopeTypeController : TestControllerBase<IEnvelopeTypeService, EnvelopeTypeDto, EnvelopeType, int>
|
public class TestEnvelopeTypeController : TestControllerBase<IEnvelopeTypeService, EnvelopeTypeDto, EnvelopeType, int>
|
||||||
{
|
{
|
||||||
public TestEnvelopeTypeController(ILogger<TestEnvelopeTypeController> logger, IEnvelopeTypeService service) : base(logger, service)
|
public TestEnvelopeTypeController(ILogger<TestEnvelopeTypeController> logger, IEnvelopeTypeService service) : base(logger, service)
|
||||||
|
|||||||
@@ -3,13 +3,13 @@ using EnvelopeGenerator.Application.Contracts.Services;
|
|||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
{
|
|
||||||
public class TestReceiverController : CRUDControllerBase<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>
|
[Obsolete("Use MediatR")]
|
||||||
{
|
public class TestReceiverController : CRUDControllerBase<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>
|
||||||
public TestReceiverController(ILogger<TestReceiverController> logger, IReceiverService service) : base(logger, service)
|
{
|
||||||
{
|
public TestReceiverController(ILogger<TestReceiverController> logger, IReceiverService service) : base(logger, service)
|
||||||
|
{
|
||||||
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,36 +2,34 @@
|
|||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
using System.Text.Encodings.Web;
|
using System.Text.Encodings.Web;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[ApiController]
|
||||||
|
[Route("api/test/[controller]")]
|
||||||
|
public class TestSanitizeController : ControllerBase
|
||||||
{
|
{
|
||||||
[ApiController]
|
private readonly HtmlEncoder _htmlEncoder;
|
||||||
[Route("api/test/[controller]")]
|
private readonly HtmlSanitizer _sanitizer;
|
||||||
public class TestSanitizeController : ControllerBase
|
|
||||||
|
public TestSanitizeController(HtmlEncoder htmlEncoder, HtmlSanitizer sanitizer)
|
||||||
{
|
{
|
||||||
private readonly HtmlEncoder _htmlEncoder;
|
_htmlEncoder = htmlEncoder;
|
||||||
private readonly HtmlSanitizer _sanitizer;
|
_sanitizer = sanitizer;
|
||||||
|
|
||||||
public TestSanitizeController(HtmlEncoder htmlEncoder, HtmlSanitizer sanitizer)
|
|
||||||
{
|
|
||||||
_htmlEncoder = htmlEncoder;
|
|
||||||
_sanitizer = sanitizer;
|
|
||||||
}
|
|
||||||
|
|
||||||
[HttpGet("sanitize")]
|
|
||||||
public IActionResult Sanitize([FromQuery] string? input = null) => Ok(new
|
|
||||||
{
|
|
||||||
input,
|
|
||||||
Sanitized = _sanitizer.Sanitize(input),
|
|
||||||
SanitizedDocument = _sanitizer.SanitizeDocument(input),
|
|
||||||
SanitizedDom = _sanitizer.SanitizeDom(input)
|
|
||||||
});
|
|
||||||
|
|
||||||
|
|
||||||
[HttpGet("encode")]
|
|
||||||
public IActionResult Encoder([FromQuery] string? input = null) => Ok(new
|
|
||||||
{
|
|
||||||
input,
|
|
||||||
Encoded = _htmlEncoder.Encode(input)
|
|
||||||
});
|
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
[HttpGet("sanitize")]
|
||||||
|
public IActionResult Sanitize([FromQuery] string input) => Ok(new
|
||||||
|
{
|
||||||
|
input,
|
||||||
|
Sanitized = _sanitizer.Sanitize(input),
|
||||||
|
SanitizedDocument = _sanitizer.SanitizeDocument(input),
|
||||||
|
SanitizedDom = _sanitizer.SanitizeDom(input)
|
||||||
|
});
|
||||||
|
|
||||||
|
[HttpGet("encode")]
|
||||||
|
public IActionResult Encoder([FromQuery] string input) => Ok(new
|
||||||
|
{
|
||||||
|
input,
|
||||||
|
Encoded = _htmlEncoder.Encode(input)
|
||||||
|
});
|
||||||
|
}
|
||||||
@@ -1,14 +0,0 @@
|
|||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
|
||||||
{
|
|
||||||
public class TestUserReceiverController : TestControllerBase< IUserReceiverService, UserReceiverDto, UserReceiver, int>
|
|
||||||
{
|
|
||||||
public TestUserReceiverController(ILogger<TestUserReceiverController> logger, IUserReceiverService service) : base(logger, service)
|
|
||||||
{
|
|
||||||
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -1,56 +1,55 @@
|
|||||||
using EnvelopeGenerator.CommonServices;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Web.Services;
|
using EnvelopeGenerator.Web.Services;
|
||||||
using Microsoft.AspNetCore.Mvc;
|
using Microsoft.AspNetCore.Mvc;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Controllers.Test
|
namespace EnvelopeGenerator.Web.Controllers.Test;
|
||||||
|
|
||||||
|
[Route("api/test/[controller]")]
|
||||||
|
public class TestViewController : BaseController
|
||||||
{
|
{
|
||||||
[Route("api/test/[controller]")]
|
private readonly EnvelopeOldService envelopeOldService;
|
||||||
public class TestViewController : BaseController
|
private readonly IConfiguration _config;
|
||||||
|
|
||||||
|
public TestViewController(DatabaseService databaseService, EnvelopeOldService envelopeOldService, ILogger<TestViewController> logger, IConfiguration configuration) : base(databaseService, logger)
|
||||||
{
|
{
|
||||||
private readonly EnvelopeOldService envelopeOldService;
|
this.envelopeOldService = envelopeOldService;
|
||||||
private readonly IConfiguration _config;
|
_config = configuration;
|
||||||
|
}
|
||||||
|
|
||||||
public TestViewController(DatabaseService databaseService, EnvelopeOldService envelopeOldService, ILogger<TestViewController> logger, IConfiguration configuration) : base(databaseService, logger)
|
[HttpGet]
|
||||||
{
|
public IActionResult Index()
|
||||||
this.envelopeOldService = envelopeOldService;
|
{
|
||||||
_config = configuration;
|
return View("AnnotationIndex");
|
||||||
}
|
}
|
||||||
|
|
||||||
[HttpGet]
|
[HttpPost]
|
||||||
public IActionResult Index()
|
public IActionResult DebugEnvelopes([FromForm] string? password)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
return View("AnnotationIndex");
|
var passwordFromConfig = _config["AdminPassword"];
|
||||||
}
|
|
||||||
|
|
||||||
[HttpPost]
|
if (passwordFromConfig == null)
|
||||||
public IActionResult DebugEnvelopes([FromForm] string? password)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
{
|
||||||
var passwordFromConfig = _config["AdminPassword"];
|
ViewData["error"] = "No admin password configured!";
|
||||||
|
|
||||||
if (passwordFromConfig == null)
|
|
||||||
{
|
|
||||||
ViewData["error"] = "No admin password configured!";
|
|
||||||
return View("AnnotationIndex");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (password != passwordFromConfig)
|
|
||||||
{
|
|
||||||
ViewData["error"] = "Wrong Password!";
|
|
||||||
return View("AnnotationIndex");
|
|
||||||
}
|
|
||||||
|
|
||||||
List<Envelope> envelopes = envelopeOldService.LoadEnvelopes();
|
|
||||||
|
|
||||||
return View("DebugEnvelopes", envelopes);
|
|
||||||
}
|
|
||||||
catch(Exception ex)
|
|
||||||
{
|
|
||||||
_logger.LogError(ex, "Unexpected error");
|
|
||||||
ViewData["error"] = "Unknown error!";
|
|
||||||
return View("AnnotationIndex");
|
return View("AnnotationIndex");
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
if (password != passwordFromConfig)
|
||||||
|
{
|
||||||
|
ViewData["error"] = "Wrong Password!";
|
||||||
|
return View("AnnotationIndex");
|
||||||
|
}
|
||||||
|
|
||||||
|
List<Envelope> envelopes = envelopeOldService.LoadEnvelopes();
|
||||||
|
|
||||||
|
return View("DebugEnvelopes", envelopes);
|
||||||
|
}
|
||||||
|
catch(Exception ex)
|
||||||
|
{
|
||||||
|
_logger.LogError(ex, "Unexpected error");
|
||||||
|
ViewData["error"] = "Unknown error!";
|
||||||
|
return View("AnnotationIndex");
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2113,7 +2113,7 @@
|
|||||||
<PrivateAssets>all</PrivateAssets>
|
<PrivateAssets>all</PrivateAssets>
|
||||||
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
<IncludeAssets>runtime; build; native; contentfiles; analyzers; buildtransitive</IncludeAssets>
|
||||||
</PackageReference>
|
</PackageReference>
|
||||||
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.15" />
|
<PackageReference Include="Microsoft.EntityFrameworkCore.SqlServer" Version="7.0.20" />
|
||||||
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="7.0.20" />
|
<PackageReference Include="Microsoft.Extensions.Caching.SqlServer" Version="7.0.20" />
|
||||||
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
<PackageReference Include="Newtonsoft.Json" Version="13.0.3" />
|
||||||
<PackageReference Include="NLog" Version="5.2.5" />
|
<PackageReference Include="NLog" Version="5.2.5" />
|
||||||
|
|||||||
@@ -88,7 +88,10 @@ try
|
|||||||
}
|
}
|
||||||
|
|
||||||
//AddEF Core dbcontext
|
//AddEF Core dbcontext
|
||||||
var connStr = config.GetConnectionString(Key.Default) ?? throw new InvalidOperationException("There is no default connection string in appsettings.json.");
|
var useDbMigration = Environment.GetEnvironmentVariable("MIGRATION_TEST_MODE") == true.ToString() || config.GetValue<bool>("UseDbMigration");
|
||||||
|
var cnnStrName = useDbMigration ? Key.DbMigrationTest : Key.Default;
|
||||||
|
var connStr = config.GetConnectionString(cnnStrName)
|
||||||
|
?? throw new InvalidOperationException($"Connection string '{cnnStrName}' is missing in the application configuration.");
|
||||||
|
|
||||||
builder.Services.AddDistributedSqlServerCache(options =>
|
builder.Services.AddDistributedSqlServerCache(options =>
|
||||||
{
|
{
|
||||||
@@ -98,6 +101,7 @@ try
|
|||||||
});
|
});
|
||||||
|
|
||||||
// Add envelope generator services
|
// Add envelope generator services
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services.AddEnvelopeGeneratorInfrastructureServices((provider, options) =>
|
builder.Services.AddEnvelopeGeneratorInfrastructureServices((provider, options) =>
|
||||||
{
|
{
|
||||||
var logger = provider.GetRequiredService<ILogger<EGDbContext>>();
|
var logger = provider.GetRequiredService<ILogger<EGDbContext>>();
|
||||||
@@ -106,8 +110,11 @@ try
|
|||||||
.EnableSensitiveDataLogging()
|
.EnableSensitiveDataLogging()
|
||||||
.EnableDetailedErrors();
|
.EnableDetailedErrors();
|
||||||
});
|
});
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services.AddEnvelopeGeneratorServices(config);
|
builder.Services.AddEnvelopeGeneratorServices(config);
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
builder.Services.Configure<CookiePolicyOptions>(options =>
|
builder.Services.Configure<CookiePolicyOptions>(options =>
|
||||||
{
|
{
|
||||||
@@ -174,7 +181,10 @@ try
|
|||||||
builder.Services.AddSingleton(sp => sp.GetRequiredService<IOptions<Cultures>>().Value);
|
builder.Services.AddSingleton(sp => sp.GetRequiredService<IOptions<Cultures>>().Value);
|
||||||
|
|
||||||
// Register mail services
|
// Register mail services
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services.AddScoped<IEnvelopeMailService, EnvelopeMailService>();
|
builder.Services.AddScoped<IEnvelopeMailService, EnvelopeMailService>();
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
builder.Services.AddDispatcher<EGDbContext>();
|
builder.Services.AddDispatcher<EGDbContext>();
|
||||||
|
|
||||||
builder.Services.AddMemoryCache();
|
builder.Services.AddMemoryCache();
|
||||||
@@ -183,7 +193,9 @@ try
|
|||||||
|
|
||||||
builder.ConfigureBySection<AnnotationParams>();
|
builder.ConfigureBySection<AnnotationParams>();
|
||||||
|
|
||||||
|
#pragma warning disable CS0618 // Type or member is obsolete
|
||||||
builder.Services.AddUserManager<EGDbContext>();
|
builder.Services.AddUserManager<EGDbContext>();
|
||||||
|
#pragma warning restore CS0618 // Type or member is obsolete
|
||||||
|
|
||||||
var app = builder.Build();
|
var app = builder.Build();
|
||||||
|
|
||||||
|
|||||||
@@ -16,7 +16,7 @@
|
|||||||
"ASPNETCORE_ENVIRONMENT": "Development"
|
"ASPNETCORE_ENVIRONMENT": "Development"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"swagger": {
|
"https": {
|
||||||
"commandName": "Project",
|
"commandName": "Project",
|
||||||
"launchBrowser": true,
|
"launchBrowser": true,
|
||||||
"launchUrl": "swagger",
|
"launchUrl": "swagger",
|
||||||
@@ -25,6 +25,17 @@
|
|||||||
},
|
},
|
||||||
"dotnetRunMessages": true,
|
"dotnetRunMessages": true,
|
||||||
"applicationUrl": "https://localhost:7202;http://localhost:5009"
|
"applicationUrl": "https://localhost:7202;http://localhost:5009"
|
||||||
|
},
|
||||||
|
"httpsDbMigration": {
|
||||||
|
"commandName": "Project",
|
||||||
|
"launchBrowser": true,
|
||||||
|
"launchUrl": "swagger",
|
||||||
|
"environmentVariables": {
|
||||||
|
"ASPNETCORE_ENVIRONMENT": "Development",
|
||||||
|
"MIGRATION_TEST_MODE": "true"
|
||||||
|
},
|
||||||
|
"dotnetRunMessages": true,
|
||||||
|
"applicationUrl": "https://localhost:7202;http://localhost:5009"
|
||||||
}
|
}
|
||||||
},
|
},
|
||||||
"iisSettings": {
|
"iisSettings": {
|
||||||
|
|||||||
@@ -1,186 +1,190 @@
|
|||||||
using EnvelopeGenerator.Application.Contracts.Services;
|
using EnvelopeGenerator.Application.Contracts.Services;
|
||||||
using EnvelopeGenerator.CommonServices;
|
using EnvelopeGenerator.CommonServices;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using System.Text;
|
using System.Text;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web.Services
|
namespace EnvelopeGenerator.Web.Services;
|
||||||
|
|
||||||
|
public class EnvelopeOldService
|
||||||
{
|
{
|
||||||
public class EnvelopeOldService
|
private readonly ReceiverModel receiverModel;
|
||||||
|
private readonly EnvelopeModel envelopeModel;
|
||||||
|
private readonly HistoryModel historyModel;
|
||||||
|
|
||||||
|
private readonly DocumentStatusModel documentStatusModel;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
private readonly IConfigService _configService;
|
||||||
|
private readonly ILogger<EnvelopeOldService> _logger;
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public EnvelopeOldService(DatabaseService database, IConfigService configService, ILogger<EnvelopeOldService> logger)
|
||||||
{
|
{
|
||||||
private readonly ReceiverModel receiverModel;
|
_logger = logger;
|
||||||
private readonly EnvelopeModel envelopeModel;
|
|
||||||
private readonly HistoryModel historyModel;
|
|
||||||
|
|
||||||
private readonly DocumentStatusModel documentStatusModel;
|
|
||||||
|
|
||||||
private readonly IConfigService _configService;
|
if (database.Models is null)
|
||||||
private readonly ILogger<EnvelopeOldService> _logger;
|
throw new ArgumentNullException("Models not loaded.");
|
||||||
|
|
||||||
public EnvelopeOldService(DatabaseService database, IConfigService configService, ILogger<EnvelopeOldService> logger)
|
receiverModel = database.Models.receiverModel;
|
||||||
|
envelopeModel = database.Models.envelopeModel;
|
||||||
|
historyModel = database.Models.historyModel;
|
||||||
|
documentStatusModel = database.Models.documentStatusModel;
|
||||||
|
|
||||||
|
_configService = configService;
|
||||||
|
}
|
||||||
|
|
||||||
|
public void EnsureValidEnvelopeKey(string envelopeKey)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Parsing EnvelopeKey..");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(envelopeKey))
|
||||||
|
throw new ArgumentNullException("EnvelopeKey");
|
||||||
|
|
||||||
|
Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(envelopeKey);
|
||||||
|
_logger.LogInformation("EnvelopeUUID: [{0}]", result.Item1);
|
||||||
|
_logger.LogInformation("ReceiverSignature: [{0}]", result.Item2);
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(result.Item1))
|
||||||
|
throw new ArgumentNullException("EnvelopeUUID");
|
||||||
|
|
||||||
|
if (string.IsNullOrEmpty(result.Item2))
|
||||||
|
throw new ArgumentNullException("ReceiverSignature");
|
||||||
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public async Task<EnvelopeReceiver> LoadEnvelope(string pEnvelopeKey)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Loading Envelope by Key [{0}]", pEnvelopeKey);
|
||||||
|
|
||||||
|
Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey);
|
||||||
|
var envelopeUuid = result.Item1;
|
||||||
|
var receiverSignature = result.Item2;
|
||||||
|
var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature);
|
||||||
|
|
||||||
|
_logger.LogInformation("Resolved receiver signature to receiverId [{0}]", receiverId);
|
||||||
|
|
||||||
|
_logger.LogInformation("Loading envelope..");
|
||||||
|
Envelope? envelope = envelopeModel.GetByUuid(envelopeUuid);
|
||||||
|
|
||||||
|
if (envelope == null)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
_logger.LogWarning("Envelope not found");
|
||||||
|
throw new NullReferenceException("Envelope not found");
|
||||||
if (database.Models is null)
|
|
||||||
throw new ArgumentNullException("Models not loaded.");
|
|
||||||
|
|
||||||
receiverModel = database.Models.receiverModel;
|
|
||||||
envelopeModel = database.Models.envelopeModel;
|
|
||||||
historyModel = database.Models.historyModel;
|
|
||||||
documentStatusModel = database.Models.documentStatusModel;
|
|
||||||
|
|
||||||
_configService = configService;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public void EnsureValidEnvelopeKey(string envelopeKey)
|
_logger.LogInformation("Envelope loaded");
|
||||||
|
|
||||||
|
if (envelope.Receivers == null)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Parsing EnvelopeKey..");
|
_logger.LogWarning("Receivers for envelope not loaded");
|
||||||
|
throw new NullReferenceException("Receivers for envelope not loaded");
|
||||||
if (string.IsNullOrEmpty(envelopeKey))
|
|
||||||
throw new ArgumentNullException("EnvelopeKey");
|
|
||||||
|
|
||||||
Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(envelopeKey);
|
|
||||||
_logger.LogInformation("EnvelopeUUID: [{0}]", result.Item1);
|
|
||||||
_logger.LogInformation("ReceiverSignature: [{0}]", result.Item2);
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(result.Item1))
|
|
||||||
throw new ArgumentNullException("EnvelopeUUID");
|
|
||||||
|
|
||||||
if (string.IsNullOrEmpty(result.Item2))
|
|
||||||
throw new ArgumentNullException("ReceiverSignature");
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<EnvelopeReceiver> LoadEnvelope(string pEnvelopeKey)
|
_logger.LogInformation("Envelope receivers found: [{0}]", envelope.Receivers.Count);
|
||||||
|
|
||||||
|
Receiver? receiver = envelope.Receivers.Where(r => r.Id == receiverId).SingleOrDefault();
|
||||||
|
|
||||||
|
if (receiver == null)
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Loading Envelope by Key [{0}]", pEnvelopeKey);
|
_logger.LogWarning("Receiver [{0}] not found", receiverId);
|
||||||
|
throw new NullReferenceException("Receiver not found");
|
||||||
Tuple<string, string> result = Helpers.DecodeEnvelopeReceiverId(pEnvelopeKey);
|
|
||||||
var envelopeUuid = result.Item1;
|
|
||||||
var receiverSignature = result.Item2;
|
|
||||||
var receiverId = receiverModel.GetReceiverIdBySignature(receiverSignature);
|
|
||||||
|
|
||||||
_logger.LogInformation("Resolved receiver signature to receiverId [{0}]", receiverId);
|
|
||||||
|
|
||||||
_logger.LogInformation("Loading envelope..");
|
|
||||||
Envelope? envelope = envelopeModel.GetByUuid(envelopeUuid);
|
|
||||||
|
|
||||||
if (envelope == null)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Envelope not found");
|
|
||||||
throw new NullReferenceException("Envelope not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInformation("Envelope loaded");
|
|
||||||
|
|
||||||
if (envelope.Receivers == null)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Receivers for envelope not loaded");
|
|
||||||
throw new NullReferenceException("Receivers for envelope not loaded");
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInformation("Envelope receivers found: [{0}]", envelope.Receivers.Count);
|
|
||||||
|
|
||||||
Receiver? receiver = envelope.Receivers.Where(r => r.Id == receiverId).SingleOrDefault();
|
|
||||||
|
|
||||||
if (receiver == null)
|
|
||||||
{
|
|
||||||
_logger.LogWarning("Receiver [{0}] not found", receiverId);
|
|
||||||
throw new NullReferenceException("Receiver not found");
|
|
||||||
}
|
|
||||||
|
|
||||||
_logger.LogInformation("Loading documents for receiver [{0}]", receiver.EmailAddress);
|
|
||||||
|
|
||||||
// filter elements by receiver
|
|
||||||
envelope.Documents = envelope.Documents.Select((document) =>
|
|
||||||
{
|
|
||||||
document.Elements = document.Elements.Where((e) => e.ReceiverId == receiverId).ToList();
|
|
||||||
return document;
|
|
||||||
}).ToList();
|
|
||||||
|
|
||||||
//if documenet_path_dmz is existing in config, replace the path with it
|
|
||||||
var config = await _configService.ReadDefaultAsync();
|
|
||||||
|
|
||||||
return new()
|
|
||||||
{
|
|
||||||
Receiver = receiver,
|
|
||||||
Envelope = envelope
|
|
||||||
};
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public List<Envelope> LoadEnvelopes()
|
_logger.LogInformation("Loading documents for receiver [{0}]", receiver.EmailAddress);
|
||||||
|
|
||||||
|
// filter elements by receiver
|
||||||
|
envelope.Documents = envelope.Documents.Select((document) =>
|
||||||
{
|
{
|
||||||
var receivers = receiverModel.ListReceivers();
|
document.Elements = document.Elements.Where((e) => e.ReceiverId == receiverId).ToList();
|
||||||
List<Envelope> envelopes = new();
|
|
||||||
|
|
||||||
foreach (var receiver in receivers)
|
|
||||||
{
|
|
||||||
var envs = (List<Envelope>)envelopeModel.List(receiver.Id);
|
|
||||||
envelopes.AddRange(envs);
|
|
||||||
}
|
|
||||||
|
|
||||||
return envelopes;
|
|
||||||
}
|
|
||||||
|
|
||||||
public List<Envelope> LoadEnvelopes(int pReceiverId)
|
|
||||||
{
|
|
||||||
return (List<Envelope>)envelopeModel.List(pReceiverId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public bool ReceiverAlreadySigned(Envelope envelope, int receiverId)
|
|
||||||
{
|
|
||||||
return historyModel.HasReceiverSigned(envelope.Id, receiverId);
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<string?> EnsureValidAnnotationData(HttpRequest request)
|
|
||||||
{
|
|
||||||
try
|
|
||||||
{
|
|
||||||
_logger.LogInformation("Parsing annotation data from request..");
|
|
||||||
|
|
||||||
using MemoryStream ms = new();
|
|
||||||
await request.BodyReader.CopyToAsync(ms);
|
|
||||||
var bytes = ms.ToArray();
|
|
||||||
|
|
||||||
_logger.LogInformation("Annotation data parsed, size: [{0}]", bytes.Length);
|
|
||||||
|
|
||||||
return Encoding.UTF8.GetString(bytes);
|
|
||||||
}
|
|
||||||
catch (Exception e)
|
|
||||||
{
|
|
||||||
_logger.LogError(e, "Inner Service Error");
|
|
||||||
throw new ArgumentNullException("AnnotationData");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
public async Task<EnvelopeDocument> GetDocument(int documentId, string envelopeKey)
|
|
||||||
{
|
|
||||||
EnvelopeReceiver response = await LoadEnvelope(envelopeKey);
|
|
||||||
|
|
||||||
_logger.LogInformation("Loading document for Id [{0}]", documentId);
|
|
||||||
|
|
||||||
var document = response.Envelope.Documents.
|
|
||||||
Where(d => d.Id == documentId).
|
|
||||||
FirstOrDefault();
|
|
||||||
|
|
||||||
if (document == null)
|
|
||||||
throw new ArgumentException("DocumentId");
|
|
||||||
|
|
||||||
_logger.LogInformation("Document [{0}] loaded!", documentId);
|
|
||||||
|
|
||||||
return document;
|
return document;
|
||||||
|
}).ToList();
|
||||||
|
|
||||||
|
//if documenet_path_dmz is existing in config, replace the path with it
|
||||||
|
var config = await _configService.ReadDefaultAsync();
|
||||||
|
|
||||||
|
return new()
|
||||||
|
{
|
||||||
|
Receiver = receiver,
|
||||||
|
Envelope = envelope
|
||||||
|
};
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Envelope> LoadEnvelopes()
|
||||||
|
{
|
||||||
|
var receivers = receiverModel.ListReceivers();
|
||||||
|
List<Envelope> envelopes = new();
|
||||||
|
|
||||||
|
foreach (var receiver in receivers)
|
||||||
|
{
|
||||||
|
var envs = (List<Envelope>)envelopeModel.List(receiver.Id);
|
||||||
|
envelopes.AddRange(envs);
|
||||||
}
|
}
|
||||||
|
|
||||||
public bool InsertDocumentStatus(Common.DocumentStatus documentStatus)
|
return envelopes;
|
||||||
|
}
|
||||||
|
|
||||||
|
public List<Envelope> LoadEnvelopes(int pReceiverId)
|
||||||
|
{
|
||||||
|
return (List<Envelope>)envelopeModel.List(pReceiverId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool ReceiverAlreadySigned(Envelope envelope, int receiverId)
|
||||||
|
{
|
||||||
|
return historyModel.HasReceiverSigned(envelope.Id, receiverId);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<string?> EnsureValidAnnotationData(HttpRequest request)
|
||||||
|
{
|
||||||
|
try
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Saving annotation data..");
|
_logger.LogInformation("Parsing annotation data from request..");
|
||||||
return documentStatusModel.InsertOrUpdate(documentStatus);
|
|
||||||
|
using MemoryStream ms = new();
|
||||||
|
await request.BodyReader.CopyToAsync(ms);
|
||||||
|
var bytes = ms.ToArray();
|
||||||
|
|
||||||
|
_logger.LogInformation("Annotation data parsed, size: [{0}]", bytes.Length);
|
||||||
|
|
||||||
|
return Encoding.UTF8.GetString(bytes);
|
||||||
}
|
}
|
||||||
|
catch (Exception e)
|
||||||
public async Task<byte[]> GetDocumentContents(EnvelopeDocument document)
|
|
||||||
{
|
{
|
||||||
_logger.LogInformation("Loading file [{0}]", document.Filepath);
|
_logger.LogError(e, "Inner Service Error");
|
||||||
var bytes = await File.ReadAllBytesAsync(document.Filepath);
|
throw new ArgumentNullException("AnnotationData");
|
||||||
_logger.LogInformation("File loaded, size: [{0}]", bytes.Length);
|
|
||||||
|
|
||||||
return bytes;
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
[Obsolete("Use MediatR")]
|
||||||
|
public async Task<EnvelopeDocument> GetDocument(int documentId, string envelopeKey)
|
||||||
|
{
|
||||||
|
EnvelopeReceiver response = await LoadEnvelope(envelopeKey);
|
||||||
|
|
||||||
|
_logger.LogInformation("Loading document for Id [{0}]", documentId);
|
||||||
|
|
||||||
|
var document = response.Envelope.Documents.
|
||||||
|
Where(d => d.Id == documentId).
|
||||||
|
FirstOrDefault();
|
||||||
|
|
||||||
|
if (document == null)
|
||||||
|
throw new ArgumentException("DocumentId");
|
||||||
|
|
||||||
|
_logger.LogInformation("Document [{0}] loaded!", documentId);
|
||||||
|
|
||||||
|
return document;
|
||||||
|
}
|
||||||
|
|
||||||
|
public bool InsertDocumentStatus(DocumentStatus documentStatus)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Saving annotation data..");
|
||||||
|
return documentStatusModel.InsertOrUpdate(documentStatus);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<byte[]> GetDocumentContents(EnvelopeDocument document)
|
||||||
|
{
|
||||||
|
_logger.LogInformation("Loading file [{0}]", document.Filepath);
|
||||||
|
var bytes = await File.ReadAllBytesAsync(document.Filepath);
|
||||||
|
_logger.LogInformation("File loaded, size: [{0}]", bytes.Length);
|
||||||
|
|
||||||
|
return bytes;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -4,7 +4,7 @@
|
|||||||
@{
|
@{
|
||||||
var nonce = _accessor.HttpContext?.Items["csp-nonce"] as string;
|
var nonce = _accessor.HttpContext?.Items["csp-nonce"] as string;
|
||||||
}
|
}
|
||||||
@using DigitalData.Core.DTO;
|
@using DigitalData.Core.Abstraction.Application.DTO;
|
||||||
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
||||||
@using Newtonsoft.Json
|
@using Newtonsoft.Json
|
||||||
@using Newtonsoft.Json.Serialization
|
@using Newtonsoft.Json.Serialization
|
||||||
|
|||||||
@@ -2,7 +2,7 @@
|
|||||||
var nonce = _accessor.HttpContext?.Items["csp-nonce"] as string;
|
var nonce = _accessor.HttpContext?.Items["csp-nonce"] as string;
|
||||||
var cImg = _cImgOpt.Value;
|
var cImg = _cImgOpt.Value;
|
||||||
}
|
}
|
||||||
@using DigitalData.Core.DTO;
|
@using DigitalData.Core.Abstraction.Application;
|
||||||
@using EnvelopeGenerator.Application.DTOs;
|
@using EnvelopeGenerator.Application.DTOs;
|
||||||
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
||||||
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly
|
@using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly
|
||||||
|
|||||||
@@ -1,5 +1,6 @@
|
|||||||
@using EnvelopeGenerator.CommonServices;
|
@using EnvelopeGenerator.CommonServices;
|
||||||
@using static EnvelopeGenerator.CommonServices.Constants;
|
@using EnvelopeGenerator.Domain.Entities;
|
||||||
|
@using static EnvelopeGenerator.Domain.Constants;
|
||||||
@{
|
@{
|
||||||
ViewData["Title"] = "Debug";
|
ViewData["Title"] = "Debug";
|
||||||
}
|
}
|
||||||
@@ -11,9 +12,9 @@
|
|||||||
return Helpers.EncodeEnvelopeReceiverId(envelope.Uuid, receiver.Signature);
|
return Helpers.EncodeEnvelopeReceiverId(envelope.Uuid, receiver.Signature);
|
||||||
}
|
}
|
||||||
|
|
||||||
IEnumerable<IGrouping<EnvelopeStatus, Envelope>> groupEnvelopes(List<Envelope> envelopes)
|
IEnumerable<IGrouping<EnvelopeStatus, Envelope>> groupEnvelopes(List<Envelope> envelopes)
|
||||||
{
|
{
|
||||||
return envelopes.GroupBy(item => item.Status).OrderBy(item => (int)item.Key);
|
return envelopes.GroupBy(item => (EnvelopeStatus) item.Status).OrderBy(item => item.Key);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
{
|
{
|
||||||
"DiPMode": false, //Please be careful when enabling Development in Production (DiP) mode. It allows Swagger and test controllers to be enabled in a production environment.
|
"DiPMode": false, //Please be careful when enabling Development in Production (DiP) mode. It allows Swagger and test controllers to be enabled in a production environment.
|
||||||
"EnableSwagger": true,
|
"EnableSwagger": true,
|
||||||
|
"UseDbMigration": false,
|
||||||
"EnableTestControllers": true,
|
"EnableTestControllers": true,
|
||||||
"DetailedErrors": true,
|
"DetailedErrors": true,
|
||||||
"Logging": {
|
"Logging": {
|
||||||
@@ -12,7 +13,8 @@
|
|||||||
}
|
}
|
||||||
},
|
},
|
||||||
"ConnectionStrings": {
|
"ConnectionStrings": {
|
||||||
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
"Default": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;",
|
||||||
|
"DbMigrationTest": "Server=SDD-VMP04-SQL17\\DD_DEVELOP01;Database=DD_ECM_DATA_MIGR_TEST;User Id=sa;Password=dd;Encrypt=false;TrustServerCertificate=True;"
|
||||||
},
|
},
|
||||||
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==",
|
"PSPDFKitLicenseKey": "SXCtGGY9XA-31OGUXQK-r7c6AkdLGPm2ljuyDr1qu0kkhLvydg-Do-fxpNUF4Rq3fS_xAnZRNFRHbXpE6sQ2BMcCSVTcXVJO6tPviexjpiT-HnrDEySlUERJnnvh-tmeOWprxS6BySPnSILkmaVQtUfOIUS-cUbvvEYHTvQBKbSF8di4XHQFyfv49ihr51axm3NVV3AXwh2EiKL5C5XdqBZ4sQ4O7vXBjM2zvxdPxlxdcNYmiU83uAzw7B83O_jubPzya4CdUHh_YH7Nlp2gP56MeG1Sw2JhMtfG3Rj14Sg4ctaeL9p6AEWca5dDjJ2li5tFIV2fQSsw6A_cowLu0gtMm5i8IfJXeIcQbMC2-0wGv1oe9hZYJvFMdzhTM_FiejM0agemxt3lJyzuyP8zbBSOgp7Si6A85krLWPZptyZBTG7pp7IHboUHfPMxCXqi-zMsqewOJtQBE2mjntU-lPryKnssOpMPfswwQX7QSkJYV5EMqNmEhQX6mEkp2wcqFzMC7bJQew1aO4pOpvChUaMvb1vgRek0HxLag0nwQYX2YrYGh7F_xXJs-8HNwJe8H0-eW4x4faayCgM5rB5772CCCsD9ThZcvXFrjNHHLGJ8WuBUFm6LArvSfFQdii_7j-_sqHMpeKZt26NFgivj1A==",
|
||||||
"Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.
|
"Content-Security-Policy": [ // The first format parameter {0} will be replaced by the nonce value.
|
||||||
|
|||||||
@@ -53,8 +53,8 @@ Global
|
|||||||
{6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Release|Any CPU.Build.0 = Debug|Any CPU
|
{6D56C01F-D6CB-4D8A-BD3D-4FD34326998C}.Release|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Release|Any CPU.ActiveCfg = Debug|Any CPU
|
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Release|Any CPU.ActiveCfg = Release|Any CPU
|
||||||
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Release|Any CPU.Build.0 = Debug|Any CPU
|
{6EA0C51F-C2B1-4462-8198-3DE0B32B74F8}.Release|Any CPU.Build.0 = Release|Any CPU
|
||||||
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Debug|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Debug|Any CPU.Build.0 = Debug|Any CPU
|
||||||
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Release|Any CPU.ActiveCfg = Debug|Any CPU
|
{5E0E17C0-FF5A-4246-BF87-1ADD85376A27}.Release|Any CPU.ActiveCfg = Debug|Any CPU
|
||||||
|
|||||||
Reference in New Issue
Block a user