Compare commits
194 Commits
customer/C
...
feat/locat
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
46f1633f79 | ||
|
|
1af07f0df8 | ||
|
|
55c9dfb9c2 | ||
|
|
1a230306a3 | ||
|
|
28022bc669 | ||
|
|
ad5843b7c9 | ||
|
|
173b691e56 | ||
|
|
8a0fe70a88 | ||
|
|
c4114a3800 | ||
|
|
977486bb7d | ||
|
|
6ccc0d2e0a | ||
|
|
084a9b7db4 | ||
|
|
826844cf46 | ||
|
|
39cff26f2d | ||
|
|
1619801526 | ||
|
|
5a1263ee3a | ||
|
|
bc91baa4fa | ||
|
|
a4882a7bfa | ||
|
|
c254b5b8df | ||
|
|
66718a3fd8 | ||
|
|
99fc2aecd9 | ||
|
|
a41d03aed5 | ||
|
|
6d14b79c43 | ||
|
|
faeac8f290 | ||
|
|
d172faacf3 | ||
|
|
35d6beb3cb | ||
|
|
7ff787ec28 | ||
|
|
f6fc850a20 | ||
|
|
04b8d0ef5d | ||
|
|
891f6368f1 | ||
|
|
e6011b6201 | ||
|
|
8b86114998 | ||
|
|
c20b115faf | ||
|
|
2c8ccd3e7c | ||
|
|
b1f771c320 | ||
|
|
425645a610 | ||
|
|
24e6ffc5ef | ||
|
|
1dd9ce6bbc | ||
|
|
e528fa6409 | ||
|
|
6440dd09d1 | ||
|
|
869493bd97 | ||
|
|
1cb9042736 | ||
|
|
c9410a1e2e | ||
|
|
683ff03a0f | ||
|
|
c9ba7eeaf9 | ||
|
|
c4f0ce7d4b | ||
|
|
dc83486032 | ||
|
|
2a64091c87 | ||
|
|
f65f749208 | ||
|
|
0b6ed00062 | ||
|
|
e87c976e19 | ||
|
|
f31ece3a59 | ||
|
|
cfd08602ab | ||
|
|
4b7152b272 | ||
|
|
5117a66c81 | ||
|
|
83794d4bbc | ||
|
|
76f74778b4 | ||
|
|
ded3425e31 | ||
|
|
738b379fe5 | ||
|
|
cf8b28441f | ||
|
|
0eb5897185 | ||
|
|
25cd1601a6 | ||
|
|
42e4d110ad | ||
|
|
2538f34892 | ||
|
|
3ce11f4cc7 | ||
|
|
f2cd34a79e | ||
|
|
5f923ad485 | ||
|
|
8f70f085d3 | ||
|
|
d6c09ed31a | ||
|
|
7d3ee1331d | ||
|
|
cd5b90a1e2 | ||
|
|
ac861f5fa0 | ||
|
|
c1d8f817bb | ||
|
|
da28a7332b | ||
|
|
bfd4e6a8ed | ||
|
|
b4e0e4b6b2 | ||
|
|
e37caf5c8f | ||
|
|
e95cf24af7 | ||
|
|
524a72caa0 | ||
|
|
1919c562cc | ||
|
|
62b54d6e75 | ||
|
|
efa9160c04 | ||
|
|
bc6955055a | ||
|
|
dc997d5ff2 | ||
|
|
a32f495038 | ||
|
|
210466883c | ||
|
|
728385b70a | ||
|
|
792aa0b922 | ||
|
|
6847b74095 | ||
|
|
54e86b421c | ||
|
|
370666cb0e | ||
|
|
e17f7df930 | ||
|
|
0e91df7acc | ||
|
|
ad26230da5 | ||
|
|
a103f34230 | ||
|
|
806bd3b248 | ||
|
|
c69c39fa44 | ||
|
|
b6badb44af | ||
|
|
b2195ce13f | ||
|
|
f3cb9b8510 | ||
|
|
8edfecb9dc | ||
|
|
c123d103bb | ||
|
|
b92d9da387 | ||
|
|
8841698aab | ||
|
|
6f140f16cd | ||
|
|
8bfd31997b | ||
|
|
4a1459d708 | ||
|
|
361bdeb2b2 | ||
|
|
9ce5af7cd0 | ||
|
|
84fa9e6e7c | ||
|
|
36916ed5c8 | ||
|
|
fb366d3e0b | ||
|
|
6e7670f667 | ||
|
|
e82be8b6a5 | ||
|
|
07320af4ee | ||
|
|
73eb270237 | ||
|
|
222684cfc8 | ||
|
|
3974d2123e | ||
|
|
b837a63b34 | ||
|
|
461316713a | ||
|
|
185af3210b | ||
|
|
e4620b5469 | ||
|
|
5c4acd17a0 | ||
|
|
fc171e5b89 | ||
|
|
662faf2512 | ||
|
|
2fb8af9a4f | ||
|
|
017d03713b | ||
|
|
5f5180d937 | ||
|
|
6b3e6cd6f5 | ||
|
|
f95f3c7b1b | ||
|
|
316b62083c | ||
|
|
530b63f299 | ||
|
|
2f228de163 | ||
|
|
e5e64b25fe | ||
|
|
2d5dde177c | ||
|
|
ce0ad4ba61 | ||
|
|
ebd7c5d6a4 | ||
|
|
341da273c9 | ||
|
|
73d2a43a95 | ||
|
|
eee18889d6 | ||
|
|
590d7fb717 | ||
|
|
dd28ef7ab6 | ||
|
|
36fb033adc | ||
|
|
4275f25f4a | ||
|
|
30b5633498 | ||
|
|
00545fdc50 | ||
|
|
d80e511b08 | ||
|
|
7313355a83 | ||
|
|
66466dc865 | ||
|
|
8cd8df4b02 | ||
|
|
d6bcb8c43d | ||
|
|
2aa2064a67 | ||
|
|
f403d12073 | ||
|
|
b66c2f67da | ||
|
|
d084a4cd81 | ||
|
|
5d2bf56493 | ||
|
|
cd88f5c833 | ||
|
|
ab41e25071 | ||
|
|
eb775da7d4 | ||
|
|
7bc2695da4 | ||
|
|
75fff426bc | ||
|
|
4172df4d78 | ||
|
|
01856b61ef | ||
|
|
2e32559132 | ||
|
|
9adb49df78 | ||
|
|
18e21b0a8e | ||
|
|
e1d7d0e141 | ||
|
|
cfa40e640b | ||
|
|
cb0a45bc17 | ||
|
|
c7b6e5bf24 | ||
|
|
a9ca1b71eb | ||
|
|
97f07bc72d | ||
|
|
8753875d93 | ||
|
|
3692aa80a4 | ||
|
|
b8b09ded5d | ||
|
|
5b8d8b9e55 | ||
|
|
e3fbf4fc77 | ||
|
|
8d680992b7 | ||
|
|
01247f73f4 | ||
|
|
6a7a3dcb90 | ||
|
|
2fbfbb4eb6 | ||
|
|
f88b5d2733 | ||
|
|
363358aaa1 | ||
|
|
7444eeba2a | ||
|
|
e9d686a4c1 | ||
|
|
939ba1bb47 | ||
|
|
d5de868eb9 | ||
|
|
6e3bb6c3a0 | ||
|
|
d347ec420c | ||
|
|
a011b677ea | ||
|
|
8831436809 | ||
|
|
1ededc1f64 | ||
|
|
183c94fd0a | ||
|
|
a0a5568d93 |
@@ -0,0 +1,13 @@
|
|||||||
|
namespace EnvelopeGenerator.Application.Configurations
|
||||||
|
{
|
||||||
|
public class DispatcherConfig
|
||||||
|
{
|
||||||
|
public int SendingProfile { get; init; } = 1;
|
||||||
|
|
||||||
|
public string AddedWho { get; init; } = "DDEnvelopGenerator";
|
||||||
|
|
||||||
|
public int ReminderTypeId { get; init; } = 202377;
|
||||||
|
|
||||||
|
public string EmailAttmt1 { get; init; } = string.Empty;
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,7 @@
|
|||||||
|
namespace EnvelopeGenerator.Application.Configurations
|
||||||
|
{
|
||||||
|
public class MailConfig
|
||||||
|
{
|
||||||
|
public required Dictionary<string, string> Placeholders { get; init; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -5,7 +5,7 @@ using EnvelopeGenerator.Domain.Entities;
|
|||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
{
|
{
|
||||||
public interface IConfigService : IBasicCRUDService<ConfigDto, Config, int>
|
public interface IConfigService : IReadService<ConfigDto, Config, int>
|
||||||
{
|
{
|
||||||
Task<DataResult<ConfigDto>> ReadFirstAsync();
|
Task<DataResult<ConfigDto>> ReadFirstAsync();
|
||||||
|
|
||||||
|
|||||||
@@ -3,7 +3,6 @@ using DigitalData.Core.DTO;
|
|||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Contracts;
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
||||||
using EnvelopeGenerator.Common;
|
using EnvelopeGenerator.Common;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
@@ -8,6 +9,9 @@ namespace EnvelopeGenerator.Application.Contracts
|
|||||||
public interface IEnvelopeMailService : IEmailOutService
|
public interface IEnvelopeMailService : IEmailOutService
|
||||||
{
|
{
|
||||||
Task<DataResult<int>> SendAsync(EnvelopeReceiverDto envelopeReceiverDto, Constants.EmailTemplateType tempType);
|
Task<DataResult<int>> SendAsync(EnvelopeReceiverDto envelopeReceiverDto, Constants.EmailTemplateType tempType);
|
||||||
|
|
||||||
|
Task<DataResult<int>> SendAsync(EnvelopeReceiverReadOnlyDto dto);
|
||||||
|
|
||||||
Task<DataResult<int>> SendAccessCodeAsync(EnvelopeReceiverDto envelopeReceiverDto);
|
Task<DataResult<int>> SendAccessCodeAsync(EnvelopeReceiverDto envelopeReceiverDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,10 @@
|
|||||||
|
using DigitalData.Core.Abstractions.Application;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
|
{
|
||||||
|
public interface IEnvelopeReceiverReadOnlyService : ICRUDService<EnvelopeReceiverReadOnlyCreateDto, EnvelopeReceiverReadOnlyDto, EnvelopeReceiverReadOnlyUpdateDto, EnvelopeReceiverReadOnly, long>
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,15 +1,18 @@
|
|||||||
using DigitalData.Core.Abstractions.Application;
|
using DigitalData.Core.Abstractions.Application;
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
{
|
{
|
||||||
public interface IEnvelopeReceiverService : IBasicCRUDService<EnvelopeReceiverDto, EnvelopeReceiver, object>
|
public interface IEnvelopeReceiverService : IBasicCRUDService<EnvelopeReceiverDto, EnvelopeReceiver, (int Envelope, int Receiver)>
|
||||||
{
|
{
|
||||||
|
|
||||||
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUuidAsync(string uuid, bool withEnvelope = true, bool withReceiver = false);
|
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUuidAsync(string uuid, bool withEnvelope = true, bool withReceiver = false);
|
||||||
|
|
||||||
|
Task<DataResult<IEnumerable<EnvelopeReceiverSecretDto>>> ReadSecretByUuidAsync(string uuid, bool withEnvelope = false, bool withReceiver = true);
|
||||||
|
|
||||||
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadBySignatureAsync(string signature, bool withEnvelope = false, bool withReceiver = true);
|
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadBySignatureAsync(string signature, bool withEnvelope = false, bool withReceiver = true);
|
||||||
|
|
||||||
Task<DataResult<EnvelopeReceiverDto>> ReadByUuidSignatureAsync(string uuid, string signature, bool withEnvelope = true, bool withReceiver = true);
|
Task<DataResult<EnvelopeReceiverDto>> ReadByUuidSignatureAsync(string uuid, string signature, bool withEnvelope = true, bool withReceiver = true);
|
||||||
@@ -25,5 +28,7 @@ namespace EnvelopeGenerator.Application.Contracts
|
|||||||
Task<DataResult<bool>> IsExisting(string envelopeReceiverId);
|
Task<DataResult<bool>> IsExisting(string envelopeReceiverId);
|
||||||
|
|
||||||
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses);
|
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses);
|
||||||
|
|
||||||
|
Task<DataResult<string?>> ReadLastUsedReceiverNameByMail(string mail);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -2,7 +2,6 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
{
|
{
|
||||||
@@ -11,5 +10,7 @@ namespace EnvelopeGenerator.Application.Contracts
|
|||||||
Task<DataResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool history = false, bool documentReceiverElement = false);
|
Task<DataResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool history = false, bool documentReceiverElement = false);
|
||||||
|
|
||||||
Task<DataResult<EnvelopeDto>> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false);
|
Task<DataResult<EnvelopeDto>> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false);
|
||||||
|
|
||||||
|
Task<DataResult<IEnumerable<EnvelopeDto>>> ReadByUserAsync(int userId, int? min_status = null, int? max_status = null, params int[]ignore_statuses);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,7 +1,6 @@
|
|||||||
using DigitalData.Core.Abstractions.Application;
|
using DigitalData.Core.Abstractions.Application;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Contracts
|
namespace EnvelopeGenerator.Application.Contracts
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,21 +1,18 @@
|
|||||||
using DigitalData.UserManager.Application.MappingProfiles;
|
using DigitalData.UserManager.Application.MappingProfiles;
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.MappingProfiles;
|
using EnvelopeGenerator.Application.MappingProfiles;
|
||||||
|
using EnvelopeGenerator.Application.Configurations;
|
||||||
using EnvelopeGenerator.Application.Services;
|
using EnvelopeGenerator.Application.Services;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using EnvelopeGenerator.Infrastructure.Repositories;
|
using EnvelopeGenerator.Infrastructure.Repositories;
|
||||||
|
using Microsoft.Extensions.Configuration;
|
||||||
using Microsoft.Extensions.DependencyInjection;
|
using Microsoft.Extensions.DependencyInjection;
|
||||||
using System;
|
|
||||||
using System.Collections.Generic;
|
|
||||||
using System.Linq;
|
|
||||||
using System.Text;
|
|
||||||
using System.Threading.Tasks;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application
|
namespace EnvelopeGenerator.Application
|
||||||
{
|
{
|
||||||
public static class DIExtensions
|
public static class DIExtensions
|
||||||
{
|
{
|
||||||
public static IServiceCollection AddEnvelopeGenerator(this IServiceCollection services)
|
public static IServiceCollection AddEnvelopeGenerator(this IServiceCollection services, IConfiguration dispatcherConfigSection, IConfiguration mailConfigSection)
|
||||||
{
|
{
|
||||||
//Inject CRUD Service and repositoriesad
|
//Inject CRUD Service and repositoriesad
|
||||||
services.AddScoped<IConfigRepository, ConfigRepository>();
|
services.AddScoped<IConfigRepository, ConfigRepository>();
|
||||||
@@ -33,6 +30,7 @@ namespace EnvelopeGenerator.Application
|
|||||||
services.AddScoped<IEnvelopeTypeRepository, EnvelopeTypeRepository>();
|
services.AddScoped<IEnvelopeTypeRepository, EnvelopeTypeRepository>();
|
||||||
services.AddScoped<IReceiverRepository, ReceiverRepository>();
|
services.AddScoped<IReceiverRepository, ReceiverRepository>();
|
||||||
services.AddScoped<IUserReceiverRepository, UserReceiverRepository>();
|
services.AddScoped<IUserReceiverRepository, UserReceiverRepository>();
|
||||||
|
services.AddScoped<IEnvelopeReceiverReadOnlyRepository, EnvelopeReceiverReadOnlyRepository>();
|
||||||
services.AddScoped<IConfigService, ConfigService>();
|
services.AddScoped<IConfigService, ConfigService>();
|
||||||
services.AddScoped<IDocumentReceiverElementService, DocumentReceiverElementService>();
|
services.AddScoped<IDocumentReceiverElementService, DocumentReceiverElementService>();
|
||||||
services.AddScoped<IEnvelopeDocumentService, EnvelopeDocumentService>();
|
services.AddScoped<IEnvelopeDocumentService, EnvelopeDocumentService>();
|
||||||
@@ -46,12 +44,20 @@ namespace EnvelopeGenerator.Application
|
|||||||
services.AddScoped<IEnvelopeTypeService, EnvelopeTypeService>();
|
services.AddScoped<IEnvelopeTypeService, EnvelopeTypeService>();
|
||||||
services.AddScoped<IReceiverService, ReceiverService>();
|
services.AddScoped<IReceiverService, ReceiverService>();
|
||||||
services.AddScoped<IUserReceiverService, UserReceiverService>();
|
services.AddScoped<IUserReceiverService, UserReceiverService>();
|
||||||
|
services.AddScoped<IEnvelopeReceiverReadOnlyService, EnvelopeReceiverReadOnlyService>();
|
||||||
|
|
||||||
//Auto mapping profiles
|
//Auto mapping profiles
|
||||||
services.AddAutoMapper(typeof(BasicDtoMappingProfile).Assembly);
|
services.AddAutoMapper(typeof(BasicDtoMappingProfile).Assembly);
|
||||||
services.AddAutoMapper(typeof(UserMappingProfile).Assembly);
|
services.AddAutoMapper(typeof(UserMappingProfile).Assembly);
|
||||||
|
|
||||||
|
services.Configure<DispatcherConfig>(dispatcherConfigSection);
|
||||||
|
services.Configure<MailConfig>(mailConfigSection);
|
||||||
|
|
||||||
return services;
|
return services;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static IServiceCollection AddEnvelopeGenerator(this IServiceCollection services, IConfiguration config) => services.AddEnvelopeGenerator(
|
||||||
|
dispatcherConfigSection: config.GetSection("DispatcherConfig"),
|
||||||
|
mailConfigSection: config.GetSection("MailConfig"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,7 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record ConfigDto(
|
public record ConfigDto(
|
||||||
string DocumentPath,
|
string DocumentPath,
|
||||||
@@ -8,5 +11,10 @@
|
|||||||
string ExportPath,
|
string ExportPath,
|
||||||
string DocumentPathDmz,
|
string DocumentPathDmz,
|
||||||
string ExportPathDmz,
|
string ExportPathDmz,
|
||||||
string DocumentPathMoveAftsend);
|
string DocumentPathMoveAftsend) : IUnique<int>
|
||||||
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
[Obsolete("Configuration does not have an ID; it represents a single table in the database.")]
|
||||||
|
public int Id => throw new InvalidOperationException("This configuration does not support an ID as it represents a single row in the database.");
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record DocumentReceiverElementDto(
|
public record DocumentReceiverElementDto(
|
||||||
int Id,
|
int Id,
|
||||||
@@ -18,5 +20,5 @@
|
|||||||
DateTime? ChangedWhen,
|
DateTime? ChangedWhen,
|
||||||
double Top,
|
double Top,
|
||||||
double Left
|
double Left
|
||||||
);
|
): IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record DocumentStatusDto(
|
public record DocumentStatusDto(
|
||||||
int Id,
|
int Id,
|
||||||
@@ -8,5 +10,5 @@
|
|||||||
DateTime? StatusChangedWhen,
|
DateTime? StatusChangedWhen,
|
||||||
string Value,
|
string Value,
|
||||||
DateTime AddedWhen,
|
DateTime AddedWhen,
|
||||||
DateTime? ChangedWhen);
|
DateTime? ChangedWhen) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,8 +1,10 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record EmailTemplateDto(
|
public record EmailTemplateDto(
|
||||||
int Id,
|
int Id,
|
||||||
string Name,
|
string Name,
|
||||||
string Body,
|
string Body,
|
||||||
string Subject);
|
string Subject) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record EnvelopeCertificateDto(
|
public record EnvelopeCertificateDto(
|
||||||
int Id,
|
int Id,
|
||||||
@@ -8,5 +10,5 @@
|
|||||||
int CreatorId,
|
int CreatorId,
|
||||||
string CreatorName,
|
string CreatorName,
|
||||||
string CreatorEmail,
|
string CreatorEmail,
|
||||||
int EnvelopeStatus);
|
int EnvelopeStatus) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,13 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record EnvelopeDocumentDto
|
public record EnvelopeDocumentDto
|
||||||
(
|
(
|
||||||
int Id,
|
int Id,
|
||||||
int EnvelopeId,
|
int EnvelopeId,
|
||||||
DateTime AddedWhen,
|
DateTime AddedWhen,
|
||||||
IEnumerable<DocumentReceiverElementDto>? Elements
|
byte[]? ByteData = null,
|
||||||
);
|
IEnumerable<DocumentReceiverElementDto>? Elements = null
|
||||||
|
) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
||||||
using DigitalData.UserManager.Application.DTOs.User;
|
using DigitalData.UserManager.Application.DTOs.User;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.DTOs
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record EnvelopeDto()
|
public record EnvelopeDto() : IUnique<int>
|
||||||
{
|
{
|
||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using DigitalData.Core.DTO;
|
||||||
using DigitalData.UserManager.Application.DTOs.User;
|
using DigitalData.UserManager.Application.DTOs.User;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
@@ -10,10 +11,11 @@ namespace EnvelopeGenerator.Application.DTOs.EnvelopeHistory
|
|||||||
int EnvelopeId,
|
int EnvelopeId,
|
||||||
string UserReference,
|
string UserReference,
|
||||||
int Status,
|
int Status,
|
||||||
|
string? StatusName,
|
||||||
DateTime AddedWhen,
|
DateTime AddedWhen,
|
||||||
DateTime? ActionDate,
|
DateTime? ActionDate,
|
||||||
UserCreateDto? Sender,
|
UserCreateDto? Sender,
|
||||||
ReceiverReadDto? Receiver,
|
ReceiverReadDto? Receiver,
|
||||||
ReferenceType ReferenceType,
|
ReferenceType ReferenceType,
|
||||||
string? Comment = null) : BaseDTO<long>(Id);
|
string? Comment = null) : BaseDTO<long>(Id), IUnique<long>;
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,29 @@
|
|||||||
|
using DigitalData.Core.Abstractions;
|
||||||
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
||||||
|
{
|
||||||
|
public record EnvelopeReceiverBasicDto() : IUnique<(int Envelope, int Receiver)>
|
||||||
|
{
|
||||||
|
public (int Envelope, int Receiver) Id => (Envelope: EnvelopeId, Receiver: ReceiverId);
|
||||||
|
|
||||||
|
public int EnvelopeId { get; init; }
|
||||||
|
|
||||||
|
public int ReceiverId { get; init; }
|
||||||
|
|
||||||
|
public int Sequence { get; init; }
|
||||||
|
|
||||||
|
[TemplatePlaceholder("[NAME_RECEIVER]")]
|
||||||
|
public string? Name { get; init; }
|
||||||
|
|
||||||
|
public string? JobTitle { get; init; }
|
||||||
|
|
||||||
|
public string? CompanyName { get; init; }
|
||||||
|
|
||||||
|
public string? PrivateMessage { get; init; }
|
||||||
|
|
||||||
|
public DateTime AddedWhen { get; init; }
|
||||||
|
|
||||||
|
public DateTime? ChangedWhen { get; init; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,11 @@
|
|||||||
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
||||||
|
{
|
||||||
|
public record EnvelopeReceiverDto() : EnvelopeReceiverBasicDto()
|
||||||
|
{
|
||||||
|
public EnvelopeDto? Envelope { get; set; }
|
||||||
|
|
||||||
|
public ReceiverReadDto? Receiver { get; set; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,4 @@
|
|||||||
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeReceiver
|
||||||
|
{
|
||||||
|
public record EnvelopeReceiverSecretDto(string? AccessCode) : EnvelopeReceiverDto;
|
||||||
|
}
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.DTOs
|
|
||||||
{
|
|
||||||
public record EnvelopeReceiverDto()
|
|
||||||
{
|
|
||||||
public int EnvelopeId { get; set; }
|
|
||||||
|
|
||||||
public int ReceiverId { get; set; }
|
|
||||||
|
|
||||||
public int Sequence { get; set; }
|
|
||||||
|
|
||||||
[TemplatePlaceholder("[NAME_RECEIVER]")]
|
|
||||||
public string? Name { get; set; }
|
|
||||||
|
|
||||||
public string? JobTitle { get; set; }
|
|
||||||
|
|
||||||
public string? CompanyName { get; set; }
|
|
||||||
|
|
||||||
public string? PrivateMessage { get; set; }
|
|
||||||
|
|
||||||
public DateTime AddedWhen { get; set; }
|
|
||||||
|
|
||||||
public DateTime? ChangedWhen { get; set; }
|
|
||||||
|
|
||||||
public EnvelopeDto? Envelope { get; set; }
|
|
||||||
|
|
||||||
public ReceiverReadDto? Receiver { get; set; }
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -0,0 +1,22 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly
|
||||||
|
{
|
||||||
|
public record EnvelopeReceiverReadOnlyCreateDto(
|
||||||
|
DateTime DateValid)
|
||||||
|
{
|
||||||
|
[EmailAddress]
|
||||||
|
[Required]
|
||||||
|
public required string ReceiverMail { get; init; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public long? EnvelopeId { get; set; } = null;
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public string? AddedWho { get; set; }
|
||||||
|
|
||||||
|
[JsonIgnore]
|
||||||
|
public DateTime AddedWhen { get; } = DateTime.Now;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly
|
||||||
|
{
|
||||||
|
public record EnvelopeReceiverReadOnlyDto(
|
||||||
|
long Id,
|
||||||
|
long EnvelopeId,
|
||||||
|
string ReceiverMail,
|
||||||
|
DateTime DateValid,
|
||||||
|
DateTime AddedWhen,
|
||||||
|
string AddedWho,
|
||||||
|
EnvelopeDto? Envelope = null,
|
||||||
|
string? ChangedWho = null,
|
||||||
|
DateTime? ChangedWhen = null,
|
||||||
|
ReceiverReadDto? Receiver = null);
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly
|
||||||
|
{
|
||||||
|
public record EnvelopeReceiverReadOnlyUpdateDto(
|
||||||
|
long Id,
|
||||||
|
DateTime DateValid,
|
||||||
|
string ChangedWho) : IUnique<long>
|
||||||
|
{
|
||||||
|
public DateTime ChangedWhen { get; } = DateTime.Now;
|
||||||
|
};
|
||||||
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record EnvelopeTypeDto(
|
public record EnvelopeTypeDto(
|
||||||
int Id,
|
int Id,
|
||||||
@@ -15,5 +17,5 @@
|
|||||||
bool? SendReminderEmails,
|
bool? SendReminderEmails,
|
||||||
int? FirstReminderDays,
|
int? FirstReminderDays,
|
||||||
int? ReminderIntervalDays,
|
int? ReminderIntervalDays,
|
||||||
int? ContractType);
|
int? ContractType) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
|
using System.Text.Json.Serialization;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.DTOs.Receiver
|
namespace EnvelopeGenerator.Application.DTOs.Receiver
|
||||||
{
|
{
|
||||||
@@ -7,5 +9,11 @@ namespace EnvelopeGenerator.Application.DTOs.Receiver
|
|||||||
string EmailAddress,
|
string EmailAddress,
|
||||||
string Signature,
|
string Signature,
|
||||||
DateTime AddedWhen
|
DateTime AddedWhen
|
||||||
) : BaseDTO<int>(Id);
|
) : BaseDTO<int>(Id)
|
||||||
|
{
|
||||||
|
[JsonIgnore]
|
||||||
|
public IEnumerable<EnvelopeReceiverBasicDto>? EnvelopeReceivers { get; init; }
|
||||||
|
|
||||||
|
public string? LastUsedName => EnvelopeReceivers?.LastOrDefault()?.Name;
|
||||||
|
};
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs.Receiver
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs.Receiver
|
||||||
{
|
{
|
||||||
public record ReceiverUpdateDto();
|
public record ReceiverUpdateDto(int Id) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
namespace EnvelopeGenerator.Application.DTOs
|
using DigitalData.Core.Abstractions;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.DTOs
|
||||||
{
|
{
|
||||||
public record UserReceiverDto(
|
public record UserReceiverDto(
|
||||||
int Id,
|
int Id,
|
||||||
@@ -7,5 +9,5 @@
|
|||||||
string Name,
|
string Name,
|
||||||
string CompanyName,
|
string CompanyName,
|
||||||
string JobTitle,
|
string JobTitle,
|
||||||
DateTime AddedWhen);
|
DateTime AddedWhen) : IUnique<int>;
|
||||||
}
|
}
|
||||||
@@ -1,13 +0,0 @@
|
|||||||
namespace EnvelopeGenerator.Application
|
|
||||||
{
|
|
||||||
public class DispatcherConfig
|
|
||||||
{
|
|
||||||
public int SendingProfile { get; init; } = 1;
|
|
||||||
|
|
||||||
public string AddedWho { get; init; } = "DDEnvelopGenerator";
|
|
||||||
|
|
||||||
public int ReminderTypeId { get; init; } = 202377;
|
|
||||||
|
|
||||||
public string EmailAttmt1 { get; init; } = string.Empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -12,16 +12,17 @@
|
|||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
<PackageReference Include="AutoMapper" Version="13.0.1" />
|
||||||
<PackageReference Include="DigitalData.Core.Abstractions" Version="1.0.1.1" />
|
<PackageReference Include="DigitalData.Core.Abstractions" Version="2.0.0" />
|
||||||
<PackageReference Include="DigitalData.Core.Application" Version="1.0.0" />
|
<PackageReference Include="DigitalData.Core.Application" Version="2.0.0" />
|
||||||
<PackageReference Include="DigitalData.Core.DTO" Version="1.0.0" />
|
<PackageReference Include="DigitalData.Core.DTO" Version="2.0.0" />
|
||||||
<PackageReference Include="DigitalData.EmailProfilerDispatcher" Version="1.0.0" />
|
<PackageReference Include="DigitalData.EmailProfilerDispatcher" Version="2.0.0" />
|
||||||
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.18" />
|
<PackageReference Include="Microsoft.AspNetCore.Authentication.JwtBearer" Version="7.0.18" />
|
||||||
<PackageReference Include="UserManager.Application" Version="1.0.0" />
|
<PackageReference Include="UserManager.Application" Version="2.0.0" />
|
||||||
<PackageReference Include="UserManager.Infrastructure" Version="1.0.0" />
|
<PackageReference Include="UserManager.Infrastructure" Version="2.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\EnvelopeGenerator.Extensions\EnvelopeGenerator.Extensions.csproj" />
|
||||||
<ProjectReference Include="..\EnvelopeGenerator.Infrastructure\EnvelopeGenerator.Infrastructure.csproj" />
|
<ProjectReference Include="..\EnvelopeGenerator.Infrastructure\EnvelopeGenerator.Infrastructure.csproj" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|
||||||
|
|||||||
@@ -1,6 +1,8 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
|
||||||
@@ -21,11 +23,13 @@ namespace EnvelopeGenerator.Application.MappingProfiles
|
|||||||
CreateMap<EnvelopeHistory, EnvelopeHistoryDto>();
|
CreateMap<EnvelopeHistory, EnvelopeHistoryDto>();
|
||||||
CreateMap<EnvelopeHistory, EnvelopeHistoryCreateDto>();
|
CreateMap<EnvelopeHistory, EnvelopeHistoryCreateDto>();
|
||||||
CreateMap<EnvelopeReceiver, EnvelopeReceiverDto>();
|
CreateMap<EnvelopeReceiver, EnvelopeReceiverDto>();
|
||||||
|
CreateMap<EnvelopeReceiver, EnvelopeReceiverSecretDto>();
|
||||||
CreateMap<EnvelopeType, EnvelopeTypeDto>();
|
CreateMap<EnvelopeType, EnvelopeTypeDto>();
|
||||||
CreateMap<Receiver, ReceiverReadDto>();
|
CreateMap<Receiver, ReceiverReadDto>();
|
||||||
CreateMap<Receiver, ReceiverCreateDto>();
|
CreateMap<Receiver, ReceiverCreateDto>();
|
||||||
CreateMap<Receiver, ReceiverUpdateDto>();
|
CreateMap<Receiver, ReceiverUpdateDto>();
|
||||||
CreateMap<UserReceiver, UserReceiverDto>();
|
CreateMap<UserReceiver, UserReceiverDto>();
|
||||||
|
CreateMap<EnvelopeReceiverReadOnly, EnvelopeReceiverReadOnlyDto>();
|
||||||
|
|
||||||
// DTO to Entity mappings
|
// DTO to Entity mappings
|
||||||
CreateMap<ConfigDto, Config>();
|
CreateMap<ConfigDto, Config>();
|
||||||
@@ -43,6 +47,9 @@ namespace EnvelopeGenerator.Application.MappingProfiles
|
|||||||
CreateMap<ReceiverCreateDto, Receiver>();
|
CreateMap<ReceiverCreateDto, Receiver>();
|
||||||
CreateMap<ReceiverUpdateDto, Receiver>();
|
CreateMap<ReceiverUpdateDto, Receiver>();
|
||||||
CreateMap<UserReceiverDto, UserReceiver>();
|
CreateMap<UserReceiverDto, UserReceiver>();
|
||||||
|
CreateMap<EnvelopeReceiverBase, EnvelopeReceiverBasicDto>();
|
||||||
|
CreateMap<EnvelopeReceiverReadOnlyCreateDto, EnvelopeReceiverReadOnly>();
|
||||||
|
CreateMap<EnvelopeReceiverReadOnlyUpdateDto, EnvelopeReceiverReadOnly>();
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -177,6 +177,9 @@
|
|||||||
<data name="LockedTitle" xml:space="preserve">
|
<data name="LockedTitle" xml:space="preserve">
|
||||||
<value>Dokument erfordert einen Zugriffscode</value>
|
<value>Dokument erfordert einen Zugriffscode</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ReadOnlyMessage" xml:space="preserve">
|
||||||
|
<value>Weitergeleitet von {0}. Gültig bis {1}.</value>
|
||||||
|
</data>
|
||||||
<data name="Reject" xml:space="preserve">
|
<data name="Reject" xml:space="preserve">
|
||||||
<value>Ablehnen</value>
|
<value>Ablehnen</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -210,6 +213,9 @@
|
|||||||
<data name="UnexpectedError" xml:space="preserve">
|
<data name="UnexpectedError" xml:space="preserve">
|
||||||
<value>Ein unerwarteter Fehler ist aufgetreten.</value>
|
<value>Ein unerwarteter Fehler ist aufgetreten.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ViewDoc" xml:space="preserve">
|
||||||
|
<value>Dokument ansehen</value>
|
||||||
|
</data>
|
||||||
<data name="WelcomeToTheESignPortal" xml:space="preserve">
|
<data name="WelcomeToTheESignPortal" xml:space="preserve">
|
||||||
<value>Herzlich willkommen im eSign-Portal</value>
|
<value>Herzlich willkommen im eSign-Portal</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -177,6 +177,9 @@
|
|||||||
<data name="LockedTitle" xml:space="preserve">
|
<data name="LockedTitle" xml:space="preserve">
|
||||||
<value>Document requires an access code</value>
|
<value>Document requires an access code</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ReadOnlyMessage" xml:space="preserve">
|
||||||
|
<value>Forwarded by {0}. Valid until {1}.</value>
|
||||||
|
</data>
|
||||||
<data name="Reject" xml:space="preserve">
|
<data name="Reject" xml:space="preserve">
|
||||||
<value>Reject</value>
|
<value>Reject</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -210,6 +213,9 @@
|
|||||||
<data name="UnexpectedError" xml:space="preserve">
|
<data name="UnexpectedError" xml:space="preserve">
|
||||||
<value>An unexpected error has occurred.</value>
|
<value>An unexpected error has occurred.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="ViewDoc" xml:space="preserve">
|
||||||
|
<value>View document</value>
|
||||||
|
</data>
|
||||||
<data name="WelcomeToTheESignPortal" xml:space="preserve">
|
<data name="WelcomeToTheESignPortal" xml:space="preserve">
|
||||||
<value>Welcome to the eSign portal</value>
|
<value>Welcome to the eSign portal</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -3,15 +3,13 @@ using DigitalData.Core.Application;
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using Microsoft.Extensions.Caching.Memory;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class ConfigService : BasicCRUDService<IConfigRepository, ConfigDto, Config, int>, IConfigService
|
public class ConfigService : ReadService<IConfigRepository, ConfigDto, Config, int>, IConfigService
|
||||||
{
|
{
|
||||||
private static readonly Guid DefaultConfigCacheId = Guid.NewGuid();
|
private static readonly Guid DefaultConfigCacheId = Guid.NewGuid();
|
||||||
|
|
||||||
@@ -28,7 +26,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
var config = await _repository.ReadFirstAsync();
|
var config = await _repository.ReadFirstAsync();
|
||||||
return config is null
|
return config is null
|
||||||
? Result.Fail<ConfigDto>().Notice(LogLevel.Error, Flag.DataIntegrityIssue, "There is no configuration in DB.")
|
? Result.Fail<ConfigDto>().Notice(LogLevel.Error, Flag.DataIntegrityIssue, "There is no configuration in DB.")
|
||||||
: Result.Success(_mapper.MapOrThrow<ConfigDto>(config));
|
: Result.Success(_mapper.Map<ConfigDto>(config));
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
|
|||||||
@@ -2,10 +2,8 @@
|
|||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,10 +2,8 @@
|
|||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -1,11 +1,9 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
@@ -26,7 +24,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
? Result.Fail<EmailTemplateDto>()
|
? Result.Fail<EmailTemplateDto>()
|
||||||
.Message(Key.InnerServiceError)
|
.Message(Key.InnerServiceError)
|
||||||
.Notice(LogLevel.Error, Flag.DataIntegrityIssue, $"EmailTemplateType '{type}' is not found in DB. Please, define required e-mail template.")
|
.Notice(LogLevel.Error, Flag.DataIntegrityIssue, $"EmailTemplateType '{type}' is not found in DB. Please, define required e-mail template.")
|
||||||
: Result.Success(_mapper.MapOrThrow<EmailTemplateDto>(temp));
|
: Result.Success(_mapper.Map<EmailTemplateDto>(temp));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,9 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeHistory;
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
@@ -14,7 +12,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
{
|
{
|
||||||
public class EnvelopeHistoryService : CRUDService<IEnvelopeHistoryRepository, EnvelopeHistoryCreateDto, EnvelopeHistoryDto, EnvelopeHistoryDto, EnvelopeHistory, long>, IEnvelopeHistoryService
|
public class EnvelopeHistoryService : CRUDService<IEnvelopeHistoryRepository, EnvelopeHistoryCreateDto, EnvelopeHistoryDto, EnvelopeHistoryDto, EnvelopeHistory, long>, IEnvelopeHistoryService
|
||||||
{
|
{
|
||||||
public EnvelopeHistoryService(IEnvelopeHistoryRepository repository, IStringLocalizer<Resource> localizer, IMapper mapper)
|
public EnvelopeHistoryService(IEnvelopeHistoryRepository repository, IMapper mapper)
|
||||||
: base(repository, mapper)
|
: base(repository, mapper)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -53,7 +51,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
|
|
||||||
public async Task<IEnumerable<EnvelopeHistoryDto>> ReadAsync(int? envelopeId = null, string? userReference = null, ReferenceType? referenceType = null, int? status = null, bool withSender = false, bool withReceiver = false)
|
public async Task<IEnumerable<EnvelopeHistoryDto>> ReadAsync(int? envelopeId = null, string? userReference = null, ReferenceType? referenceType = null, int? status = null, bool withSender = false, bool withReceiver = false)
|
||||||
{
|
{
|
||||||
var histDTOs = _mapper.MapOrThrow<IEnumerable<EnvelopeHistoryDto>>(
|
var histDTOs = _mapper.Map<IEnumerable<EnvelopeHistoryDto>>(
|
||||||
await _repository.ReadAsync(
|
await _repository.ReadAsync(
|
||||||
envelopeId: envelopeId,
|
envelopeId: envelopeId,
|
||||||
userReference: userReference,
|
userReference: userReference,
|
||||||
|
|||||||
@@ -3,56 +3,68 @@ using DigitalData.Core.DTO;
|
|||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Contracts;
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Contracts;
|
||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.DTOs.EmailOut;
|
using DigitalData.EmailProfilerDispatcher.Abstraction.DTOs.EmailOut;
|
||||||
using DigitalData.EmailProfilerDispatcher.Abstraction.Services;
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Services;
|
||||||
using DigitalData.UserManager.Application;
|
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
using EnvelopeGenerator.Common;
|
using EnvelopeGenerator.Common;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
using Microsoft.Extensions.Options;
|
using Microsoft.Extensions.Options;
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
|
using EnvelopeGenerator.Extensions;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
||||||
|
using EnvelopeGenerator.Application.Configurations;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class EnvelopeMailService : EmailOutService, IEnvelopeMailService
|
public class EnvelopeMailService : EmailOutService, IEnvelopeMailService
|
||||||
{
|
{
|
||||||
private readonly IEmailTemplateService _tempService;
|
private readonly IEmailTemplateService _tempService;
|
||||||
private readonly IEnvelopeReceiverService _envRcvService;
|
private readonly IEnvelopeReceiverService _envRcvService;
|
||||||
private readonly DispatcherConfig _dConfig;
|
private readonly DispatcherConfig _dConfig;
|
||||||
private readonly IConfigService _configService;
|
private readonly IConfigService _configService;
|
||||||
|
private readonly Dictionary<string, string> _placeholders;
|
||||||
|
|
||||||
public EnvelopeMailService(IEmailOutRepository repository, IStringLocalizer<Resource> localizer, IMapper mapper, IEmailTemplateService tempService, IEnvelopeReceiverService envelopeReceiverService, IOptions<DispatcherConfig> dispatcherConfigOptions, IConfigService configService) : base(repository, mapper)
|
public EnvelopeMailService(IEmailOutRepository repository, IMapper mapper, IEmailTemplateService tempService, IEnvelopeReceiverService envelopeReceiverService, IOptions<DispatcherConfig> dispatcherConfigOptions, IConfigService configService, IOptions<MailConfig> mailConfig) : base(repository, mapper)
|
||||||
{
|
{
|
||||||
_tempService = tempService;
|
_tempService = tempService;
|
||||||
_envRcvService = envelopeReceiverService;
|
_envRcvService = envelopeReceiverService;
|
||||||
_dConfig = dispatcherConfigOptions.Value;
|
_dConfig = dispatcherConfigOptions.Value;
|
||||||
_configService = configService;
|
_configService = configService;
|
||||||
|
_placeholders = mailConfig.Value.Placeholders;
|
||||||
}
|
}
|
||||||
|
|
||||||
//TODO: create ioptions and implement TemplatePlaceHolderAttribute instead of this method
|
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null, EnvelopeReceiverReadOnlyDto? readOnlyDto = null)
|
||||||
private async Task<Dictionary<string, string>> CreatePlaceholders(string? accessCode = null, EnvelopeReceiverDto? envelopeReceiverDto = null)
|
|
||||||
{
|
{
|
||||||
Dictionary<string, string> placeholders = new() {
|
|
||||||
{ "[NAME_PORTAL]", "signFlow" },
|
|
||||||
{ "[SIGNATURE_TYPE]" , "signieren"},
|
|
||||||
{ "[REASON]", string.Empty } };
|
|
||||||
|
|
||||||
if (accessCode is not null)
|
if (accessCode is not null)
|
||||||
placeholders["[DOCUMENT_ACCESS_CODE]"] = accessCode;
|
_placeholders["[DOCUMENT_ACCESS_CODE]"] = accessCode;
|
||||||
|
|
||||||
if(envelopeReceiverDto is not null && envelopeReceiverDto.Envelope is not null && envelopeReceiverDto.Receiver is not null)
|
if(envelopeReceiverDto?.Envelope is not null && envelopeReceiverDto.Receiver is not null)
|
||||||
{
|
{
|
||||||
var erId = (envelopeReceiverDto.Envelope.Uuid, envelopeReceiverDto.Receiver.Signature).EncodeEnvelopeReceiverId();
|
var erId = (envelopeReceiverDto.Envelope.Uuid, envelopeReceiverDto.Receiver.Signature).EncodeEnvelopeReceiverId();
|
||||||
var sigHost = await _configService.ReadDefaultSignatureHost();
|
var sigHost = await _configService.ReadDefaultSignatureHost();
|
||||||
var linkToDoc = $"{sigHost}/envelope/{erId}";
|
var linkToDoc = $"{sigHost}/EnvelopeKey/{erId}";
|
||||||
placeholders["[LINK_TO_DOCUMENT]"] = linkToDoc;
|
_placeholders["[LINK_TO_DOCUMENT]"] = linkToDoc;
|
||||||
placeholders["[LINK_TO_DOCUMENT_TEXT]"] = linkToDoc[..Math.Min(40, linkToDoc.Length)];
|
_placeholders["[LINK_TO_DOCUMENT_TEXT]"] = linkToDoc[..Math.Min(40, linkToDoc.Length)] + "..";
|
||||||
}
|
}
|
||||||
|
|
||||||
return placeholders;
|
return _placeholders;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<int>> SendAccessCodeAsync(EnvelopeReceiverDto dto) => await SendAsync(dto: dto, tempType: Constants.EmailTemplateType.DocumentAccessCodeReceived);
|
private async Task<Dictionary<string, string>> CreatePlaceholders(EnvelopeReceiverReadOnlyDto? readOnlyDto = null)
|
||||||
|
{
|
||||||
|
if (readOnlyDto?.Envelope is not null && readOnlyDto.Receiver is not null)
|
||||||
|
{
|
||||||
|
_placeholders["[NAME_RECEIVER]"] = await _envRcvService.ReadLastUsedReceiverNameByMail(readOnlyDto.AddedWho).ThenAsync(res => res, (msg, ntc) => string.Empty) ?? string.Empty;
|
||||||
|
var erReadOnlyId = (readOnlyDto.Id).EncodeEnvelopeReceiverId();
|
||||||
|
var sigHost = await _configService.ReadDefaultSignatureHost();
|
||||||
|
var linkToDoc = $"{sigHost}/EnvelopeKey/{erReadOnlyId}";
|
||||||
|
_placeholders["[LINK_TO_DOCUMENT]"] = linkToDoc;
|
||||||
|
_placeholders["[LINK_TO_DOCUMENT_TEXT]"] = linkToDoc[..Math.Min(40, linkToDoc.Length)] + "..";
|
||||||
|
}
|
||||||
|
|
||||||
|
return _placeholders;
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<DataResult<int>> SendAccessCodeAsync(EnvelopeReceiverDto dto) => await SendAsync(dto: dto, tempType: Constants.EmailTemplateType.DocumentAccessCodeReceived);
|
||||||
|
|
||||||
public async Task<DataResult<int>> SendAsync(EnvelopeReceiverDto dto, Constants.EmailTemplateType tempType)
|
public async Task<DataResult<int>> SendAsync(EnvelopeReceiverDto dto, Constants.EmailTemplateType tempType)
|
||||||
{
|
{
|
||||||
@@ -92,8 +104,43 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
|
|
||||||
var placeholders = await CreatePlaceholders(accessCode: accessCode, envelopeReceiverDto: dto);
|
var placeholders = await CreatePlaceholders(accessCode: accessCode, envelopeReceiverDto: dto);
|
||||||
|
|
||||||
|
//TODO: remove the requirement to add the models using reflections
|
||||||
return await CreateWithTemplateAsync(createDto: mail,placeholders: placeholders,
|
return await CreateWithTemplateAsync(createDto: mail,placeholders: placeholders,
|
||||||
dto, dto.Envelope.User!, dto.Envelope);
|
dto, dto.Envelope.User!, dto.Envelope);
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
public async Task<DataResult<int>> SendAsync(EnvelopeReceiverReadOnlyDto dto)
|
||||||
|
{
|
||||||
|
var tempSerResult = await _tempService.ReadByNameAsync(Constants.EmailTemplateType.DocumentShared);
|
||||||
|
if (tempSerResult.IsFailed)
|
||||||
|
return tempSerResult.ToFail<int>().Notice(LogLevel.Error, Flag.DataIntegrityIssue, $"The email cannot send because '{Constants.EmailTemplateType.DocumentShared}' template cannot found.");
|
||||||
|
var temp = tempSerResult.Data;
|
||||||
|
|
||||||
|
var mail = new EmailOutCreateDto()
|
||||||
|
{
|
||||||
|
EmailAddress = dto.ReceiverMail,
|
||||||
|
EmailSubj = temp.Subject,
|
||||||
|
EmailBody = temp.Body,
|
||||||
|
//TODO: remove int casting when all
|
||||||
|
ReferenceId = (int) dto.EnvelopeId, //REFERENCE_ID = ENVELOPE_ID
|
||||||
|
ReferenceString = dto.Envelope!.Uuid, //REFERENCE_STRING = ENVELOPE_UUID
|
||||||
|
//receiver_name = receiver.name,
|
||||||
|
//receiver_access_code = receiver.access_code,
|
||||||
|
//sender_adress = envelope.user.email,
|
||||||
|
//sender_name = envelope.user.full_name,
|
||||||
|
//envelope_title = envelope.title,
|
||||||
|
ReminderTypeId = _dConfig.ReminderTypeId,
|
||||||
|
SendingProfile = _dConfig.SendingProfile,
|
||||||
|
EntityId = null,
|
||||||
|
WfId = (int)EnvelopeStatus.EnvelopeShared,
|
||||||
|
WfReference = null,
|
||||||
|
AddedWho = _dConfig.AddedWho,
|
||||||
|
EmailAttmt1 = _dConfig.EmailAttmt1
|
||||||
|
};
|
||||||
|
|
||||||
|
var placeholders = await CreatePlaceholders(readOnlyDto: dto);
|
||||||
|
|
||||||
|
return await CreateWithTemplateAsync(createDto: mail, placeholders: placeholders, dto.Envelope);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
@@ -0,0 +1,16 @@
|
|||||||
|
using AutoMapper;
|
||||||
|
using DigitalData.Core.Application;
|
||||||
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiverReadOnly;
|
||||||
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Application.Services
|
||||||
|
{
|
||||||
|
public class EnvelopeReceiverReadOnlyService : CRUDService<IEnvelopeReceiverReadOnlyRepository, EnvelopeReceiverReadOnlyCreateDto, EnvelopeReceiverReadOnlyDto, EnvelopeReceiverReadOnlyUpdateDto, EnvelopeReceiverReadOnly, long>, IEnvelopeReceiverReadOnlyService
|
||||||
|
{
|
||||||
|
public EnvelopeReceiverReadOnlyService(IEnvelopeReceiverReadOnlyRepository repository, IMapper mapper) : base(repository, mapper)
|
||||||
|
{
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,16 +2,17 @@
|
|||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs.EnvelopeReceiver;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
using EnvelopeGenerator.Application.Resources;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using Microsoft.Extensions.Logging;
|
using Microsoft.Extensions.Logging;
|
||||||
|
using EnvelopeGenerator.Extensions;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class EnvelopeReceiverService : BasicCRUDService<IEnvelopeReceiverRepository, EnvelopeReceiverDto, EnvelopeReceiver, object>, IEnvelopeReceiverService
|
public class EnvelopeReceiverService : BasicCRUDService<IEnvelopeReceiverRepository, EnvelopeReceiverDto, EnvelopeReceiver, (int Envelope, int Receiver)>, IEnvelopeReceiverService
|
||||||
{
|
{
|
||||||
private readonly IStringLocalizer<Resource> _localizer;
|
private readonly IStringLocalizer<Resource> _localizer;
|
||||||
|
|
||||||
@@ -24,13 +25,19 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadBySignatureAsync(string signature, bool withEnvelope = false, bool withReceiver = true)
|
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadBySignatureAsync(string signature, bool withEnvelope = false, bool withReceiver = true)
|
||||||
{
|
{
|
||||||
var env_rcvs = await _repository.ReadBySignatureAsync(signature: signature, withEnvelope: withEnvelope, withReceiver: withReceiver);
|
var env_rcvs = await _repository.ReadBySignatureAsync(signature: signature, withEnvelope: withEnvelope, withReceiver: withReceiver);
|
||||||
return Result.Success(_mapper.MapOrThrow<IEnumerable<EnvelopeReceiverDto>>(env_rcvs));
|
return Result.Success(_mapper.Map<IEnumerable<EnvelopeReceiverDto>>(env_rcvs));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUuidAsync(string uuid, bool withEnvelope = true, bool withReceiver = false)
|
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUuidAsync(string uuid, bool withEnvelope = true, bool withReceiver = false)
|
||||||
{
|
{
|
||||||
var env_rcvs = await _repository.ReadByUuidAsync(uuid: uuid, withEnvelope: withEnvelope, withReceiver: withReceiver);
|
var env_rcvs = await _repository.ReadByUuidAsync(uuid: uuid, withEnvelope: withEnvelope, withReceiver: withReceiver);
|
||||||
return Result.Success(_mapper.MapOrThrow<IEnumerable<EnvelopeReceiverDto>>(env_rcvs));
|
return Result.Success(_mapper.Map<IEnumerable<EnvelopeReceiverDto>>(env_rcvs));
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<DataResult<IEnumerable<EnvelopeReceiverSecretDto>>> ReadSecretByUuidAsync(string uuid, bool withEnvelope = false, bool withReceiver = true)
|
||||||
|
{
|
||||||
|
var env_rcvs = await _repository.ReadByUuidAsync(uuid: uuid, withEnvelope: withEnvelope, withReceiver: withReceiver);
|
||||||
|
return Result.Success(_mapper.Map<IEnumerable<EnvelopeReceiverSecretDto>>(env_rcvs));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<EnvelopeReceiverDto>> ReadByUuidSignatureAsync(string uuid, string signature, bool withEnvelope = true, bool withReceiver = true)
|
public async Task<DataResult<EnvelopeReceiverDto>> ReadByUuidSignatureAsync(string uuid, string signature, bool withEnvelope = true, bool withReceiver = true)
|
||||||
@@ -40,7 +47,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
return Result.Fail<EnvelopeReceiverDto>()
|
return Result.Fail<EnvelopeReceiverDto>()
|
||||||
.Message(Key.EnvelopeReceiverNotFound);
|
.Message(Key.EnvelopeReceiverNotFound);
|
||||||
|
|
||||||
return Result.Success(_mapper.MapOrThrow<EnvelopeReceiverDto>(env_rcv));
|
return Result.Success(_mapper.Map<EnvelopeReceiverDto>(env_rcv));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<EnvelopeReceiverDto>> ReadByEnvelopeReceiverIdAsync(string envelopeReceiverId, bool withEnvelope = true, bool withReceiver = true)
|
public async Task<DataResult<EnvelopeReceiverDto>> ReadByEnvelopeReceiverIdAsync(string envelopeReceiverId, bool withEnvelope = true, bool withReceiver = true)
|
||||||
@@ -119,8 +126,14 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses)
|
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses)
|
||||||
{
|
{
|
||||||
var er_list = await _repository.ReadByUsernameAsync(username: username, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses);
|
var er_list = await _repository.ReadByUsernameAsync(username: username, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses);
|
||||||
var dto_list = _mapper.MapOrThrow<IEnumerable<EnvelopeReceiverDto>>(er_list);
|
var dto_list = _mapper.Map<IEnumerable<EnvelopeReceiverDto>>(er_list);
|
||||||
return Result.Success(dto_list);
|
return Result.Success(dto_list);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public async Task<DataResult<string?>> ReadLastUsedReceiverNameByMail(string mail)
|
||||||
|
{
|
||||||
|
var er = await _repository.ReadLastByReceiver(mail);
|
||||||
|
return er is null ? Result.Fail<string?>().Notice(LogLevel.None, Flag.NotFound) : Result.Success(er.Name);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -3,27 +3,22 @@ using DigitalData.Core.Application;
|
|||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using Microsoft.Extensions.Logging;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class EnvelopeService : BasicCRUDService<IEnvelopeRepository, EnvelopeDto, Envelope, int>, IEnvelopeService
|
public class EnvelopeService : BasicCRUDService<IEnvelopeRepository, EnvelopeDto, Envelope, int>, IEnvelopeService
|
||||||
{
|
{
|
||||||
private readonly ILogger _logger;
|
public EnvelopeService(IEnvelopeRepository repository, IMapper mapper)
|
||||||
public EnvelopeService(IEnvelopeRepository repository, IMapper mapper, ILogger<EnvelopeService> logger)
|
|
||||||
: base(repository, mapper)
|
: base(repository, mapper)
|
||||||
{
|
{
|
||||||
_logger = logger;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool history = false, bool documentReceiverElement = false)
|
public async Task<DataResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool history = false, bool documentReceiverElement = false)
|
||||||
{
|
{
|
||||||
var envelopes = await _repository.ReadAllWithAsync(documents: documents, history: history, documentReceiverElement: documentReceiverElement);
|
var envelopes = await _repository.ReadAllWithAsync(documents: documents, history: history, documentReceiverElement: documentReceiverElement);
|
||||||
var readDto = _mapper.MapOrThrow<IEnumerable<EnvelopeDto>>(envelopes);
|
var readDto = _mapper.Map<IEnumerable<EnvelopeDto>>(envelopes);
|
||||||
return Result.Success(readDto);
|
return Result.Success(readDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -34,7 +29,14 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
if (envelope is null)
|
if (envelope is null)
|
||||||
return Result.Fail<EnvelopeDto>();
|
return Result.Fail<EnvelopeDto>();
|
||||||
|
|
||||||
var readDto = _mapper.MapOrThrow<EnvelopeDto>(envelope);
|
var readDto = _mapper.Map<EnvelopeDto>(envelope);
|
||||||
|
return Result.Success(readDto);
|
||||||
|
}
|
||||||
|
|
||||||
|
public async Task<DataResult<IEnumerable<EnvelopeDto>>> ReadByUserAsync(int userId, int? min_status = null, int? max_status = null, params int[] ignore_statuses)
|
||||||
|
{
|
||||||
|
var users = await _repository.ReadByUserAsync(userId: userId, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses);
|
||||||
|
var readDto = _mapper.Map<IEnumerable<EnvelopeDto>>(users);
|
||||||
return Result.Success(readDto);
|
return Result.Success(readDto);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,19 +1,30 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
using Microsoft.Extensions.Caching.Memory;
|
||||||
|
using DigitalData.Core.DTO;
|
||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class EnvelopeTypeService : BasicCRUDService<IEnvelopeTypeRepository, EnvelopeTypeDto, EnvelopeType, int>, IEnvelopeTypeService
|
public class EnvelopeTypeService : BasicCRUDService<IEnvelopeTypeRepository, EnvelopeTypeDto, EnvelopeType, int>, IEnvelopeTypeService
|
||||||
{
|
{
|
||||||
public EnvelopeTypeService(IEnvelopeTypeRepository repository, IMapper mapper)
|
private static readonly Guid CacheKey = Guid.NewGuid();
|
||||||
|
|
||||||
|
private readonly IMemoryCache _cache;
|
||||||
|
|
||||||
|
public EnvelopeTypeService(IEnvelopeTypeRepository repository, IMapper mapper, IMemoryCache cache)
|
||||||
: base(repository, mapper)
|
: base(repository, mapper)
|
||||||
{
|
{
|
||||||
|
_cache = cache;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public override async Task<DataResult<IEnumerable<EnvelopeTypeDto>>> ReadAllAsync()
|
||||||
|
=> await _cache.GetOrCreateAsync(CacheKey, async entry => await base.ReadAllAsync())
|
||||||
|
?? Result.Fail<IEnumerable<EnvelopeTypeDto>>().Notice(LogLevel.Error, Flag.NotFound, "No cached envelope types are available in the database. If you have added any envelope types after the server started, please restart the server.");
|
||||||
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,8 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
using EnvelopeGenerator.Application.DTOs.Receiver;
|
using EnvelopeGenerator.Application.DTOs.Receiver;
|
||||||
using DigitalData.Core.DTO;
|
using DigitalData.Core.DTO;
|
||||||
|
|
||||||
@@ -12,7 +10,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
{
|
{
|
||||||
public class ReceiverService : CRUDService<IReceiverRepository, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>, IReceiverService
|
public class ReceiverService : CRUDService<IReceiverRepository, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>, IReceiverService
|
||||||
{
|
{
|
||||||
public ReceiverService(IReceiverRepository repository, IStringLocalizer<Resource> localizer, IMapper mapper)
|
public ReceiverService(IReceiverRepository repository, IMapper mapper)
|
||||||
: base(repository, mapper)
|
: base(repository, mapper)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
@@ -24,7 +22,7 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
if (rcv is null)
|
if (rcv is null)
|
||||||
return Result.Fail<ReceiverReadDto>();
|
return Result.Fail<ReceiverReadDto>();
|
||||||
|
|
||||||
return Result.Success(_mapper.MapOrThrow<ReceiverReadDto>(rcv));
|
return Result.Success(_mapper.Map<ReceiverReadDto>(rcv));
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Result> DeleteByAsync(string? emailAddress = null, string? signature = null)
|
public async Task<Result> DeleteByAsync(string? emailAddress = null, string? signature = null)
|
||||||
|
|||||||
@@ -1,17 +1,15 @@
|
|||||||
using AutoMapper;
|
using AutoMapper;
|
||||||
using DigitalData.Core.Application;
|
using DigitalData.Core.Application;
|
||||||
using Microsoft.Extensions.Localization;
|
|
||||||
using EnvelopeGenerator.Application.Contracts;
|
using EnvelopeGenerator.Application.Contracts;
|
||||||
using EnvelopeGenerator.Application.DTOs;
|
using EnvelopeGenerator.Application.DTOs;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
using EnvelopeGenerator.Domain.Entities;
|
||||||
using EnvelopeGenerator.Infrastructure.Contracts;
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
||||||
using EnvelopeGenerator.Application.Resources;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application.Services
|
namespace EnvelopeGenerator.Application.Services
|
||||||
{
|
{
|
||||||
public class UserReceiverService : BasicCRUDService<IUserReceiverRepository, UserReceiverDto, UserReceiver, int>, IUserReceiverService
|
public class UserReceiverService : BasicCRUDService<IUserReceiverRepository, UserReceiverDto, UserReceiver, int>, IUserReceiverService
|
||||||
{
|
{
|
||||||
public UserReceiverService(IUserReceiverRepository repository, IStringLocalizer<Resource> localizer, IMapper mapper)
|
public UserReceiverService(IUserReceiverRepository repository, IMapper mapper)
|
||||||
: base(repository, mapper)
|
: base(repository, mapper)
|
||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,6 +1,7 @@
|
|||||||
Public Class Constants
|
Public Class Constants
|
||||||
|
|
||||||
#Region "Status Fields"
|
#Region "Status Fields"
|
||||||
|
'http://wiki.dd/xwiki13/bin/view/Anwendungen/Produkt-Handbuch/Sonstiges/SignFlow/Envelope%20Status/
|
||||||
Public Enum EnvelopeStatus
|
Public Enum EnvelopeStatus
|
||||||
Invalid = 0
|
Invalid = 0
|
||||||
EnvelopeCreated = 1001
|
EnvelopeCreated = 1001
|
||||||
@@ -17,8 +18,11 @@
|
|||||||
AccessCodeIncorrect = 2003
|
AccessCodeIncorrect = 2003
|
||||||
DocumentOpened = 2004
|
DocumentOpened = 2004
|
||||||
DocumentSigned = 2005
|
DocumentSigned = 2005
|
||||||
|
DocumentForwarded = 4001
|
||||||
SignatureConfirmed = 2006
|
SignatureConfirmed = 2006
|
||||||
DocumentRejected = 2007
|
DocumentRejected = 2007
|
||||||
|
EnvelopeShared = 2008
|
||||||
|
EnvelopeViewed = 2009
|
||||||
MessageInvitationSent = 3001 ' Wird von Trigger verwendet
|
MessageInvitationSent = 3001 ' Wird von Trigger verwendet
|
||||||
MessageAccessCodeSent = 3002
|
MessageAccessCodeSent = 3002
|
||||||
MessageConfirmationSent = 3003
|
MessageConfirmationSent = 3003
|
||||||
@@ -26,6 +30,7 @@
|
|||||||
MessageCompletionSent = 3005
|
MessageCompletionSent = 3005
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
|
'TODO: standardize in xwiki
|
||||||
Public Enum ReferenceType
|
Public Enum ReferenceType
|
||||||
Receiver
|
Receiver
|
||||||
Sender
|
Sender
|
||||||
@@ -93,6 +98,15 @@
|
|||||||
DocumentDeleted
|
DocumentDeleted
|
||||||
DocumentCompleted
|
DocumentCompleted
|
||||||
DocumentAccessCodeReceived
|
DocumentAccessCodeReceived
|
||||||
|
DocumentShared
|
||||||
|
End Enum
|
||||||
|
|
||||||
|
Public Enum EncodeType
|
||||||
|
EnvelopeReceiver
|
||||||
|
EnvelopeReceiverReadOnly
|
||||||
|
Undefined
|
||||||
|
DocumentForwarded
|
||||||
|
DocumentShared
|
||||||
End Enum
|
End Enum
|
||||||
|
|
||||||
#End Region
|
#End Region
|
||||||
|
|||||||
@@ -1,5 +1,5 @@
|
|||||||
Public Class DbConfig
|
Public Class DbConfig
|
||||||
Public Property ExternalProgramName As String = "Sign Flow"
|
Public Property ExternalProgramName As String = "signFLOW"
|
||||||
Public Property DocumentPathOrigin As String = ""
|
Public Property DocumentPathOrigin As String = ""
|
||||||
Public Property DocumentPath As String = ""
|
Public Property DocumentPath As String = ""
|
||||||
Public Property ExportPath As String = ""
|
Public Property ExportPath As String = ""
|
||||||
|
|||||||
@@ -13,6 +13,8 @@
|
|||||||
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
<TargetFrameworkVersion>v4.6.2</TargetFrameworkVersion>
|
||||||
<Deterministic>true</Deterministic>
|
<Deterministic>true</Deterministic>
|
||||||
<TargetFrameworkProfile />
|
<TargetFrameworkProfile />
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<DebugSymbols>true</DebugSymbols>
|
<DebugSymbols>true</DebugSymbols>
|
||||||
@@ -63,22 +65,20 @@
|
|||||||
<Reference Include="DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
<Reference Include="DevExpress.XtraEditors.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
<Reference Include="DevExpress.XtraGauges.v21.2.Core, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
<Reference Include="DevExpress.XtraGauges.v21.2.Core, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||||
<Reference Include="DevExpress.XtraReports.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
<Reference Include="DevExpress.XtraReports.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||||
<Reference Include="DigitalData.Modules.Base, Version=1.3.4.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="DigitalData.Modules.Base">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>..\..\2_DLL Projekte\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||||
<HintPath>..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Config">
|
<Reference Include="DigitalData.Modules.Config">
|
||||||
<HintPath>..\..\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
<HintPath>..\..\2_DLL Projekte\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Database">
|
<Reference Include="DigitalData.Modules.Database">
|
||||||
<HintPath>..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
<HintPath>..\..\2_DLL Projekte\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Logging, Version=2.6.2.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="DigitalData.Modules.Logging">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<HintPath>..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||||
<HintPath>..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="GdPicture.NET.14">
|
<Reference Include="GdPicture.NET.14, Version=14.2.89.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||||
<HintPath>D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll</HintPath>
|
<HintPath>..\packages\GdPicture.14.2.89\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="Microsoft.CSharp" />
|
<Reference Include="Microsoft.CSharp" />
|
||||||
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
<Reference Include="Microsoft.Extensions.Logging.Abstractions, Version=2.1.1.0, Culture=neutral, PublicKeyToken=adb9793829ddae60, processorArchitecture=MSIL">
|
||||||
@@ -289,4 +289,11 @@
|
|||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup />
|
<ItemGroup />
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||||
|
<Import Project="..\packages\GdPicture.runtimes.windows.14.2.89\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.2.89\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.2.89\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.2.89\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||||
|
</Target>
|
||||||
</Project>
|
</Project>
|
||||||
@@ -33,7 +33,7 @@ Namespace Jobs
|
|||||||
Private PDFMerger As PDFMerger
|
Private PDFMerger As PDFMerger
|
||||||
Private ReportCreator As ReportCreator
|
Private ReportCreator As ReportCreator
|
||||||
|
|
||||||
Private ReadOnly CompleteWaitTime As Integer = 5
|
Private ReadOnly CompleteWaitTime As Integer = 1
|
||||||
Private ParentFolderUID As String = ""
|
Private ParentFolderUID As String = ""
|
||||||
Private myTempFiles As TempFiles
|
Private myTempFiles As TempFiles
|
||||||
|
|
||||||
|
|||||||
@@ -31,5 +31,5 @@ Imports System.Runtime.InteropServices
|
|||||||
' indem Sie "*" wie unten gezeigt eingeben:
|
' indem Sie "*" wie unten gezeigt eingeben:
|
||||||
' <Assembly: AssemblyVersion("1.0.*")>
|
' <Assembly: AssemblyVersion("1.0.*")>
|
||||||
|
|
||||||
<Assembly: AssemblyVersion("1.9.1.0")>
|
<Assembly: AssemblyVersion("1.9.3.0")>
|
||||||
<Assembly: AssemblyFileVersion("1.9.1.0")>
|
<Assembly: AssemblyFileVersion("1.9.3.0")>
|
||||||
|
|||||||
@@ -34,6 +34,16 @@ Public Class ActionService
|
|||||||
|
|
||||||
Return True
|
Return True
|
||||||
End Function
|
End Function
|
||||||
|
Public Function Resend_Receiver(pEnvelope As Envelope, pmail As String) As Boolean
|
||||||
|
If HistoryService.SetEnvelopeStatus(pEnvelope, Constants.EnvelopeStatus.EnvelopeQueued, pEnvelope.User.Email) = False Then
|
||||||
|
Return False
|
||||||
|
End If
|
||||||
|
Dim oSendResult As Boolean = False
|
||||||
|
For Each oReceiver In pEnvelope.Receivers
|
||||||
|
EmailService.SendDocumentReceivedEmail(pEnvelope, oReceiver)
|
||||||
|
Next
|
||||||
|
Return oSendResult
|
||||||
|
End Function
|
||||||
Public Function ResendReceiver(pEnvelope As Envelope, pReceiver As EnvelopeReceiver) As Boolean
|
Public Function ResendReceiver(pEnvelope As Envelope, pReceiver As EnvelopeReceiver) As Boolean
|
||||||
EmailService.SendDocumentReceivedEmail(pEnvelope, pReceiver)
|
EmailService.SendDocumentReceivedEmail(pEnvelope, pReceiver)
|
||||||
End Function
|
End Function
|
||||||
|
|||||||
@@ -138,6 +138,9 @@
|
|||||||
<data name="Document Could Not Be Saved" xml:space="preserve">
|
<data name="Document Could Not Be Saved" xml:space="preserve">
|
||||||
<value>Document could not be saved!</value>
|
<value>Document could not be saved!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Document forwarded" xml:space="preserve">
|
||||||
|
<value>Document forwarded to receiver: {0}</value>
|
||||||
|
</data>
|
||||||
<data name="Edit Envelope" xml:space="preserve">
|
<data name="Edit Envelope" xml:space="preserve">
|
||||||
<value>Edit Envelope</value>
|
<value>Edit Envelope</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -186,6 +189,9 @@
|
|||||||
<data name="Invalid Email Address" xml:space="preserve">
|
<data name="Invalid Email Address" xml:space="preserve">
|
||||||
<value>Receiver {0} has an invalid Email Address.</value>
|
<value>Receiver {0} has an invalid Email Address.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Invitation successfully resend" xml:space="preserve">
|
||||||
|
<value>Invitation has been send once again!</value>
|
||||||
|
</data>
|
||||||
<data name="Missing Documents" xml:space="preserve">
|
<data name="Missing Documents" xml:space="preserve">
|
||||||
<value>Missing Documents</value>
|
<value>Missing Documents</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -138,6 +138,9 @@
|
|||||||
<data name="Document Could Not Be Saved" xml:space="preserve">
|
<data name="Document Could Not Be Saved" xml:space="preserve">
|
||||||
<value>Dokument konnte nicht gespeichert werden!</value>
|
<value>Dokument konnte nicht gespeichert werden!</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Document forwarded" xml:space="preserve">
|
||||||
|
<value>Umschlag an Empfänger {0} weitergeleitet.</value>
|
||||||
|
</data>
|
||||||
<data name="Edit Envelope" xml:space="preserve">
|
<data name="Edit Envelope" xml:space="preserve">
|
||||||
<value>Bearbeite Umschlag</value>
|
<value>Bearbeite Umschlag</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -186,6 +189,9 @@
|
|||||||
<data name="Invalid Email Address" xml:space="preserve">
|
<data name="Invalid Email Address" xml:space="preserve">
|
||||||
<value>Empfänger {0} hat keine gültige Email Addresse.</value>
|
<value>Empfänger {0} hat keine gültige Email Addresse.</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name="Invitation successfully resend" xml:space="preserve">
|
||||||
|
<value>Die Einladung wurde nochmal versendet!</value>
|
||||||
|
</data>
|
||||||
<data name="Missing Documents" xml:space="preserve">
|
<data name="Missing Documents" xml:space="preserve">
|
||||||
<value>Fehlendes Dokument</value>
|
<value>Fehlendes Dokument</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -127,6 +127,15 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Sucht eine lokalisierte Zeichenfolge, die Umschlag an Empfänger {0} weitergeleitet. ähnelt.
|
||||||
|
'''</summary>
|
||||||
|
Public Shared ReadOnly Property Document_forwarded() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("Document forwarded", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Sucht eine lokalisierte Zeichenfolge, die Bearbeite Umschlag ähnelt.
|
''' Sucht eine lokalisierte Zeichenfolge, die Bearbeite Umschlag ähnelt.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
@@ -271,6 +280,15 @@ Namespace My.Resources
|
|||||||
End Get
|
End Get
|
||||||
End Property
|
End Property
|
||||||
|
|
||||||
|
'''<summary>
|
||||||
|
''' Sucht eine lokalisierte Zeichenfolge, die Die Einladung wurde nochmal versendet! ähnelt.
|
||||||
|
'''</summary>
|
||||||
|
Public Shared ReadOnly Property Invitation_successfully_resend() As String
|
||||||
|
Get
|
||||||
|
Return ResourceManager.GetString("Invitation successfully resend", resourceCulture)
|
||||||
|
End Get
|
||||||
|
End Property
|
||||||
|
|
||||||
'''<summary>
|
'''<summary>
|
||||||
''' Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt.
|
''' Sucht eine lokalisierte Zeichenfolge, die Fehlendes Dokument ähnelt.
|
||||||
'''</summary>
|
'''</summary>
|
||||||
|
|||||||
@@ -1,5 +1,7 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="GdPicture" version="14.2.89" targetFramework="net462" />
|
||||||
|
<package id="GdPicture.runtimes.windows" version="14.2.89" targetFramework="net462" />
|
||||||
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.1" targetFramework="net462" />
|
<package id="Microsoft.Extensions.Logging.Abstractions" version="2.1.1" targetFramework="net462" />
|
||||||
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
<package id="Newtonsoft.Json" version="13.0.3" targetFramework="net462" />
|
||||||
<package id="Quartz" version="3.8.0" targetFramework="net462" />
|
<package id="Quartz" version="3.8.0" targetFramework="net462" />
|
||||||
|
|||||||
@@ -1,43 +1,41 @@
|
|||||||
using System.ComponentModel;
|
using DigitalData.Core.Abstractions;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_CONFIG", Schema = "dbo")]
|
[Table("TBSIG_CONFIG", Schema = "dbo")]
|
||||||
public class Config
|
public class Config : IUnique<int>
|
||||||
{
|
{
|
||||||
[Column("DOCUMENT_PATH", TypeName = "nvarchar(256)")]
|
[Column("DOCUMENT_PATH", TypeName = "nvarchar(256)")]
|
||||||
public string DocumentPath { get; set; }
|
public string? DocumentPath { get; init; }
|
||||||
|
|
||||||
[Column("SENDING_PROFILE", TypeName = "int")]
|
[Column("SENDING_PROFILE", TypeName = "int")]
|
||||||
[Required]
|
[Required]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.None)] // Assuming SENDING_PROFILE is manually entered or controlled by the application logic
|
public required int SendingProfile { get; init; }
|
||||||
[DefaultValue(0)] // This sets the default value for SENDING_PROFILE
|
|
||||||
public int SendingProfile { get; set; }
|
|
||||||
|
|
||||||
[Column("SIGNATURE_HOST", TypeName = "nvarchar(128)")]
|
[Column("SIGNATURE_HOST", TypeName = "nvarchar(128)")]
|
||||||
public string SignatureHost { get; set; }
|
public string? SignatureHost { get; init; }
|
||||||
|
|
||||||
[Column("EXTERNAL_PROGRAM_NAME", TypeName = "nvarchar(30)")]
|
[Column("EXTERNAL_PROGRAM_NAME", TypeName = "nvarchar(30)")]
|
||||||
public string ExternalProgramName { get; set; }
|
public string? ExternalProgramName { get; init; }
|
||||||
|
|
||||||
[Column("EXPORT_PATH", TypeName = "nvarchar(256)")]
|
[Column("EXPORT_PATH", TypeName = "nvarchar(256)")]
|
||||||
public string ExportPath { get; set; }
|
public string? ExportPath { get; init; }
|
||||||
|
|
||||||
[Column("DOCUMENT_PATH_DMZ", TypeName = "nvarchar(512)")]
|
[Column("DOCUMENT_PATH_DMZ", TypeName = "nvarchar(512)")]
|
||||||
[Required]
|
[Required]
|
||||||
[DefaultValue("")] // This sets the default value for DOCUMENT_PATH_DMZ
|
public string? DocumentPathDmz { get; init; }
|
||||||
public string DocumentPathDmz { get; set; }
|
|
||||||
|
|
||||||
[Column("EXPORT_PATH_DMZ", TypeName = "nvarchar(512)")]
|
[Column("EXPORT_PATH_DMZ", TypeName = "nvarchar(512)")]
|
||||||
[Required]
|
[Required]
|
||||||
[DefaultValue("")] // This sets the default value for EXPORT_PATH_DMZ
|
public required string ExportPathDmz { get; init; }
|
||||||
public string ExportPathDmz { get; set; }
|
|
||||||
|
|
||||||
[Column("DOCUMENT_PATH_MOVE_AFTSEND", TypeName = "nvarchar(512)")]
|
[Column("DOCUMENT_PATH_MOVE_AFTSEND", TypeName = "nvarchar(512)")]
|
||||||
[Required]
|
[Required]
|
||||||
[DefaultValue("")] // This sets the default value for DOCUMENT_PATH_MOVE_AFTSEND
|
public required string DocumentPathMoveAftsend { get; init; }
|
||||||
public string DocumentPathMoveAftsend { get; set; }
|
|
||||||
|
[Obsolete("Configuration does not have an ID; it represents a single table in the database.")]
|
||||||
|
public int Id => throw new InvalidOperationException("This configuration does not support an ID as it represents a single table in the database.");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,11 +1,12 @@
|
|||||||
using System.ComponentModel;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT", Schema = "dbo")]
|
[Table("TBSIG_DOCUMENT_RECEIVER_ELEMENT", Schema = "dbo")]
|
||||||
public class DocumentReceiverElement
|
public class DocumentReceiverElement : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")]
|
[Table("TBSIG_DOCUMENT_STATUS", Schema = "dbo")]
|
||||||
public class DocumentStatus
|
public class DocumentStatus : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -27,7 +28,7 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
public DateTime? StatusChangedWhen { get; set; }
|
public DateTime? StatusChangedWhen { get; set; }
|
||||||
|
|
||||||
[Column("VALUE", TypeName = "nvarchar(max)")]
|
[Column("VALUE", TypeName = "nvarchar(max)")]
|
||||||
public string Value { get; set; }
|
public string? Value { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_EMAIL_TEMPLATE", Schema = "dbo")]
|
[Table("TBSIG_EMAIL_TEMPLATE", Schema = "dbo")]
|
||||||
public class EmailTemplate
|
public class EmailTemplate : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -12,12 +13,12 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
public int Id { get; set; }
|
public int Id { get; set; }
|
||||||
|
|
||||||
[Column("NAME", TypeName = "nvarchar(64)")]
|
[Column("NAME", TypeName = "nvarchar(64)")]
|
||||||
public string Name { get; set; }
|
public string? Name { get; set; }
|
||||||
|
|
||||||
[Column("BODY", TypeName = "nvarchar(max)")]
|
[Column("BODY", TypeName = "nvarchar(max)")]
|
||||||
public string Body { get; set; }
|
public string? Body { get; set; }
|
||||||
|
|
||||||
[Column("SUBJECT", TypeName = "nvarchar(512)")]
|
[Column("SUBJECT", TypeName = "nvarchar(512)")]
|
||||||
public string Subject { get; set; }
|
public string? Subject { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,12 +1,12 @@
|
|||||||
using EnvelopeGenerator.Common;
|
using DigitalData.Core.Abstractions;
|
||||||
using EnvelopeGenerator.Common.My.Resources;
|
using EnvelopeGenerator.Common;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE", Schema = "dbo")]
|
[Table("TBSIG_ENVELOPE", Schema = "dbo")]
|
||||||
public class Envelope
|
public class Envelope : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -26,11 +26,11 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ENVELOPE_UUID", TypeName = "nvarchar(36)")]
|
[Column("ENVELOPE_UUID", TypeName = "nvarchar(36)")]
|
||||||
public string Uuid { get; set; }
|
public required string Uuid { get; init; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("MESSAGE", TypeName = "nvarchar(max)")]
|
[Column("MESSAGE", TypeName = "nvarchar(max)")]
|
||||||
public string Message { get; set; }
|
public string? Message { get; set; }
|
||||||
|
|
||||||
[Column("EXPIRES_WHEN", TypeName = "datetime")]
|
[Column("EXPIRES_WHEN", TypeName = "datetime")]
|
||||||
public DateTime? ExpiresWhen { get; set; }
|
public DateTime? ExpiresWhen { get; set; }
|
||||||
@@ -46,13 +46,13 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
public DateTime? ChangedWhen { get; set; }
|
public DateTime? ChangedWhen { get; set; }
|
||||||
|
|
||||||
[Column("TITLE", TypeName = "nvarchar(128)")]
|
[Column("TITLE", TypeName = "nvarchar(128)")]
|
||||||
public string Title { get; set; }
|
public string? Title { get; set; }
|
||||||
|
|
||||||
[Column("CONTRACT_TYPE")]
|
[Column("CONTRACT_TYPE")]
|
||||||
public int? ContractType { get; set; }
|
public int? ContractType { get; set; }
|
||||||
|
|
||||||
[Column("LANGUAGE", TypeName = "nvarchar(5)")]
|
[Column("LANGUAGE", TypeName = "nvarchar(5)")]
|
||||||
public string Language { get; set; }
|
public required string Language { get; set; }
|
||||||
|
|
||||||
[Column("SEND_REMINDER_EMAILS")]
|
[Column("SEND_REMINDER_EMAILS")]
|
||||||
public bool? SendReminderEmails { get; set; }
|
public bool? SendReminderEmails { get; set; }
|
||||||
@@ -84,10 +84,6 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
[Column("EXPIRES_WARNING_WHEN_DAYS")]
|
[Column("EXPIRES_WARNING_WHEN_DAYS")]
|
||||||
public int? ExpiresWarningWhenDays { get; set; }
|
public int? ExpiresWarningWhenDays { get; set; }
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("DMZ_MOVED")]
|
|
||||||
public bool DmzMoved { get; set; }
|
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// The sender of envelope
|
/// The sender of envelope
|
||||||
/// </summary>
|
/// </summary>
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE_CERTIFICATE", Schema = "dbo")]
|
[Table("TBSIG_ENVELOPE_CERTIFICATE", Schema = "dbo")]
|
||||||
public class EnvelopeCertificate
|
public class EnvelopeCertificate : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -17,11 +18,11 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ENVELOPE_UUID", TypeName = "nvarchar(36)")]
|
[Column("ENVELOPE_UUID", TypeName = "nvarchar(36)")]
|
||||||
public string EnvelopeUuid { get; set; }
|
public required string EnvelopeUuid { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ENVELOPE_SUBJECT", TypeName = "nvarchar(512)")]
|
[Column("ENVELOPE_SUBJECT", TypeName = "nvarchar(512)")]
|
||||||
public string EnvelopeSubject { get; set; }
|
public required string EnvelopeSubject { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("CREATOR_ID")]
|
[Column("CREATOR_ID")]
|
||||||
@@ -29,11 +30,11 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("CREATOR_NAME", TypeName = "nvarchar(128)")]
|
[Column("CREATOR_NAME", TypeName = "nvarchar(128)")]
|
||||||
public string CreatorName { get; set; }
|
public required string CreatorName { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("CREATOR_EMAIL", TypeName = "nvarchar(128)")]
|
[Column("CREATOR_EMAIL", TypeName = "nvarchar(128)")]
|
||||||
public string CreatorEmail { get; set; }
|
public required string CreatorEmail { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ENVELOPE_STATUS")]
|
[Column("ENVELOPE_STATUS")]
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE_DOCUMENT", Schema = "dbo")]
|
[Table("TBSIG_ENVELOPE_DOCUMENT", Schema = "dbo")]
|
||||||
public class EnvelopeDocument
|
public class EnvelopeDocument : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -17,18 +18,21 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("FILENAME", TypeName = "nvarchar(256)")]
|
[Column("FILENAME", TypeName = "nvarchar(256)")]
|
||||||
public string Filename { get; set; }
|
public required string Filename { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("FILEPATH", TypeName = "nvarchar(256)")]
|
[Column("FILEPATH", TypeName = "nvarchar(256)")]
|
||||||
public string Filepath { get; set; }
|
public required string Filepath { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime AddedWhen { get; set; }
|
public required DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
[Column("FILENAME_ORIGINAL", TypeName = "nvarchar(256)")]
|
[Column("FILENAME_ORIGINAL", TypeName = "nvarchar(256)")]
|
||||||
public string FilenameOriginal { get; set; }
|
public required string FilenameOriginal { get; set; }
|
||||||
|
|
||||||
|
[Column("BYTE_DATA", TypeName = "varbinary(max)")]
|
||||||
|
public byte[]? ByteData { get; init; }
|
||||||
|
|
||||||
public IEnumerable<DocumentReceiverElement>? Elements { get; set; }
|
public IEnumerable<DocumentReceiverElement>? Elements { get; set; }
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -1,4 +1,5 @@
|
|||||||
using DigitalData.UserManager.Domain.Entities;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using DigitalData.UserManager.Domain.Entities;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using static EnvelopeGenerator.Common.Constants;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
@@ -6,7 +7,7 @@ using static EnvelopeGenerator.Common.Constants;
|
|||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")]
|
[Table("TBSIG_ENVELOPE_HISTORY", Schema = "dbo")]
|
||||||
public class EnvelopeHistory
|
public class EnvelopeHistory : IUnique<long>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -19,7 +20,7 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("USER_REFERENCE", TypeName = "nvarchar(128)")]
|
[Column("USER_REFERENCE", TypeName = "nvarchar(128)")]
|
||||||
public string UserReference { get; set; }
|
public required string UserReference { get; init; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("STATUS")]
|
[Column("STATUS")]
|
||||||
@@ -43,11 +44,17 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
public virtual Receiver? Receiver { get; set; }
|
public virtual Receiver? Receiver { get; set; }
|
||||||
|
|
||||||
[NotMapped]
|
[NotMapped]
|
||||||
public ReferenceType ReferenceType => (Status / 3) switch
|
public ReferenceType ReferenceType => (Status / 1000) switch
|
||||||
{
|
{
|
||||||
1 => ReferenceType.Sender,
|
1 => ReferenceType.Sender,
|
||||||
2 or 3 => ReferenceType.Receiver,
|
2 or 3 => ReferenceType.Receiver,
|
||||||
_ => ReferenceType.Unknown,
|
_ => ReferenceType.Unknown,
|
||||||
};
|
};
|
||||||
|
|
||||||
|
[NotMapped]
|
||||||
|
public string? StatusName
|
||||||
|
=> (Enum.IsDefined(typeof(EnvelopeStatus), Status))
|
||||||
|
? Enum.GetName(typeof(EnvelopeStatus), Status)
|
||||||
|
: null;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,45 +1,10 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")]
|
[Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")]
|
||||||
public class EnvelopeReceiver
|
public class EnvelopeReceiver : EnvelopeReceiverBase
|
||||||
{
|
{
|
||||||
[Key]
|
|
||||||
[Column("ENVELOPE_ID")]
|
|
||||||
public int EnvelopeId { get; set; }
|
|
||||||
|
|
||||||
[Key]
|
|
||||||
[Column("RECEIVER_ID")]
|
|
||||||
public int ReceiverId { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("SEQUENCE")]
|
|
||||||
public int Sequence { get; set; }
|
|
||||||
|
|
||||||
[Column("NAME", TypeName = "nvarchar(128)")]
|
|
||||||
public string? Name { get; set; }
|
|
||||||
|
|
||||||
[Column("JOB_TITLE", TypeName = "nvarchar(128)")]
|
|
||||||
public string? JobTitle { get; set; }
|
|
||||||
|
|
||||||
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
|
||||||
public string? CompanyName { get; set; }
|
|
||||||
|
|
||||||
[Column("PRIVATE_MESSAGE", TypeName = "nvarchar(max)")]
|
|
||||||
public string? PrivateMessage { get; set; }
|
|
||||||
|
|
||||||
[Column("ACCESS_CODE", TypeName = "nvarchar(64)")]
|
|
||||||
public string? AccessCode { get; set; }
|
|
||||||
|
|
||||||
[Required]
|
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
|
||||||
public DateTime AddedWhen { get; set; }
|
|
||||||
|
|
||||||
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
|
||||||
public DateTime? ChangedWhen { get; set; }
|
|
||||||
|
|
||||||
[ForeignKey("EnvelopeId")]
|
[ForeignKey("EnvelopeId")]
|
||||||
public Envelope? Envelope { get; set; }
|
public Envelope? Envelope { get; set; }
|
||||||
|
|
||||||
|
|||||||
46
EnvelopeGenerator.Domain/Entities/EnvelopeReceiverBase.cs
Normal file
46
EnvelopeGenerator.Domain/Entities/EnvelopeReceiverBase.cs
Normal file
@@ -0,0 +1,46 @@
|
|||||||
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
|
{
|
||||||
|
[Table("TBSIG_ENVELOPE_RECEIVER", Schema = "dbo")]
|
||||||
|
public class EnvelopeReceiverBase : IUnique<(int Envelope, int Receiver)>
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[Column("ENVELOPE_ID")]
|
||||||
|
public int EnvelopeId { get; set; }
|
||||||
|
|
||||||
|
[Key]
|
||||||
|
[Column("RECEIVER_ID")]
|
||||||
|
public int ReceiverId { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("SEQUENCE")]
|
||||||
|
public int Sequence { get; set; }
|
||||||
|
|
||||||
|
[Column("NAME", TypeName = "nvarchar(128)")]
|
||||||
|
public string? Name { get; set; }
|
||||||
|
|
||||||
|
[Column("JOB_TITLE", TypeName = "nvarchar(128)")]
|
||||||
|
public string? JobTitle { get; set; }
|
||||||
|
|
||||||
|
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
||||||
|
public string? CompanyName { get; set; }
|
||||||
|
|
||||||
|
[Column("PRIVATE_MESSAGE", TypeName = "nvarchar(max)")]
|
||||||
|
public string? PrivateMessage { get; set; }
|
||||||
|
|
||||||
|
[Column("ACCESS_CODE", TypeName = "nvarchar(64)")]
|
||||||
|
public string? AccessCode { get; set; }
|
||||||
|
|
||||||
|
[Required]
|
||||||
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
|
[Column("CHANGED_WHEN", TypeName = "datetime")]
|
||||||
|
public DateTime? ChangedWhen { get; set; }
|
||||||
|
|
||||||
|
public (int Envelope, int Receiver) Id => (Envelope: EnvelopeId, Receiver: ReceiverId);
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
|
using DigitalData.Core.Abstractions;
|
||||||
|
using DigitalData.EmailProfilerDispatcher.Abstraction.Attributes;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
|
{
|
||||||
|
[Table("TBSIG_ENVELOPE_RECEIVER_READ_ONLY")]
|
||||||
|
public class EnvelopeReceiverReadOnly : IUnique<long>
|
||||||
|
{
|
||||||
|
[Key]
|
||||||
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
|
[Column("GUID")]
|
||||||
|
public long Id { get; init; }
|
||||||
|
|
||||||
|
[Column("ENVELOPE_ID")]
|
||||||
|
[Required]
|
||||||
|
public long EnvelopeId { get; init; }
|
||||||
|
|
||||||
|
//TODO: remove NotMapped attribute when EnvelopeId data type is standardized
|
||||||
|
[NotMapped]
|
||||||
|
public Envelope? Envelope { get; set; }
|
||||||
|
|
||||||
|
[Column("RECEIVER_MAIL")]
|
||||||
|
[Required]
|
||||||
|
[StringLength(250)]
|
||||||
|
[TemplatePlaceholder("NAME_RECEIVER")]
|
||||||
|
public required string ReceiverMail { get; init; }
|
||||||
|
|
||||||
|
[Column("DATE_VALID")]
|
||||||
|
[Required]
|
||||||
|
public DateTime DateValid { get; init; }
|
||||||
|
|
||||||
|
[Column("ADDED_WHO")]
|
||||||
|
[Required]
|
||||||
|
[StringLength(100)]
|
||||||
|
public required string AddedWho { get; init; }
|
||||||
|
|
||||||
|
public Receiver? Receiver { get; init; }
|
||||||
|
|
||||||
|
[Column("ADDED_WHEN")]
|
||||||
|
[Required]
|
||||||
|
public DateTime AddedWhen { get; init; }
|
||||||
|
|
||||||
|
[Column("CHANGED_WHO")]
|
||||||
|
[StringLength(100)]
|
||||||
|
public string? ChangedWho { get; init; }
|
||||||
|
|
||||||
|
[Column("CHANGED_WHEN")]
|
||||||
|
public DateTime? ChangedWhen { get; init; }
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -1,12 +1,11 @@
|
|||||||
using System;
|
using DigitalData.Core.Abstractions;
|
||||||
using System.ComponentModel.DataAnnotations;
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
using EnvelopeGenerator.Domain.Entities;
|
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_ENVELOPE_TYPE", Schema = "dbo")]
|
[Table("TBSIG_ENVELOPE_TYPE", Schema = "dbo")]
|
||||||
public class EnvelopeType
|
public class EnvelopeType : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -15,10 +14,10 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("TITLE", TypeName = "nvarchar(128)")]
|
[Column("TITLE", TypeName = "nvarchar(128)")]
|
||||||
public string Title { get; set; }
|
public required string Title { get; set; }
|
||||||
|
|
||||||
[Column("LANGUAGE", TypeName = "nvarchar(5)")]
|
[Column("LANGUAGE", TypeName = "nvarchar(5)")]
|
||||||
public string Language { get; set; }
|
public string? Language { get; set; }
|
||||||
|
|
||||||
[Column("EXPIRES_DAYS")]
|
[Column("EXPIRES_DAYS")]
|
||||||
public int? ExpiresDays { get; set; }
|
public int? ExpiresDays { get; set; }
|
||||||
|
|||||||
@@ -1,10 +1,11 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_RECEIVER", Schema = "dbo")]
|
[Table("TBSIG_RECEIVER", Schema = "dbo")]
|
||||||
public class Receiver
|
public class Receiver : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -22,5 +23,7 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
[Required]
|
[Required]
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime AddedWhen { get; set; }
|
public DateTime AddedWhen { get; set; }
|
||||||
|
|
||||||
|
public IEnumerable<EnvelopeReceiver>? EnvelopeReceivers { get; init; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -1,10 +1,11 @@
|
|||||||
using System.ComponentModel.DataAnnotations;
|
using DigitalData.Core.Abstractions;
|
||||||
|
using System.ComponentModel.DataAnnotations;
|
||||||
using System.ComponentModel.DataAnnotations.Schema;
|
using System.ComponentModel.DataAnnotations.Schema;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Domain.Entities
|
namespace EnvelopeGenerator.Domain.Entities
|
||||||
{
|
{
|
||||||
[Table("TBSIG_USER_RECEIVER", Schema = "dbo")]
|
[Table("TBSIG_USER_RECEIVER", Schema = "dbo")]
|
||||||
public class UserReceiver
|
public class UserReceiver : IUnique<int>
|
||||||
{
|
{
|
||||||
[Key]
|
[Key]
|
||||||
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
|
||||||
@@ -21,16 +22,16 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("NAME", TypeName = "nvarchar(128)")]
|
[Column("NAME", TypeName = "nvarchar(128)")]
|
||||||
public string Name { get; set; }
|
public required string Name { get; set; }
|
||||||
|
|
||||||
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
[Column("COMPANY_NAME", TypeName = "nvarchar(128)")]
|
||||||
public string CompanyName { get; set; }
|
public string? CompanyName { get; set; }
|
||||||
|
|
||||||
[Column("JOB_TITLE", TypeName = "nvarchar(128)")]
|
[Column("JOB_TITLE", TypeName = "nvarchar(128)")]
|
||||||
public string JobTitle { get; set; }
|
public string? JobTitle { get; set; }
|
||||||
|
|
||||||
[Required]
|
[Required]
|
||||||
[Column("ADDED_WHEN", TypeName = "datetime")]
|
[Column("ADDED_WHEN", TypeName = "datetime")]
|
||||||
public DateTime AddedWhen { get; set; }
|
public required DateTime AddedWhen { get; init; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -7,6 +7,7 @@
|
|||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
|
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<PackageReference Include="DigitalData.Core.Abstractions" Version="2.0.0" />
|
||||||
<PackageReference Include="DigitalData.EmailProfilerDispatcher.Abstraction" Version="1.0.0" />
|
<PackageReference Include="DigitalData.EmailProfilerDispatcher.Abstraction" Version="1.0.0" />
|
||||||
<PackageReference Include="UserManager.Domain" Version="1.0.0" />
|
<PackageReference Include="UserManager.Domain" Version="1.0.0" />
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
|
|||||||
@@ -1,12 +1,9 @@
|
|||||||
using Microsoft.Extensions.Logging;
|
using System.Text;
|
||||||
using System.Text;
|
using static EnvelopeGenerator.Common.Constants;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Application
|
namespace EnvelopeGenerator.Extensions
|
||||||
{
|
{
|
||||||
/// <summary>
|
public static class DecodingExtensions
|
||||||
/// Provides extension methods for decoding and extracting information from an envelope receiver ID.
|
|
||||||
/// </summary>
|
|
||||||
public static class EnvelopeGeneratorExtensions
|
|
||||||
{
|
{
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Validates whether a given string is a correctly formatted Base-64 encoded string.
|
/// Validates whether a given string is a correctly formatted Base-64 encoded string.
|
||||||
@@ -67,6 +64,40 @@ namespace EnvelopeGenerator.Application
|
|||||||
return input.IndexOf('=') == -1; // No padding allowed except at the end
|
return input.IndexOf('=') == -1; // No padding allowed except at the end
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static bool TryDecode(this string encodedKey, out string[] decodedKeys)
|
||||||
|
{
|
||||||
|
try
|
||||||
|
{
|
||||||
|
byte[] bytes = Convert.FromBase64String(encodedKey);
|
||||||
|
string decodedString = Encoding.UTF8.GetString(bytes);
|
||||||
|
decodedKeys = decodedString.Split(new string[] { "::" }, StringSplitOptions.None);
|
||||||
|
return true;
|
||||||
|
}
|
||||||
|
catch(ArgumentNullException) { }
|
||||||
|
catch (FormatException) { }
|
||||||
|
catch(ArgumentException) { }
|
||||||
|
|
||||||
|
decodedKeys = Array.Empty<string>();
|
||||||
|
return false;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static EncodeType GetEncodeType(this string[] decodedKeys) => decodedKeys.Length switch
|
||||||
|
{
|
||||||
|
2 => EncodeType.EnvelopeReceiver,
|
||||||
|
3 => long.TryParse(decodedKeys[1], out var _) ? EncodeType.EnvelopeReceiverReadOnly : EncodeType.Undefined,
|
||||||
|
_ => EncodeType.Undefined,
|
||||||
|
};
|
||||||
|
|
||||||
|
public static (string? EnvelopeUuid, string? ReceiverSignature) ParseEnvelopeReceiverId(this string[] decodedKeys)
|
||||||
|
=> decodedKeys.GetEncodeType() == EncodeType.EnvelopeReceiver
|
||||||
|
? (EnvelopeUuid: decodedKeys[0], ReceiverSignature: decodedKeys[1])
|
||||||
|
: throw new InvalidOperationException("Attempted to convert a decoded other than type EnvelopeReceiver to EnvelopeReceiver.");
|
||||||
|
|
||||||
|
public static long ParseReadOnlyId(this string[] decodedKeys)
|
||||||
|
=> decodedKeys.GetEncodeType() == EncodeType.EnvelopeReceiverReadOnly
|
||||||
|
? long.Parse(decodedKeys[1])
|
||||||
|
: throw new InvalidOperationException("Attempted to convert a decoded other than type EnvelopeReceiver to EnvelopeReceiver. ");
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Decodes the envelope receiver ID and extracts the envelope UUID and receiver signature.
|
/// Decodes the envelope receiver ID and extracts the envelope UUID and receiver signature.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -79,7 +110,7 @@ namespace EnvelopeGenerator.Application
|
|||||||
return (null, null);
|
return (null, null);
|
||||||
}
|
}
|
||||||
byte[] bytes = Convert.FromBase64String(envelopeReceiverId);
|
byte[] bytes = Convert.FromBase64String(envelopeReceiverId);
|
||||||
string decodedString = System.Text.Encoding.UTF8.GetString(bytes);
|
string decodedString = Encoding.UTF8.GetString(bytes);
|
||||||
string[] parts = decodedString.Split(new string[] { "::" }, StringSplitOptions.None);
|
string[] parts = decodedString.Split(new string[] { "::" }, StringSplitOptions.None);
|
||||||
|
|
||||||
if (parts.Length > 1)
|
if (parts.Length > 1)
|
||||||
@@ -88,6 +119,22 @@ namespace EnvelopeGenerator.Application
|
|||||||
return (string.Empty, string.Empty);
|
return (string.Empty, string.Empty);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public static long? DecodeEnvelopeReceiverReadOnlyId(this string envelopeReceiverReadOnlyId)
|
||||||
|
{
|
||||||
|
if (!envelopeReceiverReadOnlyId.IsBase64String())
|
||||||
|
{
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
byte[] bytes = Convert.FromBase64String(envelopeReceiverReadOnlyId);
|
||||||
|
string decodedString = System.Text.Encoding.UTF8.GetString(bytes);
|
||||||
|
string[] parts = decodedString.Split(new string[] { "::" }, StringSplitOptions.None);
|
||||||
|
|
||||||
|
if (parts.Length > 2)
|
||||||
|
return long.TryParse(parts[1], out long readOnlyId) ? readOnlyId : null;
|
||||||
|
else
|
||||||
|
return null;
|
||||||
|
}
|
||||||
|
|
||||||
/// <summary>
|
/// <summary>
|
||||||
/// Gets the envelope UUID from the decoded envelope receiver ID.
|
/// Gets the envelope UUID from the decoded envelope receiver ID.
|
||||||
/// </summary>
|
/// </summary>
|
||||||
@@ -101,48 +148,5 @@ namespace EnvelopeGenerator.Application
|
|||||||
/// <param name="envelopeReceiverId">The base64 encoded string to decode.</param>
|
/// <param name="envelopeReceiverId">The base64 encoded string to decode.</param>
|
||||||
/// <returns>The receiver signature.</returns>
|
/// <returns>The receiver signature.</returns>
|
||||||
public static string? GetReceiverSignature(this string envelopeReceiverId) => envelopeReceiverId.DecodeEnvelopeReceiverId().ReceiverSignature;
|
public static string? GetReceiverSignature(this string envelopeReceiverId) => envelopeReceiverId.DecodeEnvelopeReceiverId().ReceiverSignature;
|
||||||
|
|
||||||
public static string EncodeEnvelopeReceiverId(this (string envelopeUuid, string receiverSignature) input)
|
|
||||||
{
|
|
||||||
string combinedString = $"{input.envelopeUuid}::{input.receiverSignature}";
|
|
||||||
byte[] bytes = Encoding.UTF8.GetBytes(combinedString);
|
|
||||||
string base64String = Convert.ToBase64String(bytes);
|
|
||||||
|
|
||||||
return base64String;
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void LogEnvelopeError(this ILogger logger, string envelopeReceiverId, Exception? exception = null, string? message = null, params object?[] args)
|
|
||||||
{
|
|
||||||
var sb = new StringBuilder().AppendLine(envelopeReceiverId.DecodeEnvelopeReceiverId().ToTitle());
|
|
||||||
|
|
||||||
if (message is not null)
|
|
||||||
sb.AppendLine(message);
|
|
||||||
|
|
||||||
if(exception is null)
|
|
||||||
logger.Log(LogLevel.Error, sb.ToString(), args);
|
|
||||||
else
|
|
||||||
logger.Log(LogLevel.Error, exception, sb.AppendLine(exception.Message).ToString(), args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static void LogEnvelopeError(this ILogger logger, string? uuid, string? signature = null, Exception? exception = null, string? message = null, params object?[] args)
|
|
||||||
{
|
|
||||||
var sb = new StringBuilder($"Envelope Uuid: {uuid}");
|
|
||||||
|
|
||||||
if(signature is not null)
|
|
||||||
sb.AppendLine().Append($"Receiver Signature: {signature}");
|
|
||||||
|
|
||||||
if (message is not null)
|
|
||||||
sb.AppendLine().Append(message);
|
|
||||||
|
|
||||||
if (exception is null)
|
|
||||||
logger.Log(LogLevel.Error, sb.ToString(), args);
|
|
||||||
else
|
|
||||||
logger.Log(LogLevel.Error, exception, sb.ToString(), args);
|
|
||||||
}
|
|
||||||
|
|
||||||
public static string ToTitle(this (string? UUID, string? Signature) envelopeReceiverTuple)
|
|
||||||
{
|
|
||||||
return $"UUID is {envelopeReceiverTuple.UUID} and signature is {envelopeReceiverTuple.Signature}";
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
30
EnvelopeGenerator.Extensions/EncodingExtensions.cs
Normal file
30
EnvelopeGenerator.Extensions/EncodingExtensions.cs
Normal file
@@ -0,0 +1,30 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Extensions
|
||||||
|
{
|
||||||
|
/// <summary>
|
||||||
|
/// Provides extension methods for decoding and extracting information from an envelope receiver ID.
|
||||||
|
/// </summary>
|
||||||
|
public static class EncodingExtensions
|
||||||
|
{
|
||||||
|
public static string EncodeEnvelopeReceiverId(this long readOnlyId)
|
||||||
|
{
|
||||||
|
//The random number is used as a salt to increase security but it is not saved in the database.
|
||||||
|
string combinedString = $"{Random.Shared.Next()}::{readOnlyId}::{Random.Shared.Next()}";
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(combinedString);
|
||||||
|
string base64String = Convert.ToBase64String(bytes);
|
||||||
|
|
||||||
|
return base64String;
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string EncodeEnvelopeReceiverId(this (string envelopeUuid, string receiverSignature) input)
|
||||||
|
{
|
||||||
|
string combinedString = $"{input.envelopeUuid}::{input.receiverSignature}";
|
||||||
|
byte[] bytes = Encoding.UTF8.GetBytes(combinedString);
|
||||||
|
string base64String = Convert.ToBase64String(bytes);
|
||||||
|
|
||||||
|
return base64String;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,19 @@
|
|||||||
|
<Project Sdk="Microsoft.NET.Sdk">
|
||||||
|
|
||||||
|
<PropertyGroup>
|
||||||
|
<TargetFramework>net7.0</TargetFramework>
|
||||||
|
<ImplicitUsings>enable</ImplicitUsings>
|
||||||
|
<Nullable>enable</Nullable>
|
||||||
|
</PropertyGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<PackageReference Include="HtmlSanitizer" Version="8.0.865" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Localization.Abstractions" Version="7.0.19" />
|
||||||
|
<PackageReference Include="Microsoft.Extensions.Logging" Version="8.0.0" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
<ItemGroup>
|
||||||
|
<ProjectReference Include="..\EnvelopeGenerator.Common\EnvelopeGenerator.Common.vbproj" />
|
||||||
|
</ItemGroup>
|
||||||
|
|
||||||
|
</Project>
|
||||||
42
EnvelopeGenerator.Extensions/LoggerExtensions.cs
Normal file
42
EnvelopeGenerator.Extensions/LoggerExtensions.cs
Normal file
@@ -0,0 +1,42 @@
|
|||||||
|
using Microsoft.Extensions.Logging;
|
||||||
|
using System.Text;
|
||||||
|
|
||||||
|
namespace EnvelopeGenerator.Extensions
|
||||||
|
{
|
||||||
|
public static class LoggerExtensions
|
||||||
|
{
|
||||||
|
public static void LogEnvelopeError(this ILogger logger, string envelopeReceiverId, Exception? exception = null, string? message = null, params object?[] args)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder().AppendLine(envelopeReceiverId.DecodeEnvelopeReceiverId().ToTitle());
|
||||||
|
|
||||||
|
if (message is not null)
|
||||||
|
sb.AppendLine(message);
|
||||||
|
|
||||||
|
if (exception is null)
|
||||||
|
logger.Log(LogLevel.Error, sb.ToString(), args);
|
||||||
|
else
|
||||||
|
logger.Log(LogLevel.Error, exception, sb.AppendLine(exception.Message).ToString(), args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static void LogEnvelopeError(this ILogger logger, string? uuid, string? signature = null, Exception? exception = null, string? message = null, params object?[] args)
|
||||||
|
{
|
||||||
|
var sb = new StringBuilder($"Envelope Uuid: {uuid}");
|
||||||
|
|
||||||
|
if (signature is not null)
|
||||||
|
sb.AppendLine().Append($"Receiver Signature: {signature}");
|
||||||
|
|
||||||
|
if (message is not null)
|
||||||
|
sb.AppendLine().Append(message);
|
||||||
|
|
||||||
|
if (exception is null)
|
||||||
|
logger.Log(LogLevel.Error, sb.ToString(), args);
|
||||||
|
else
|
||||||
|
logger.Log(LogLevel.Error, exception, sb.ToString(), args);
|
||||||
|
}
|
||||||
|
|
||||||
|
public static string ToTitle(this (string? UUID, string? Signature) envelopeReceiverTuple)
|
||||||
|
{
|
||||||
|
return $"UUID is {envelopeReceiverTuple.UUID} and signature is {envelopeReceiverTuple.Signature}";
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -2,7 +2,7 @@
|
|||||||
using Microsoft.Extensions.Localization;
|
using Microsoft.Extensions.Localization;
|
||||||
using System.Text.Encodings.Web;
|
using System.Text.Encodings.Web;
|
||||||
|
|
||||||
namespace EnvelopeGenerator.Web
|
namespace EnvelopeGenerator.Extensions
|
||||||
{
|
{
|
||||||
public static class XSSExtensions
|
public static class XSSExtensions
|
||||||
{
|
{
|
||||||
@@ -158,6 +158,7 @@ Public Class EnvelopeEditorController
|
|||||||
Dim oTempFilePath = Path.Combine(oTempFiles.TempPath, Guid.NewGuid().ToString + oFileInfo.Extension)
|
Dim oTempFilePath = Path.Combine(oTempFiles.TempPath, Guid.NewGuid().ToString + oFileInfo.Extension)
|
||||||
|
|
||||||
Await Helpers.CopyFileAsync(oFileInfo.FullName, oTempFilePath)
|
Await Helpers.CopyFileAsync(oFileInfo.FullName, oTempFilePath)
|
||||||
|
|
||||||
'File.Copy(oFileInfo.FullName, oTempFilePath, True)
|
'File.Copy(oFileInfo.FullName, oTempFilePath, True)
|
||||||
|
|
||||||
Dim oFileInfoTemp = New FileInfo(oTempFilePath)
|
Dim oFileInfoTemp = New FileInfo(oTempFilePath)
|
||||||
@@ -175,6 +176,7 @@ Public Class EnvelopeEditorController
|
|||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
Logger.Error(ex)
|
Logger.Error(ex)
|
||||||
|
Logger.Warn($"error in CreateDocument: {ex.Message}")
|
||||||
Return Nothing
|
Return Nothing
|
||||||
End Try
|
End Try
|
||||||
End Function
|
End Function
|
||||||
@@ -288,7 +290,9 @@ Public Class EnvelopeEditorController
|
|||||||
#End Region
|
#End Region
|
||||||
Private Function GetEnvelopePath(pEnvelope As Envelope) As String
|
Private Function GetEnvelopePath(pEnvelope As Envelope) As String
|
||||||
Try
|
Try
|
||||||
Dim oEnvelopePath As String = Path.Combine(State.DbConfig.DocumentPath, pEnvelope.Uuid)
|
Dim oTempFiles As New TempFiles(State.LogConfig)
|
||||||
|
Dim oTempFolderPath = oTempFiles.TempPath
|
||||||
|
Dim oEnvelopePath As String = Path.Combine(oTempFolderPath, pEnvelope.Uuid)
|
||||||
|
|
||||||
If Not Directory.Exists(oEnvelopePath) Then
|
If Not Directory.Exists(oEnvelopePath) Then
|
||||||
Directory.CreateDirectory(oEnvelopePath)
|
Directory.CreateDirectory(oEnvelopePath)
|
||||||
|
|||||||
BIN
EnvelopeGenerator.Form/DD_signFLOW_ICON.ico
Normal file
BIN
EnvelopeGenerator.Form/DD_signFLOW_ICON.ico
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 5.5 KiB |
@@ -14,6 +14,8 @@
|
|||||||
<OptionCompare>Binary</OptionCompare>
|
<OptionCompare>Binary</OptionCompare>
|
||||||
<OptionStrict>Off</OptionStrict>
|
<OptionStrict>Off</OptionStrict>
|
||||||
<OptionInfer>On</OptionInfer>
|
<OptionInfer>On</OptionInfer>
|
||||||
|
<NuGetPackageImportStamp>
|
||||||
|
</NuGetPackageImportStamp>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
<PropertyGroup Condition=" '$(Configuration)|$(Platform)' == 'Debug|AnyCPU' ">
|
||||||
<PlatformTarget>AnyCPU</PlatformTarget>
|
<PlatformTarget>AnyCPU</PlatformTarget>
|
||||||
@@ -41,7 +43,10 @@
|
|||||||
<StartupObject>EnvelopeGenerator.Form.My.MyApplication</StartupObject>
|
<StartupObject>EnvelopeGenerator.Form.My.MyApplication</StartupObject>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<PropertyGroup>
|
<PropertyGroup>
|
||||||
<ApplicationIcon>DD_signFLOW_icon_256.ico</ApplicationIcon>
|
<ApplicationIcon>DD_signFLOW_ICON.ico</ApplicationIcon>
|
||||||
|
</PropertyGroup>
|
||||||
|
<PropertyGroup>
|
||||||
|
<AutoGenerateBindingRedirects>true</AutoGenerateBindingRedirects>
|
||||||
</PropertyGroup>
|
</PropertyGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
<Reference Include="Accessibility" />
|
<Reference Include="Accessibility" />
|
||||||
@@ -66,8 +71,9 @@
|
|||||||
<Reference Include="DevExpress.XtraNavBar.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
<Reference Include="DevExpress.XtraNavBar.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a, processorArchitecture=MSIL" />
|
||||||
<Reference Include="DevExpress.XtraPrinting.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
<Reference Include="DevExpress.XtraPrinting.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
<Reference Include="DevExpress.XtraTreeList.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
<Reference Include="DevExpress.XtraTreeList.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a" />
|
||||||
<Reference Include="DigitalData.Controls.DocumentViewer">
|
<Reference Include="DigitalData.Controls.DocumentViewer, Version=1.9.4.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\..\DDMonorepo\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\2_DLL Projekte\DDMonorepo\Controls.DocumentViewer\bin\Debug\DigitalData.Controls.DocumentViewer.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.GUIs.Common">
|
<Reference Include="DigitalData.GUIs.Common">
|
||||||
<HintPath>..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll</HintPath>
|
<HintPath>..\..\DDMonorepo\GUIs.Common\bin\Debug\DigitalData.GUIs.Common.dll</HintPath>
|
||||||
@@ -75,21 +81,27 @@
|
|||||||
<Reference Include="DigitalData.Modules.Base">
|
<Reference Include="DigitalData.Modules.Base">
|
||||||
<HintPath>..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
<HintPath>..\..\DDModules\Base\bin\Debug\DigitalData.Modules.Base.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Config">
|
<Reference Include="DigitalData.Modules.Config, Version=1.2.2.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\..\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\2_DLL Projekte\DDModules\Config\bin\Debug\DigitalData.Modules.Config.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Database">
|
<Reference Include="DigitalData.Modules.Database, Version=2.3.5.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\..\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\2_DLL Projekte\DDModules\Database\bin\Debug\DigitalData.Modules.Database.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="DigitalData.Modules.Logging">
|
<Reference Include="DigitalData.Modules.Logging, Version=2.6.3.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<HintPath>..\..\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
|
<HintPath>..\..\2_DLL Projekte\DDModules\Logging\bin\Debug\DigitalData.Modules.Logging.dll</HintPath>
|
||||||
|
</Reference>
|
||||||
|
<Reference Include="DigitalData.Modules.Messaging">
|
||||||
|
<HintPath>..\..\2_DLL Projekte\DDModules\Messaging\bin\Debug\DigitalData.Modules.Messaging.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="EnvelopeGenerator.Common, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
<Reference Include="EnvelopeGenerator.Common, Version=1.8.0.0, Culture=neutral, processorArchitecture=MSIL">
|
||||||
<SpecificVersion>False</SpecificVersion>
|
<SpecificVersion>False</SpecificVersion>
|
||||||
<HintPath>..\EnvelopeGenerator.Common\bin\Debug\EnvelopeGenerator.Common.dll</HintPath>
|
<HintPath>..\EnvelopeGenerator.Common\bin\Debug\EnvelopeGenerator.Common.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="GdPicture.NET.14">
|
<Reference Include="GdPicture.NET.14, Version=14.2.90.0, Culture=neutral, PublicKeyToken=f52a2e60ad468dbb, processorArchitecture=MSIL">
|
||||||
<HintPath>D:\ProgramFiles\GdPicture.NET 14\Redist\GdPicture.NET (.NET Framework 4.5)\GdPicture.NET.14.dll</HintPath>
|
<HintPath>..\packages\GdPicture.14.2.90\lib\net462\GdPicture.NET.14.dll</HintPath>
|
||||||
</Reference>
|
</Reference>
|
||||||
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
<Reference Include="NLog, Version=5.0.0.0, Culture=neutral, PublicKeyToken=5120e14c03d0593c, processorArchitecture=MSIL">
|
||||||
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
<HintPath>..\packages\NLog.5.0.5\lib\net46\NLog.dll</HintPath>
|
||||||
@@ -180,6 +192,7 @@
|
|||||||
<Compile Include="My Project\AssemblyInfo.vb" />
|
<Compile Include="My Project\AssemblyInfo.vb" />
|
||||||
<EmbeddedResource Include="frmEnvelopeEditor.en.resx">
|
<EmbeddedResource Include="frmEnvelopeEditor.en.resx">
|
||||||
<DependentUpon>frmEnvelopeEditor.vb</DependentUpon>
|
<DependentUpon>frmEnvelopeEditor.vb</DependentUpon>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="frmEnvelopeEditor.resx">
|
<EmbeddedResource Include="frmEnvelopeEditor.resx">
|
||||||
<DependentUpon>frmEnvelopeEditor.vb</DependentUpon>
|
<DependentUpon>frmEnvelopeEditor.vb</DependentUpon>
|
||||||
@@ -194,6 +207,7 @@
|
|||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="frmFieldEditor.en.resx">
|
<EmbeddedResource Include="frmFieldEditor.en.resx">
|
||||||
<DependentUpon>frmFieldEditor.vb</DependentUpon>
|
<DependentUpon>frmFieldEditor.vb</DependentUpon>
|
||||||
|
<SubType>Designer</SubType>
|
||||||
</EmbeddedResource>
|
</EmbeddedResource>
|
||||||
<EmbeddedResource Include="frmFieldEditor.resx">
|
<EmbeddedResource Include="frmFieldEditor.resx">
|
||||||
<DependentUpon>frmFieldEditor.vb</DependentUpon>
|
<DependentUpon>frmFieldEditor.vb</DependentUpon>
|
||||||
@@ -244,6 +258,7 @@
|
|||||||
</None>
|
</None>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<ItemGroup>
|
<ItemGroup>
|
||||||
|
<Content Include="DD_signFLOW_ICON.ico" />
|
||||||
<Content Include="DD_signFLOW_icon_256.ico" />
|
<Content Include="DD_signFLOW_icon_256.ico" />
|
||||||
<Content Include="DD_signFLOW_Preloader.png" />
|
<Content Include="DD_signFLOW_Preloader.png" />
|
||||||
<Content Include="MailLicense.xml">
|
<Content Include="MailLicense.xml">
|
||||||
@@ -257,6 +272,13 @@
|
|||||||
</ProjectReference>
|
</ProjectReference>
|
||||||
</ItemGroup>
|
</ItemGroup>
|
||||||
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
<Import Project="$(MSBuildToolsPath)\Microsoft.VisualBasic.targets" />
|
||||||
|
<Import Project="..\packages\GdPicture.runtimes.windows.14.2.90\build\net462\GdPicture.runtimes.windows.targets" Condition="Exists('..\packages\GdPicture.runtimes.windows.14.2.90\build\net462\GdPicture.runtimes.windows.targets')" />
|
||||||
|
<Target Name="EnsureNuGetPackageBuildImports" BeforeTargets="PrepareForBuild">
|
||||||
|
<PropertyGroup>
|
||||||
|
<ErrorText>Dieses Projekt verweist auf mindestens ein NuGet-Paket, das auf diesem Computer fehlt. Verwenden Sie die Wiederherstellung von NuGet-Paketen, um die fehlenden Dateien herunterzuladen. Weitere Informationen finden Sie unter "http://go.microsoft.com/fwlink/?LinkID=322105". Die fehlende Datei ist "{0}".</ErrorText>
|
||||||
|
</PropertyGroup>
|
||||||
|
<Error Condition="!Exists('..\packages\GdPicture.runtimes.windows.14.2.90\build\net462\GdPicture.runtimes.windows.targets')" Text="$([System.String]::Format('$(ErrorText)', '..\packages\GdPicture.runtimes.windows.14.2.90\build\net462\GdPicture.runtimes.windows.targets'))" />
|
||||||
|
</Target>
|
||||||
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
<!-- To modify your build process, add your task inside one of the targets below and uncomment it.
|
||||||
Other similar extension points exist, see Microsoft.Common.targets.
|
Other similar extension points exist, see Microsoft.Common.targets.
|
||||||
<Target Name="BeforeBuild">
|
<Target Name="BeforeBuild">
|
||||||
|
|||||||
@@ -14,10 +14,10 @@
|
|||||||
<value>True</value>
|
<value>True</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="DefaultAppSkin" serializeAs="String">
|
<setting name="DefaultAppSkin" serializeAs="String">
|
||||||
<value>Skin/The Bezier</value>
|
<value>Skin/Office 2019 White</value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="DefaultPalette" serializeAs="String">
|
<setting name="DefaultPalette" serializeAs="String">
|
||||||
<value>VS 2019 Blue</value>
|
<value></value>
|
||||||
</setting>
|
</setting>
|
||||||
<setting name="TouchUI" serializeAs="String">
|
<setting name="TouchUI" serializeAs="String">
|
||||||
<value></value>
|
<value></value>
|
||||||
@@ -68,4 +68,12 @@
|
|||||||
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
<!--<add name="EventLog" type="System.Diagnostics.EventLogTraceListener" initializeData="APPLICATION_NAME"/> -->
|
||||||
</sharedListeners>
|
</sharedListeners>
|
||||||
</system.diagnostics>
|
</system.diagnostics>
|
||||||
|
<runtime>
|
||||||
|
<assemblyBinding xmlns="urn:schemas-microsoft-com:asm.v1">
|
||||||
|
<dependentAssembly>
|
||||||
|
<assemblyIdentity name="GdPicture.NET.14" publicKeyToken="f52a2e60ad468dbb" culture="neutral" />
|
||||||
|
<bindingRedirect oldVersion="0.0.0.0-14.2.90.0" newVersion="14.2.90.0" />
|
||||||
|
</dependentAssembly>
|
||||||
|
</assemblyBinding>
|
||||||
|
</runtime>
|
||||||
</configuration>
|
</configuration>
|
||||||
14
EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb
generated
14
EnvelopeGenerator.Form/frmEnvelopeEditor.Designer.vb
generated
@@ -398,7 +398,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.LayoutControlGroup4.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroup5})
|
Me.LayoutControlGroup4.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroup5})
|
||||||
Me.LayoutControlGroup4.Name = "LayoutControlGroup4"
|
Me.LayoutControlGroup4.Name = "LayoutControlGroup4"
|
||||||
Me.LayoutControlGroup4.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0)
|
Me.LayoutControlGroup4.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0)
|
||||||
Me.LayoutControlGroup4.Size = New System.Drawing.Size(251, 526)
|
Me.LayoutControlGroup4.Size = New System.Drawing.Size(251, 530)
|
||||||
Me.LayoutControlGroup4.TextVisible = False
|
Me.LayoutControlGroup4.TextVisible = False
|
||||||
'
|
'
|
||||||
'LayoutControlGroup5
|
'LayoutControlGroup5
|
||||||
@@ -406,7 +406,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.LayoutControlGroup5.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem5})
|
Me.LayoutControlGroup5.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlItem5})
|
||||||
Me.LayoutControlGroup5.Location = New System.Drawing.Point(0, 0)
|
Me.LayoutControlGroup5.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.LayoutControlGroup5.Name = "LayoutControlGroup5"
|
Me.LayoutControlGroup5.Name = "LayoutControlGroup5"
|
||||||
Me.LayoutControlGroup5.Size = New System.Drawing.Size(251, 526)
|
Me.LayoutControlGroup5.Size = New System.Drawing.Size(251, 530)
|
||||||
resources.ApplyResources(Me.LayoutControlGroup5, "LayoutControlGroup5")
|
resources.ApplyResources(Me.LayoutControlGroup5, "LayoutControlGroup5")
|
||||||
'
|
'
|
||||||
'LayoutControlItem5
|
'LayoutControlItem5
|
||||||
@@ -414,7 +414,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.LayoutControlItem5.Control = Me.GridDocuments
|
Me.LayoutControlItem5.Control = Me.GridDocuments
|
||||||
Me.LayoutControlItem5.Location = New System.Drawing.Point(0, 0)
|
Me.LayoutControlItem5.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.LayoutControlItem5.Name = "LayoutControlItem5"
|
Me.LayoutControlItem5.Name = "LayoutControlItem5"
|
||||||
Me.LayoutControlItem5.Size = New System.Drawing.Size(227, 477)
|
Me.LayoutControlItem5.Size = New System.Drawing.Size(227, 485)
|
||||||
Me.LayoutControlItem5.TextSize = New System.Drawing.Size(0, 0)
|
Me.LayoutControlItem5.TextSize = New System.Drawing.Size(0, 0)
|
||||||
Me.LayoutControlItem5.TextVisible = False
|
Me.LayoutControlItem5.TextVisible = False
|
||||||
'
|
'
|
||||||
@@ -578,7 +578,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.LayoutControlItem2.Control = Me.GridReceivers
|
Me.LayoutControlItem2.Control = Me.GridReceivers
|
||||||
Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 0)
|
Me.LayoutControlItem2.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.LayoutControlItem2.Name = "LayoutControlItem2"
|
Me.LayoutControlItem2.Name = "LayoutControlItem2"
|
||||||
Me.LayoutControlItem2.Size = New System.Drawing.Size(875, 200)
|
Me.LayoutControlItem2.Size = New System.Drawing.Size(875, 204)
|
||||||
Me.LayoutControlItem2.TextSize = New System.Drawing.Size(0, 0)
|
Me.LayoutControlItem2.TextSize = New System.Drawing.Size(0, 0)
|
||||||
Me.LayoutControlItem2.TextVisible = False
|
Me.LayoutControlItem2.TextVisible = False
|
||||||
'
|
'
|
||||||
@@ -611,7 +611,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroup1})
|
Me.Root.Items.AddRange(New DevExpress.XtraLayout.BaseLayoutItem() {Me.LayoutControlGroup1})
|
||||||
Me.Root.Name = "Root"
|
Me.Root.Name = "Root"
|
||||||
Me.Root.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0)
|
Me.Root.Padding = New DevExpress.XtraLayout.Utils.Padding(0, 0, 0, 0)
|
||||||
Me.Root.Size = New System.Drawing.Size(899, 259)
|
Me.Root.Size = New System.Drawing.Size(899, 263)
|
||||||
Me.Root.TextVisible = False
|
Me.Root.TextVisible = False
|
||||||
'
|
'
|
||||||
'LayoutControlGroup1
|
'LayoutControlGroup1
|
||||||
@@ -620,7 +620,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.LayoutControlGroup1.Location = New System.Drawing.Point(0, 0)
|
Me.LayoutControlGroup1.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.LayoutControlGroup1.Name = "LayoutControlGroup1"
|
Me.LayoutControlGroup1.Name = "LayoutControlGroup1"
|
||||||
Me.LayoutControlGroup1.Padding = New DevExpress.XtraLayout.Utils.Padding(10, 10, 10, 10)
|
Me.LayoutControlGroup1.Padding = New DevExpress.XtraLayout.Utils.Padding(10, 10, 10, 10)
|
||||||
Me.LayoutControlGroup1.Size = New System.Drawing.Size(899, 259)
|
Me.LayoutControlGroup1.Size = New System.Drawing.Size(899, 263)
|
||||||
resources.ApplyResources(Me.LayoutControlGroup1, "LayoutControlGroup1")
|
resources.ApplyResources(Me.LayoutControlGroup1, "LayoutControlGroup1")
|
||||||
'
|
'
|
||||||
'LayoutControlItem3
|
'LayoutControlItem3
|
||||||
@@ -629,7 +629,7 @@ Partial Public Class frmEnvelopeEditor
|
|||||||
Me.LayoutControlItem3.Location = New System.Drawing.Point(0, 0)
|
Me.LayoutControlItem3.Location = New System.Drawing.Point(0, 0)
|
||||||
Me.LayoutControlItem3.Name = "LayoutControlItem3"
|
Me.LayoutControlItem3.Name = "LayoutControlItem3"
|
||||||
Me.LayoutControlItem3.Padding = New DevExpress.XtraLayout.Utils.Padding(10, 10, 10, 10)
|
Me.LayoutControlItem3.Padding = New DevExpress.XtraLayout.Utils.Padding(10, 10, 10, 10)
|
||||||
Me.LayoutControlItem3.Size = New System.Drawing.Size(873, 208)
|
Me.LayoutControlItem3.Size = New System.Drawing.Size(873, 216)
|
||||||
resources.ApplyResources(Me.LayoutControlItem3, "LayoutControlItem3")
|
resources.ApplyResources(Me.LayoutControlItem3, "LayoutControlItem3")
|
||||||
Me.LayoutControlItem3.TextLocation = DevExpress.Utils.Locations.Top
|
Me.LayoutControlItem3.TextLocation = DevExpress.Utils.Locations.Top
|
||||||
Me.LayoutControlItem3.TextSize = New System.Drawing.Size(49, 13)
|
Me.LayoutControlItem3.TextSize = New System.Drawing.Size(49, 13)
|
||||||
|
|||||||
@@ -384,6 +384,6 @@
|
|||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Sign Flow - Envelope-Editor</value>
|
<value>signFLOW - Envelope-Editor</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -126,7 +126,7 @@
|
|||||||
<value>0, 132</value>
|
<value>0, 132</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridDocuments.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="GridDocuments.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>14, 39</value>
|
<value>14, 35</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="colFilename.Caption" xml:space="preserve">
|
<data name="colFilename.Caption" xml:space="preserve">
|
||||||
<value>Dateiname</value>
|
<value>Dateiname</value>
|
||||||
@@ -439,10 +439,10 @@
|
|||||||
<value>1164, 132</value>
|
<value>1164, 132</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RibbonStatusBar1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="RibbonStatusBar1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 658</value>
|
<value>0, 662</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RibbonStatusBar1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="RibbonStatusBar1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1164, 26</value>
|
<value>1164, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>RibbonStatusBar1.Name" xml:space="preserve">
|
<data name=">>RibbonStatusBar1.Name" xml:space="preserve">
|
||||||
<value>RibbonStatusBar1</value>
|
<value>RibbonStatusBar1</value>
|
||||||
@@ -469,7 +469,7 @@
|
|||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridDocuments.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="GridDocuments.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>223, 473</value>
|
<value>223, 481</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridDocuments.TabIndex" type="System.Int32, mscorlib">
|
<data name="GridDocuments.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
@@ -496,7 +496,7 @@
|
|||||||
<value>Ihre Dokumente</value>
|
<value>Ihre Dokumente</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LayoutControl3.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="LayoutControl3.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>251, 526</value>
|
<value>251, 530</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LayoutControl3.TabIndex" type="System.Int32, mscorlib">
|
<data name="LayoutControl3.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
@@ -541,7 +541,7 @@
|
|||||||
<value>334, 17</value>
|
<value>334, 17</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
<data name="GridReceivers.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="GridReceivers.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>14, 39</value>
|
<value>14, 35</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="colColor.Caption" xml:space="preserve">
|
<data name="colColor.Caption" xml:space="preserve">
|
||||||
<value> </value>
|
<value> </value>
|
||||||
@@ -635,7 +635,7 @@
|
|||||||
<value>Combo</value>
|
<value>Combo</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridReceivers.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="GridReceivers.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>871, 196</value>
|
<value>871, 200</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridReceivers.TabIndex" type="System.Int32, mscorlib">
|
<data name="GridReceivers.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
@@ -728,13 +728,13 @@
|
|||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMessage.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="txtMessage.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>23, 64</value>
|
<value>23, 60</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMessage.Properties.Appearance.Font" type="System.Drawing.Font, System.Drawing">
|
<data name="txtMessage.Properties.Appearance.Font" type="System.Drawing.Font, System.Drawing">
|
||||||
<value>Segoe UI, 9.75pt</value>
|
<value>Segoe UI, 9.75pt</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMessage.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="txtMessage.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>853, 172</value>
|
<value>853, 180</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="txtMessage.TabIndex" type="System.Int32, mscorlib">
|
<data name="txtMessage.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
@@ -764,7 +764,7 @@
|
|||||||
<value>Ihre Nachricht</value>
|
<value>Ihre Nachricht</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LayoutControl1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="LayoutControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>899, 259</value>
|
<value>899, 263</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="LayoutControl1.TabIndex" type="System.Int32, mscorlib">
|
<data name="LayoutControl1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
@@ -794,7 +794,7 @@
|
|||||||
<value>0, 0, 0, 0</value>
|
<value>0, 0, 0, 0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PanelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="PanelControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>903, 263</value>
|
<value>903, 267</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="PanelControl2.TabIndex" type="System.Int32, mscorlib">
|
<data name="PanelControl2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
@@ -827,7 +827,7 @@
|
|||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SplitContainerControl2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="SplitContainerControl2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>903, 526</value>
|
<value>903, 530</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SplitContainerControl2.TabIndex" type="System.Int32, mscorlib">
|
<data name="SplitContainerControl2.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>0</value>
|
<value>0</value>
|
||||||
@@ -860,7 +860,7 @@
|
|||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SplitContainerControl1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="SplitContainerControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1164, 526</value>
|
<value>1164, 530</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SplitContainerControl1.TabIndex" type="System.Int32, mscorlib">
|
<data name="SplitContainerControl1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>1</value>
|
<value>1</value>
|
||||||
@@ -948,7 +948,7 @@
|
|||||||
<value>CenterScreen</value>
|
<value>CenterScreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Sign Flow - Umschlag-Editor</value>
|
<value>signFLOW - Umschlag-Editor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>SplashScreenManager1.Name" xml:space="preserve">
|
<data name=">>SplashScreenManager1.Name" xml:space="preserve">
|
||||||
<value>SplashScreenManager1</value>
|
<value>SplashScreenManager1</value>
|
||||||
|
|||||||
@@ -299,6 +299,6 @@
|
|||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Sign Flow - Signature-Editor</value>
|
<value>signFLOW - Signature-Editor</value>
|
||||||
</data>
|
</data>
|
||||||
</root>
|
</root>
|
||||||
@@ -538,7 +538,7 @@
|
|||||||
<value>CenterScreen</value>
|
<value>CenterScreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Sign Flow - Signatur-Editor</value>
|
<value>signFLOW - Signatur-Editor</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>BarButtonItem1.Name" xml:space="preserve">
|
<data name=">>BarButtonItem1.Name" xml:space="preserve">
|
||||||
<value>BarButtonItem1</value>
|
<value>BarButtonItem1</value>
|
||||||
|
|||||||
32
EnvelopeGenerator.Form/frmMain.Designer.vb
generated
32
EnvelopeGenerator.Form/frmMain.Designer.vb
generated
@@ -60,6 +60,8 @@ Partial Class frmMain
|
|||||||
Me.BarCheckItem1 = New DevExpress.XtraBars.BarCheckItem()
|
Me.BarCheckItem1 = New DevExpress.XtraBars.BarCheckItem()
|
||||||
Me.bsitmInfo = New DevExpress.XtraBars.BarStaticItem()
|
Me.bsitmInfo = New DevExpress.XtraBars.BarStaticItem()
|
||||||
Me.bbtnitmEB = New DevExpress.XtraBars.BarButtonItem()
|
Me.bbtnitmEB = New DevExpress.XtraBars.BarButtonItem()
|
||||||
|
Me.bbtnitmInfoMail = New DevExpress.XtraBars.BarButtonItem()
|
||||||
|
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
|
||||||
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
Me.RibbonPage1 = New DevExpress.XtraBars.Ribbon.RibbonPage()
|
||||||
Me.RibbonPageEnvelopeActions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
Me.RibbonPageEnvelopeActions = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||||
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
Me.RibbonPageGroup1 = New DevExpress.XtraBars.Ribbon.RibbonPageGroup()
|
||||||
@@ -85,8 +87,6 @@ Partial Class frmMain
|
|||||||
Me.GridColumn7 = New DevExpress.XtraGrid.Columns.GridColumn()
|
Me.GridColumn7 = New DevExpress.XtraGrid.Columns.GridColumn()
|
||||||
Me.RefreshTimer = New System.Windows.Forms.Timer(Me.components)
|
Me.RefreshTimer = New System.Windows.Forms.Timer(Me.components)
|
||||||
Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog()
|
Me.SaveFileDialog1 = New System.Windows.Forms.SaveFileDialog()
|
||||||
Me.bbtnitmInfoMail = New DevExpress.XtraBars.BarButtonItem()
|
|
||||||
Me.BarButtonItem2 = New DevExpress.XtraBars.BarButtonItem()
|
|
||||||
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.SplitContainerControl1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).BeginInit()
|
CType(Me.SplitContainerControl1.Panel1, System.ComponentModel.ISupportInitialize).BeginInit()
|
||||||
Me.SplitContainerControl1.Panel1.SuspendLayout()
|
Me.SplitContainerControl1.Panel1.SuspendLayout()
|
||||||
@@ -410,6 +410,20 @@ Partial Class frmMain
|
|||||||
Me.bbtnitmEB.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitmEB.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
Me.bbtnitmEB.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitmEB.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||||
Me.bbtnitmEB.Name = "bbtnitmEB"
|
Me.bbtnitmEB.Name = "bbtnitmEB"
|
||||||
'
|
'
|
||||||
|
'bbtnitmInfoMail
|
||||||
|
'
|
||||||
|
resources.ApplyResources(Me.bbtnitmInfoMail, "bbtnitmInfoMail")
|
||||||
|
Me.bbtnitmInfoMail.Id = 15
|
||||||
|
Me.bbtnitmInfoMail.ImageOptions.SvgImage = CType(resources.GetObject("bbtnitmInfoMail.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||||
|
Me.bbtnitmInfoMail.Name = "bbtnitmInfoMail"
|
||||||
|
'
|
||||||
|
'BarButtonItem2
|
||||||
|
'
|
||||||
|
resources.ApplyResources(Me.BarButtonItem2, "BarButtonItem2")
|
||||||
|
Me.BarButtonItem2.Id = 16
|
||||||
|
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
||||||
|
Me.BarButtonItem2.Name = "BarButtonItem2"
|
||||||
|
'
|
||||||
'RibbonPage1
|
'RibbonPage1
|
||||||
'
|
'
|
||||||
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroup2})
|
Me.RibbonPage1.Groups.AddRange(New DevExpress.XtraBars.Ribbon.RibbonPageGroup() {Me.RibbonPageEnvelopeActions, Me.RibbonPageGroup1, Me.RibbonPageGroup2})
|
||||||
@@ -600,20 +614,6 @@ Partial Class frmMain
|
|||||||
'
|
'
|
||||||
resources.ApplyResources(Me.SaveFileDialog1, "SaveFileDialog1")
|
resources.ApplyResources(Me.SaveFileDialog1, "SaveFileDialog1")
|
||||||
'
|
'
|
||||||
'bbtnitmInfoMail
|
|
||||||
'
|
|
||||||
resources.ApplyResources(Me.bbtnitmInfoMail, "bbtnitmInfoMail")
|
|
||||||
Me.bbtnitmInfoMail.Id = 15
|
|
||||||
Me.bbtnitmInfoMail.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage"), DevExpress.Utils.Svg.SvgImage)
|
|
||||||
Me.bbtnitmInfoMail.Name = "bbtnitmInfoMail"
|
|
||||||
'
|
|
||||||
'BarButtonItem2
|
|
||||||
'
|
|
||||||
resources.ApplyResources(Me.BarButtonItem2, "BarButtonItem2")
|
|
||||||
Me.BarButtonItem2.Id = 16
|
|
||||||
Me.BarButtonItem2.ImageOptions.SvgImage = CType(resources.GetObject("BarButtonItem2.ImageOptions.SvgImage1"), DevExpress.Utils.Svg.SvgImage)
|
|
||||||
Me.BarButtonItem2.Name = "BarButtonItem2"
|
|
||||||
'
|
|
||||||
'frmMain
|
'frmMain
|
||||||
'
|
'
|
||||||
resources.ApplyResources(Me, "$this")
|
resources.ApplyResources(Me, "$this")
|
||||||
|
|||||||
@@ -123,7 +123,7 @@
|
|||||||
</data>
|
</data>
|
||||||
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
<assembly alias="System.Drawing" name="System.Drawing, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a" />
|
||||||
<data name="SplitContainerControl1.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="SplitContainerControl1.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 162</value>
|
<value>0, 160</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabControlMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
<data name="XtraTabControlMain.Dock" type="System.Windows.Forms.DockStyle, System.Windows.Forms">
|
||||||
<value>Fill</value>
|
<value>Fill</value>
|
||||||
@@ -714,7 +714,7 @@
|
|||||||
<data name="bbtnitmInfoMail.Caption" xml:space="preserve">
|
<data name="bbtnitmInfoMail.Caption" xml:space="preserve">
|
||||||
<value>Support Mail</value>
|
<value>Support Mail</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="bbtnitmInfoMail.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||||
@@ -734,9 +734,9 @@
|
|||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BarButtonItem2.Caption" xml:space="preserve">
|
<data name="BarButtonItem2.Caption" xml:space="preserve">
|
||||||
<value>BarButtonItem2</value>
|
<value>Einladung erneut versenden</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="BarButtonItem2.ImageOptions.SvgImage1" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="BarButtonItem2.ImageOptions.SvgImage" type="DevExpress.Utils.Svg.SvgImage, DevExpress.Data.v21.2" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
AAEAAAD/////AQAAAAAAAAAMAgAAAFlEZXZFeHByZXNzLkRhdGEudjIxLjIsIFZlcnNpb249MjEuMi40
|
||||||
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
LjAsIEN1bHR1cmU9bmV1dHJhbCwgUHVibGljS2V5VG9rZW49Yjg4ZDE3NTRkNzAwZTQ5YQUBAAAAHURl
|
||||||
@@ -777,13 +777,13 @@
|
|||||||
<value>Einstellungen</value>
|
<value>Einstellungen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RibbonControl.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="RibbonControl.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1090, 162</value>
|
<value>1090, 160</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RibbonStatusBar.Location" type="System.Drawing.Point, System.Drawing">
|
<data name="RibbonStatusBar.Location" type="System.Drawing.Point, System.Drawing">
|
||||||
<value>0, 656</value>
|
<value>0, 660</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="RibbonStatusBar.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="RibbonStatusBar.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1090, 26</value>
|
<value>1090, 22</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>RibbonStatusBar.Name" xml:space="preserve">
|
<data name=">>RibbonStatusBar.Name" xml:space="preserve">
|
||||||
<value>RibbonStatusBar</value>
|
<value>RibbonStatusBar</value>
|
||||||
@@ -810,7 +810,7 @@
|
|||||||
<value>2</value>
|
<value>2</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridEnvelopes.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="GridEnvelopes.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1088, 455</value>
|
<value>1088, 467</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridEnvelopes.TabIndex" type="System.Int32, mscorlib">
|
<data name="GridEnvelopes.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>2</value>
|
<value>2</value>
|
||||||
@@ -828,7 +828,7 @@
|
|||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="XtraTabPage1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1088, 455</value>
|
<value>1088, 467</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabPage1.Text" xml:space="preserve">
|
<data name="XtraTabPage1.Text" xml:space="preserve">
|
||||||
<value>Offene Umschläge</value>
|
<value>Offene Umschläge</value>
|
||||||
@@ -846,7 +846,7 @@
|
|||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabControlMain.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="XtraTabControlMain.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1090, 484</value>
|
<value>1090, 490</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabControlMain.TabIndex" type="System.Int32, mscorlib">
|
<data name="XtraTabControlMain.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
@@ -990,7 +990,7 @@
|
|||||||
<value>195</value>
|
<value>195</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridCompleted.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="GridCompleted.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1088, 455</value>
|
<value>1088, 467</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="GridCompleted.TabIndex" type="System.Int32, mscorlib">
|
<data name="GridCompleted.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>3</value>
|
<value>3</value>
|
||||||
@@ -1008,7 +1008,7 @@
|
|||||||
<value>0</value>
|
<value>0</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="XtraTabPage2.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1088, 455</value>
|
<value>1088, 467</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="XtraTabPage2.Text" xml:space="preserve">
|
<data name="XtraTabPage2.Text" xml:space="preserve">
|
||||||
<value>Abgeschlossene Umschläge</value>
|
<value>Abgeschlossene Umschläge</value>
|
||||||
@@ -1068,7 +1068,7 @@
|
|||||||
<value>1</value>
|
<value>1</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SplitContainerControl1.Size" type="System.Drawing.Size, System.Drawing">
|
<data name="SplitContainerControl1.Size" type="System.Drawing.Size, System.Drawing">
|
||||||
<value>1090, 494</value>
|
<value>1090, 500</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="SplitContainerControl1.TabIndex" type="System.Int32, mscorlib">
|
<data name="SplitContainerControl1.TabIndex" type="System.Int32, mscorlib">
|
||||||
<value>5</value>
|
<value>5</value>
|
||||||
@@ -1097,6 +1097,9 @@
|
|||||||
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
<metadata name="$this.Localizable" type="System.Boolean, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
<value>True</value>
|
<value>True</value>
|
||||||
</metadata>
|
</metadata>
|
||||||
|
<metadata name="$this.TrayHeight" type="System.Int32, mscorlib, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089">
|
||||||
|
<value>263</value>
|
||||||
|
</metadata>
|
||||||
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
<data name="$this.AutoScaleDimensions" type="System.Drawing.SizeF, System.Drawing">
|
||||||
<value>6, 13</value>
|
<value>6, 13</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1105,89 +1108,90 @@
|
|||||||
</data>
|
</data>
|
||||||
<data name="frmMain.IconOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
<data name="frmMain.IconOptions.Image" type="System.Drawing.Bitmap, System.Drawing" mimetype="application/x-microsoft.net.object.bytearray.base64">
|
||||||
<value>
|
<value>
|
||||||
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
|
||||||
|
Bv/c01f/A4y2+8cc2/IPAAAAAElFTkSuQmCC
|
||||||
</value>
|
</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
<data name="$this.StartPosition" type="System.Windows.Forms.FormStartPosition, System.Windows.Forms">
|
||||||
<value>CenterScreen</value>
|
<value>CenterScreen</value>
|
||||||
</data>
|
</data>
|
||||||
<data name="$this.Text" xml:space="preserve">
|
<data name="$this.Text" xml:space="preserve">
|
||||||
<value>Sign Flow</value>
|
<value>signFLOW</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>SplashScreenManager1.Name" xml:space="preserve">
|
<data name=">>SplashScreenManager1.Name" xml:space="preserve">
|
||||||
<value>SplashScreenManager1</value>
|
<value>SplashScreenManager1</value>
|
||||||
@@ -1369,6 +1373,18 @@
|
|||||||
<data name=">>bbtnitmEB.Type" xml:space="preserve">
|
<data name=">>bbtnitmEB.Type" xml:space="preserve">
|
||||||
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||||
</data>
|
</data>
|
||||||
|
<data name=">>bbtnitmInfoMail.Name" xml:space="preserve">
|
||||||
|
<value>bbtnitmInfoMail</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>bbtnitmInfoMail.Type" xml:space="preserve">
|
||||||
|
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>BarButtonItem2.Name" xml:space="preserve">
|
||||||
|
<value>BarButtonItem2</value>
|
||||||
|
</data>
|
||||||
|
<data name=">>BarButtonItem2.Type" xml:space="preserve">
|
||||||
|
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
||||||
|
</data>
|
||||||
<data name=">>RibbonPage1.Name" xml:space="preserve">
|
<data name=">>RibbonPage1.Name" xml:space="preserve">
|
||||||
<value>RibbonPage1</value>
|
<value>RibbonPage1</value>
|
||||||
</data>
|
</data>
|
||||||
@@ -1501,18 +1517,6 @@
|
|||||||
<data name=">>SaveFileDialog1.Type" xml:space="preserve">
|
<data name=">>SaveFileDialog1.Type" xml:space="preserve">
|
||||||
<value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
<value>System.Windows.Forms.SaveFileDialog, System.Windows.Forms, Version=4.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089</value>
|
||||||
</data>
|
</data>
|
||||||
<data name=">>bbtnitmInfoMail.Name" xml:space="preserve">
|
|
||||||
<value>bbtnitmInfoMail</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>bbtnitmInfoMail.Type" xml:space="preserve">
|
|
||||||
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>BarButtonItem2.Name" xml:space="preserve">
|
|
||||||
<value>BarButtonItem2</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>BarButtonItem2.Type" xml:space="preserve">
|
|
||||||
<value>DevExpress.XtraBars.BarButtonItem, DevExpress.XtraBars.v21.2, Version=21.2.4.0, Culture=neutral, PublicKeyToken=b88d1754d700e49a</value>
|
|
||||||
</data>
|
|
||||||
<data name=">>$this.Name" xml:space="preserve">
|
<data name=">>$this.Name" xml:space="preserve">
|
||||||
<value>frmMain</value>
|
<value>frmMain</value>
|
||||||
</data>
|
</data>
|
||||||
|
|||||||
@@ -11,6 +11,7 @@ Imports DigitalData.Modules.Logging
|
|||||||
Imports EnvelopeGenerator.Common
|
Imports EnvelopeGenerator.Common
|
||||||
Imports EnvelopeGenerator.Common.My
|
Imports EnvelopeGenerator.Common.My
|
||||||
Imports System.Diagnostics
|
Imports System.Diagnostics
|
||||||
|
Imports System.ComponentModel
|
||||||
|
|
||||||
Public Class frmMain
|
Public Class frmMain
|
||||||
Private ReadOnly LogConfig As LogConfig
|
Private ReadOnly LogConfig As LogConfig
|
||||||
@@ -45,7 +46,7 @@ Public Class frmMain
|
|||||||
Controller = New EnvelopeListController(State)
|
Controller = New EnvelopeListController(State)
|
||||||
Try
|
Try
|
||||||
Me.LookAndFeel.UseDefaultLookAndFeel = False
|
Me.LookAndFeel.UseDefaultLookAndFeel = False
|
||||||
LookAndFeel.SetSkinStyle(SkinStyle.Office2019Colorful, SkinSvgPalette.DefaultSkin)
|
LookAndFeel.SetSkinStyle(SkinStyle.Office2019White, SkinSvgPalette.DefaultSkin)
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
|
|
||||||
End Try
|
End Try
|
||||||
@@ -204,6 +205,7 @@ Public Class frmMain
|
|||||||
btnShowDocument.Enabled = True
|
btnShowDocument.Enabled = True
|
||||||
bbtnitmEB.Enabled = False
|
bbtnitmEB.Enabled = False
|
||||||
LoadEnvelopeData()
|
LoadEnvelopeData()
|
||||||
|
txtEnvelopeIdLabel.Caption = "No Envelope selected"
|
||||||
End Select
|
End Select
|
||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
@@ -228,13 +230,18 @@ Public Class frmMain
|
|||||||
End Sub
|
End Sub
|
||||||
Private Sub bbtnitmEB_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmEB.ItemClick
|
Private Sub bbtnitmEB_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles bbtnitmEB.ItemClick
|
||||||
Try
|
Try
|
||||||
If ViewEnvelopes.FocusedRowHandle < 0 Then
|
If IsNothing(ViewEnvelopes.FocusedRowHandle) Then
|
||||||
|
bsitmInfo.Caption = "No row selected"
|
||||||
Exit Sub
|
Exit Sub
|
||||||
End If
|
End If
|
||||||
|
bsitmInfo.Caption = ""
|
||||||
Me.Cursor = Cursors.WaitCursor
|
Me.Cursor = Cursors.WaitCursor
|
||||||
Dim oEnvelope As Envelope = ViewCompleted.GetRow(ViewCompleted.FocusedRowHandle)
|
Dim oEnvelope As Envelope = ViewCompleted.GetRow(ViewCompleted.FocusedRowHandle)
|
||||||
GetResRepFileStreamByte(oEnvelope.Id)
|
GetResRepFileStreamByte(oEnvelope.Id)
|
||||||
Dim oTempFolder = TempFiles.TempPath
|
Dim oTempFolder = TempFiles.TempPath
|
||||||
|
If Not Directory.Exists(oTempFolder) Then
|
||||||
|
Directory.CreateDirectory(oTempFolder)
|
||||||
|
End If
|
||||||
Dim oFilename = "ViewEnvResReport"
|
Dim oFilename = "ViewEnvResReport"
|
||||||
Dim oVersion As Integer = 0
|
Dim oVersion As Integer = 0
|
||||||
Dim oTempFilename = String.Concat(oTempFolder, "\", $"{oFilename}_{oEnvelope.Id}.pdf")
|
Dim oTempFilename = String.Concat(oTempFolder, "\", $"{oFilename}_{oEnvelope.Id}.pdf")
|
||||||
@@ -242,19 +249,6 @@ Public Class frmMain
|
|||||||
oVersion += 1
|
oVersion += 1
|
||||||
oTempFilename = String.Concat(oTempFolder, "\", $"{oFilename}_{oEnvelope.Id}_", oVersion.ToString, ".pdf")
|
oTempFilename = String.Concat(oTempFolder, "\", $"{oFilename}_{oEnvelope.Id}_", oVersion.ToString, ".pdf")
|
||||||
Loop
|
Loop
|
||||||
'If File.Exists(oTempFilename) Then
|
|
||||||
' oVersion += 1
|
|
||||||
' oTempFilename = String.Concat(oTempFolder, "\", $"ViewEnvResReport_{oEnvelope.Id}_", oVersion.ToString, ".pdf")
|
|
||||||
' Try
|
|
||||||
' File.OpenWrite(oTempFilename)
|
|
||||||
' Catch ex As Exception
|
|
||||||
' MsgBox("File might already be open?", MsgBoxStyle.Exclamation)
|
|
||||||
' Exit Sub
|
|
||||||
' End Try
|
|
||||||
|
|
||||||
|
|
||||||
' File.Delete(oTempFilename)
|
|
||||||
'End If
|
|
||||||
downloadResFile(oTempFilename)
|
downloadResFile(oTempFilename)
|
||||||
|
|
||||||
Catch ex As Exception
|
Catch ex As Exception
|
||||||
@@ -408,10 +402,12 @@ Public Class frmMain
|
|||||||
If Not fileData Is Nothing Then
|
If Not fileData Is Nothing Then
|
||||||
myResFileData = fileData
|
myResFileData = fileData
|
||||||
Else
|
Else
|
||||||
|
bsitmInfo.Caption = "FileStream 1 is nothing - check data!"
|
||||||
myResFileData = Nothing
|
myResFileData = Nothing
|
||||||
End If
|
End If
|
||||||
Else
|
Else
|
||||||
myResFileData = Nothing
|
myResFileData = Nothing
|
||||||
|
bsitmInfo.Caption = "FileStream 2 is nothing - check data!"
|
||||||
End If
|
End If
|
||||||
|
|
||||||
|
|
||||||
@@ -443,6 +439,7 @@ Public Class frmMain
|
|||||||
Private Sub downloadResFile(ByVal sFileName As String)
|
Private Sub downloadResFile(ByVal sFileName As String)
|
||||||
Try
|
Try
|
||||||
If Not myResFileData Is Nothing Then
|
If Not myResFileData Is Nothing Then
|
||||||
|
Logger.Debug("working myResFileData in downloadResFile")
|
||||||
'Read image data into a file stream
|
'Read image data into a file stream
|
||||||
Using fs As New FileStream(sFileName, FileMode.OpenOrCreate, FileAccess.Write)
|
Using fs As New FileStream(sFileName, FileMode.OpenOrCreate, FileAccess.Write)
|
||||||
fs.Write(myResFileData, 0, myResFileData.Length)
|
fs.Write(myResFileData, 0, myResFileData.Length)
|
||||||
@@ -450,6 +447,7 @@ Public Class frmMain
|
|||||||
fs.Flush()
|
fs.Flush()
|
||||||
fs.Close()
|
fs.Close()
|
||||||
End Using
|
End Using
|
||||||
|
Logger.Debug($"Trying to open {sFileName}...")
|
||||||
'Open File
|
'Open File
|
||||||
Process.Start(sFileName)
|
Process.Start(sFileName)
|
||||||
Else
|
Else
|
||||||
@@ -548,6 +546,40 @@ Public Class frmMain
|
|||||||
End Sub
|
End Sub
|
||||||
|
|
||||||
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
|
Private Sub BarButtonItem2_ItemClick(sender As Object, e As DevExpress.XtraBars.ItemClickEventArgs) Handles BarButtonItem2.ItemClick
|
||||||
|
Dim oView As GridView = GridEnvelopes.FocusedView
|
||||||
|
Dim selReceiver As EnvelopeReceiver
|
||||||
|
If oView.Name = ViewReceivers.Name Then
|
||||||
|
selReceiver = oView.GetRow(oView.FocusedRowHandle)
|
||||||
|
Else
|
||||||
|
MsgBox(Resources.Envelope.Please_select_a_recipient_from_the_Recipients_tab, MsgBoxStyle.Information, Text)
|
||||||
|
End If
|
||||||
|
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 EnvelopeReceiver)
|
||||||
|
Receivers = New BindingList(Of EnvelopeReceiver)(oController.Envelope.Receivers)
|
||||||
|
For Each oReceiver As EnvelopeReceiver In Receivers
|
||||||
|
If oReceiver.Email = selReceiver.Email Then
|
||||||
|
If oController.ActionService.ResendReceiver(oEnvelope, oReceiver) = True Then
|
||||||
|
MsgBox(Resources.Envelope.Invitation_successfully_resend, MsgBoxStyle.Information, Text)
|
||||||
|
End If
|
||||||
|
End If
|
||||||
|
Next
|
||||||
|
|
||||||
|
|
||||||
|
End Sub
|
||||||
|
|
||||||
|
Private Sub ViewEnvelopes_Click(sender As Object, e As EventArgs) Handles ViewEnvelopes.Click
|
||||||
|
If ViewEnvelopes.FocusedRowHandle < 0 Then
|
||||||
|
Exit Sub
|
||||||
|
End If
|
||||||
|
Dim oEnvelope As Envelope = ViewEnvelopes.GetRow(ViewEnvelopes.FocusedRowHandle)
|
||||||
|
|
||||||
|
txtEnvelopeIdLabel.Caption = String.Format(txtEnvelopeIdLabel.Tag, oEnvelope.Id)
|
||||||
|
|
||||||
End Sub
|
End Sub
|
||||||
End Class
|
End Class
|
||||||
@@ -1,4 +1,6 @@
|
|||||||
<?xml version="1.0" encoding="utf-8"?>
|
<?xml version="1.0" encoding="utf-8"?>
|
||||||
<packages>
|
<packages>
|
||||||
|
<package id="GdPicture" version="14.2.90" targetFramework="net462" />
|
||||||
|
<package id="GdPicture.runtimes.windows" version="14.2.90" targetFramework="net462" />
|
||||||
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
<package id="NLog" version="5.0.5" targetFramework="net462" />
|
||||||
</packages>
|
</packages>
|
||||||
@@ -1,4 +1,4 @@
|
|||||||
import { ApplicationConfig } from '@angular/core';
|
import { ApplicationConfig, APP_INITIALIZER } from '@angular/core';
|
||||||
import { provideRouter } from '@angular/router';
|
import { provideRouter } from '@angular/router';
|
||||||
import { routes } from './app.routes';
|
import { routes } from './app.routes';
|
||||||
import { provideClientHydration } from '@angular/platform-browser';
|
import { provideClientHydration } from '@angular/platform-browser';
|
||||||
@@ -8,6 +8,7 @@ import { UrlService } from './services/url.service';
|
|||||||
import { API_URL } from './tokens/index'
|
import { API_URL } from './tokens/index'
|
||||||
import { HTTP_INTERCEPTORS, provideHttpClient, withFetch } from '@angular/common/http';
|
import { HTTP_INTERCEPTORS, provideHttpClient, withFetch } from '@angular/common/http';
|
||||||
import { HttpRequestInterceptor } from './http.interceptor';
|
import { HttpRequestInterceptor } from './http.interceptor';
|
||||||
|
import { ConfigurationService } from './services/configuration.service';
|
||||||
|
|
||||||
export const appConfig: ApplicationConfig = {
|
export const appConfig: ApplicationConfig = {
|
||||||
providers: [
|
providers: [
|
||||||
@@ -29,6 +30,12 @@ export const appConfig: ApplicationConfig = {
|
|||||||
provide: HTTP_INTERCEPTORS,
|
provide: HTTP_INTERCEPTORS,
|
||||||
useClass: HttpRequestInterceptor,
|
useClass: HttpRequestInterceptor,
|
||||||
multi: true
|
multi: true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
provide: APP_INITIALIZER,
|
||||||
|
useFactory: (configService: ConfigurationService) => async () => await configService.ngOnInit(),
|
||||||
|
deps: [ConfigurationService],
|
||||||
|
multi: true
|
||||||
}
|
}
|
||||||
]
|
]
|
||||||
};
|
};
|
||||||
@@ -1,48 +0,0 @@
|
|||||||
<table #table mat-table [dataSource]="data" class="mat-elevation-z8">
|
|
||||||
|
|
||||||
@for (colId of displayedColumns; track colId) {
|
|
||||||
<ng-container matColumnDef="{{colId}}">
|
|
||||||
<th mat-header-cell *matHeaderCellDef> {{schema[colId].header}} </th>
|
|
||||||
<td mat-cell *matCellDef="let element"> {{schema[colId].field(element)}} </td>
|
|
||||||
</ng-container>
|
|
||||||
}
|
|
||||||
|
|
||||||
<ng-container matColumnDef="expand">
|
|
||||||
<th mat-header-cell *matHeaderCellDef aria-label="row actions"> </th>
|
|
||||||
<td mat-cell *matCellDef="let element">
|
|
||||||
<button mat-icon-button aria-label="expand row"
|
|
||||||
(click)="(expandedElement = expandedElement === element ? null : element); $event.stopPropagation()">
|
|
||||||
@if (expandedElement === element) {
|
|
||||||
<mat-icon>keyboard_arrow_up</mat-icon>
|
|
||||||
} @else {
|
|
||||||
<mat-icon>keyboard_arrow_down</mat-icon>
|
|
||||||
}
|
|
||||||
</button>
|
|
||||||
</td>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->
|
|
||||||
<ng-container matColumnDef="expandedDetail">
|
|
||||||
<td mat-cell *matCellDef="let element" [attr.colspan]="columnsToDisplayWithExpand.length">
|
|
||||||
<div class="example-element-detail" [@detailExpand]="element == expandedElement ? 'expanded' : 'collapsed'">
|
|
||||||
<div class="example-element-diagram">
|
|
||||||
<div class="example-element-position"> {{"element.position"}} </div>
|
|
||||||
<div class="example-element-symbol"> {{"element.symbol"}} </div>
|
|
||||||
<div class="example-element-name"> {{"element.name"}} </div>
|
|
||||||
<div class="example-element-weight"> {{"element.weight"}} </div>
|
|
||||||
</div>
|
|
||||||
<div class="example-element-description">
|
|
||||||
{{"element.description"}}
|
|
||||||
<span class="example-element-description-attribution"> -- Wikipedia </span>
|
|
||||||
</div>
|
|
||||||
</div>
|
|
||||||
</td>
|
|
||||||
</ng-container>
|
|
||||||
|
|
||||||
<tr mat-header-row *matHeaderRowDef="columnsToDisplayWithExpand"></tr>
|
|
||||||
<tr mat-row *matRowDef="let element; columns: columnsToDisplayWithExpand;" class="example-element-row"
|
|
||||||
[class.example-expanded-row]="expandedElement === element"
|
|
||||||
(click)="expandedElement = expandedElement === element ? null : element">
|
|
||||||
</tr>
|
|
||||||
<!--<tr mat-row *matRowDef="let row; columns: ['expandedDetail']; when: isExpandedRow" class="example-detail-row"></tr>-->
|
|
||||||
</table>
|
|
||||||
@@ -1,31 +0,0 @@
|
|||||||
.example-element-row td {
|
|
||||||
border-bottom-width: 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
.example-element-detail {
|
|
||||||
overflow: hidden;
|
|
||||||
display: flex;
|
|
||||||
}
|
|
||||||
|
|
||||||
.example-element-diagram {
|
|
||||||
min-width: 80px;
|
|
||||||
border: 2px solid black;
|
|
||||||
padding: 8px;
|
|
||||||
font-weight: lighter;
|
|
||||||
margin: 8px 0;
|
|
||||||
height: 104px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.example-element-symbol {
|
|
||||||
font-weight: bold;
|
|
||||||
font-size: 40px;
|
|
||||||
line-height: normal;
|
|
||||||
}
|
|
||||||
|
|
||||||
.example-element-description {
|
|
||||||
padding: 16px;
|
|
||||||
}
|
|
||||||
|
|
||||||
.example-element-description-attribution {
|
|
||||||
opacity: 0.5;
|
|
||||||
}
|
|
||||||
@@ -1,74 +0,0 @@
|
|||||||
import { Component, Input, ViewChild } from '@angular/core';
|
|
||||||
import { EnvelopeReceiverService } from '../../services/envelope-receiver.service';
|
|
||||||
import { MatTable, MatTableModule } from '@angular/material/table';
|
|
||||||
import { CommonModule } from '@angular/common'
|
|
||||||
import { MatIconModule } from '@angular/material/icon';
|
|
||||||
import { MatButtonModule } from '@angular/material/button';
|
|
||||||
import { animate, state, style, transition, trigger } from '@angular/animations';
|
|
||||||
|
|
||||||
@Component({
|
|
||||||
selector: 'app-envelope-table',
|
|
||||||
standalone: true,
|
|
||||||
imports: [MatTableModule, CommonModule, MatTableModule, MatButtonModule, MatIconModule],
|
|
||||||
templateUrl: './envelope-table.component.html',
|
|
||||||
animations: [
|
|
||||||
trigger('detailExpand', [
|
|
||||||
state('collapsed,void', style({ height: '0px', minHeight: '0' })),
|
|
||||||
state('expanded', style({ height: '*' })),
|
|
||||||
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
|
||||||
]),
|
|
||||||
],
|
|
||||||
styleUrl: './envelope-table.component.scss'
|
|
||||||
})
|
|
||||||
export class EnvelopeTableComponent {
|
|
||||||
|
|
||||||
@Input() data: Array<any> = []
|
|
||||||
|
|
||||||
@Input() options?: { min_status?: number; max_status?: number; ignore_status?: number[] }
|
|
||||||
|
|
||||||
@Input() displayedColumns: string[] = ['title', 'status', 'type', 'privateMessage', 'addedWhen'];
|
|
||||||
|
|
||||||
@Input() schema: Record<string, { header: string; field: (element: any) => any; }> = {
|
|
||||||
'title': {
|
|
||||||
header: 'Title',
|
|
||||||
field: (element: any) => element.envelope.title
|
|
||||||
},
|
|
||||||
'status': {
|
|
||||||
header: 'Status',
|
|
||||||
field: (element: any) => element.envelope.statusName
|
|
||||||
},
|
|
||||||
'type': {
|
|
||||||
header: 'Type',
|
|
||||||
field: (element: any) => element.envelope.contractType
|
|
||||||
},
|
|
||||||
'privateMessage': {
|
|
||||||
header: 'Private Message',
|
|
||||||
field: (element: any) => element.privateMessage
|
|
||||||
},
|
|
||||||
'addedWhen': {
|
|
||||||
header: 'Added When',
|
|
||||||
field: (element: any) => element.addedWhen
|
|
||||||
},
|
|
||||||
}
|
|
||||||
|
|
||||||
columnsToDisplayWithExpand = [...this.displayedColumns, 'expand'];
|
|
||||||
|
|
||||||
expandedElement: any | null;
|
|
||||||
|
|
||||||
@ViewChild(MatTable) table!: MatTable<any>;
|
|
||||||
|
|
||||||
constructor(private erService: EnvelopeReceiverService) { }
|
|
||||||
|
|
||||||
async ngOnInit() {
|
|
||||||
if (this.data.length === 0)
|
|
||||||
this.data = await this.erService.getEnvelopeReceiverAsync(this.options);
|
|
||||||
}
|
|
||||||
|
|
||||||
public updateTable() {
|
|
||||||
this.table.renderRows();
|
|
||||||
}
|
|
||||||
|
|
||||||
isExpandedRow(index: number, row: any): boolean {
|
|
||||||
return (row?.envelopeId === this.expandedElement?.envelopeId) && (row?.receiverId === this.expandedElement?.receiverId);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
@@ -37,19 +37,19 @@ export class ReceiverInputComponent implements OnInit, OnChanges {
|
|||||||
private setupFiltering(): void {
|
private setupFiltering(): void {
|
||||||
this.filteredOptions = this.control.valueChanges.pipe(
|
this.filteredOptions = this.control.valueChanges.pipe(
|
||||||
startWith(''),
|
startWith(''),
|
||||||
map(value => this.filter(value || '', this.options)),
|
map(value => this.filter(value || '', this.options, this.index)),
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
control = new FormControl('');
|
control = new FormControl('');
|
||||||
filteredOptions!: Observable<string[]>;
|
filteredOptions!: Observable<string[]>;
|
||||||
|
|
||||||
|
|
||||||
@Input() options: string[] = [];
|
@Input() options: string[] = [];
|
||||||
@Input() filter: (value: string, options: string[]) => string[] = value => {
|
@Input() filter: (value: string, options: string[], index?: number) => string[] = value => {
|
||||||
const filterValue = value.toLowerCase();
|
const filterValue = value.toLowerCase();
|
||||||
return this.options.filter(option => option.toLowerCase().includes(filterValue));
|
return this.options.filter(option => option.toLowerCase().includes(filterValue));
|
||||||
}
|
}
|
||||||
|
@Input() index?: number;
|
||||||
|
|
||||||
public get text(): string {
|
public get text(): string {
|
||||||
return this.control.value || '';
|
return this.control.value || '';
|
||||||
|
|||||||
@@ -1,7 +1,7 @@
|
|||||||
<table mat-table [dataSource]="receiverData" class="mat-elevation-z8">
|
<table mat-table [dataSource]="receiverData" class="mat-elevation-z8">
|
||||||
<ng-container matColumnDef="email">
|
<ng-container matColumnDef="email">
|
||||||
<th mat-header-cell *matHeaderCellDef> Email </th>
|
<th mat-header-cell *matHeaderCellDef> Email </th>
|
||||||
<td mat-cell *matCellDef="let element">
|
<td mat-cell *matCellDef="let element; let i = index">
|
||||||
<receiver-input [options]="receiver_mails" [filter]="receiver_filter"></receiver-input>
|
<receiver-input [options]="receiver_mails" [filter]="receiver_filter"></receiver-input>
|
||||||
</td>
|
</td>
|
||||||
</ng-container>
|
</ng-container>
|
||||||
|
|||||||
@@ -0,0 +1,59 @@
|
|||||||
|
@if(isFilterable) {
|
||||||
|
<mat-form-field>
|
||||||
|
<mat-label>{{filter.label}}</mat-label>
|
||||||
|
<input matInput (keyup)="applyFilter($event)" [placeholder]="filter.placeholder" #input>
|
||||||
|
</mat-form-field>
|
||||||
|
}
|
||||||
|
|
||||||
|
<table mat-table [dataSource]="dataSource" multiTemplateDataRows class="mat-elevation-z8" matSort>
|
||||||
|
@for (column of __columnsToDisplay; track column) {
|
||||||
|
<ng-container matColumnDef="{{column}}">
|
||||||
|
@if(isSortable) {
|
||||||
|
<th mat-header-cell *matHeaderCellDef mat-sort-header> {{schema[column].header}} </th>
|
||||||
|
}
|
||||||
|
@else {
|
||||||
|
<th mat-header-cell *matHeaderCellDef> {{schema[column].header}} </th>
|
||||||
|
}
|
||||||
|
<td mat-cell *matCellDef="let element"> {{schema[column].field(element)}} </td>
|
||||||
|
</ng-container>
|
||||||
|
}
|
||||||
|
|
||||||
|
<!-- Expanded Content Column - The detail row is made up of this one column that spans across all columns -->
|
||||||
|
@if(isExpandable) {
|
||||||
|
<ng-container matColumnDef="expand">
|
||||||
|
<th mat-header-cell *matHeaderCellDef aria-label="row actions"> </th>
|
||||||
|
<td mat-cell *matCellDef="let element">
|
||||||
|
<button mat-icon-button aria-label="expand row" (click)="toggleExpandedRow(element, $event)">
|
||||||
|
@if (__expandedElement === element) {
|
||||||
|
<mat-icon>keyboard_arrow_up</mat-icon>
|
||||||
|
} @else {
|
||||||
|
<mat-icon>keyboard_arrow_down</mat-icon>
|
||||||
|
}
|
||||||
|
</button>
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
<ng-container matColumnDef="expandedDetail">
|
||||||
|
<td mat-cell *matCellDef="let element" [attr.colspan]="__columnsToDisplayWithExpand.length">
|
||||||
|
<div class="example-element-detail" [@detailExpand]="element == __expandedElement ? 'expanded' : 'collapsed'">
|
||||||
|
@if(__expandedElement === element){
|
||||||
|
<ng-content select="[expanded]" detailed></ng-content>
|
||||||
|
}
|
||||||
|
</div>
|
||||||
|
</td>
|
||||||
|
</ng-container>
|
||||||
|
}
|
||||||
|
@if(isExpandable) {
|
||||||
|
<tr mat-header-row *matHeaderRowDef="__columnsToDisplayWithExpand"></tr>
|
||||||
|
<tr mat-row *matRowDef="let element; columns: __columnsToDisplayWithExpand;" class="example-element-row"
|
||||||
|
[class.example-expanded-row]="__expandedElement === element" (click)="toggleExpandedRow(element, $event)">
|
||||||
|
</tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: ['expandedDetail']" class="example-detail-row"></tr>
|
||||||
|
}
|
||||||
|
@else {
|
||||||
|
<tr mat-header-row *matHeaderRowDef="__columnsToDisplay"></tr>
|
||||||
|
<tr mat-row *matRowDef="let row; columns: __columnsToDisplay;"></tr>
|
||||||
|
}
|
||||||
|
</table>
|
||||||
|
@if(paginatorSizeOptions && paginatorSizeOptions.length > 0) {
|
||||||
|
<mat-paginator [pageSizeOptions]="paginatorSizeOptions" aria-label="Select page of users"></mat-paginator>
|
||||||
|
}
|
||||||
@@ -0,0 +1,52 @@
|
|||||||
|
table {
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.example-detail-row {
|
||||||
|
height: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.example-element-row:not(.example-expanded-row):hover {
|
||||||
|
background: whitesmoke;
|
||||||
|
}
|
||||||
|
|
||||||
|
tr.example-element-row:not(.example-expanded-row):active {
|
||||||
|
background: #efefef;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-element-row td {
|
||||||
|
border-bottom-width: 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-element-detail {
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-element-diagram {
|
||||||
|
min-width: 80px;
|
||||||
|
border: 2px solid black;
|
||||||
|
padding: 8px;
|
||||||
|
font-weight: lighter;
|
||||||
|
margin: 8px 0;
|
||||||
|
height: 104px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-element-symbol {
|
||||||
|
font-weight: bold;
|
||||||
|
font-size: 40px;
|
||||||
|
line-height: normal;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-element-description {
|
||||||
|
padding: 16px;
|
||||||
|
}
|
||||||
|
|
||||||
|
.example-element-description-attribution {
|
||||||
|
opacity: 0.5;
|
||||||
|
}
|
||||||
|
|
||||||
|
.mat-mdc-form-field {
|
||||||
|
font-size: 14px;
|
||||||
|
width: 100%;
|
||||||
|
}
|
||||||
@@ -0,0 +1,23 @@
|
|||||||
|
import { ComponentFixture, TestBed } from '@angular/core/testing';
|
||||||
|
|
||||||
|
import { DDTable } from './dd-table.component';
|
||||||
|
|
||||||
|
describe('TableExpandableRowsExampleComponent', () => {
|
||||||
|
let component: DDTable;
|
||||||
|
let fixture: ComponentFixture<DDTable>;
|
||||||
|
|
||||||
|
beforeEach(async () => {
|
||||||
|
await TestBed.configureTestingModule({
|
||||||
|
imports: [DDTable]
|
||||||
|
})
|
||||||
|
.compileComponents();
|
||||||
|
|
||||||
|
fixture = TestBed.createComponent(DDTable);
|
||||||
|
component = fixture.componentInstance;
|
||||||
|
fixture.detectChanges();
|
||||||
|
});
|
||||||
|
|
||||||
|
it('should create', () => {
|
||||||
|
expect(component).toBeTruthy();
|
||||||
|
});
|
||||||
|
});
|
||||||
@@ -0,0 +1,103 @@
|
|||||||
|
import { AfterViewInit, Component, Input, ViewChild, inject } from '@angular/core';
|
||||||
|
import { animate, state, style, transition, trigger } from '@angular/animations';
|
||||||
|
import { MatIconModule } from '@angular/material/icon';
|
||||||
|
import { MatButtonModule } from '@angular/material/button';
|
||||||
|
import { MatTable, MatTableDataSource, MatTableModule } from '@angular/material/table';
|
||||||
|
import { ConfigurationService } from '../../../services/configuration.service';
|
||||||
|
import { MatInputModule } from '@angular/material/input';
|
||||||
|
import { MatFormFieldModule } from '@angular/material/form-field';
|
||||||
|
import { MatSort, MatSortModule } from '@angular/material/sort';
|
||||||
|
import { MatPaginator, MatPaginatorModule } from '@angular/material/paginator';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @title Table with expandable rows
|
||||||
|
*/
|
||||||
|
@Component({
|
||||||
|
selector: 'dd-table',
|
||||||
|
styleUrl: 'dd-table.component.scss',
|
||||||
|
templateUrl: 'dd-table.component.html',
|
||||||
|
animations: [
|
||||||
|
trigger('detailExpand', [
|
||||||
|
state('collapsed,void', style({ height: '0px', minHeight: '0' })),
|
||||||
|
state('expanded', style({ height: '*' })),
|
||||||
|
transition('expanded <=> collapsed', animate('225ms cubic-bezier(0.4, 0.0, 0.2, 1)')),
|
||||||
|
]),
|
||||||
|
],
|
||||||
|
standalone: true,
|
||||||
|
imports: [
|
||||||
|
MatTableModule,
|
||||||
|
MatButtonModule,
|
||||||
|
MatIconModule,
|
||||||
|
MatFormFieldModule,
|
||||||
|
MatInputModule,
|
||||||
|
MatTableModule,
|
||||||
|
MatSort,
|
||||||
|
MatSortModule,
|
||||||
|
MatPaginator,
|
||||||
|
MatPaginatorModule
|
||||||
|
],
|
||||||
|
})
|
||||||
|
export class DDTable implements AfterViewInit {
|
||||||
|
public readonly dataSource: any = new MatTableDataSource();
|
||||||
|
@Input() public set columnsToDisplay(value: string[]) {
|
||||||
|
this.__columnsToDisplay = value;
|
||||||
|
this.__columnsToDisplayWithExpand = [...value, 'expand'];
|
||||||
|
}
|
||||||
|
@Input() public set data(value: any[]) {
|
||||||
|
this.dataSource.data = value;
|
||||||
|
}
|
||||||
|
@Input() schema: Record<string, { header: string; field: (element: any) => any; }> = {}
|
||||||
|
|
||||||
|
@Input() paginatorSizeOptions?: number[];
|
||||||
|
|
||||||
|
@Input() filter: { label: string, placeholder: string } = { label: '', placeholder: '' }
|
||||||
|
|
||||||
|
@Input() isFilterable: boolean = false;
|
||||||
|
|
||||||
|
@Input() isExpandable: boolean = false;
|
||||||
|
|
||||||
|
@Input() isSortable: boolean = false;
|
||||||
|
|
||||||
|
@Input() onToggleExpandedRow: (element: any, event: Event) => Promise<void> = async (element: any, event: Event) => { }
|
||||||
|
|
||||||
|
public get data(): any[] {
|
||||||
|
return this.dataSource.data;
|
||||||
|
}
|
||||||
|
__columnsToDisplay: string[] = [];
|
||||||
|
__columnsToDisplayWithExpand: string[] = [];
|
||||||
|
__expandedElement!: any;
|
||||||
|
|
||||||
|
config: ConfigurationService = inject(ConfigurationService);
|
||||||
|
|
||||||
|
@ViewChild(MatSort) sort!: MatSort;
|
||||||
|
@ViewChild(MatPaginator) paginator!: MatPaginator;
|
||||||
|
@ViewChild(MatTable) table!: MatTable<any>;
|
||||||
|
|
||||||
|
ngAfterViewInit(): void {
|
||||||
|
if (this.isSortable)
|
||||||
|
this.dataSource.sort = this.sort;
|
||||||
|
if (this.paginatorSizeOptions && this.paginatorSizeOptions.length > 0)
|
||||||
|
this.dataSource.paginator = this.paginator;
|
||||||
|
}
|
||||||
|
|
||||||
|
applyFilter(event: Event) {
|
||||||
|
const filterValue = (event.target as HTMLInputElement).value;
|
||||||
|
this.dataSource.filter = filterValue.trim().toLowerCase();
|
||||||
|
}
|
||||||
|
|
||||||
|
update() {
|
||||||
|
this.table.renderRows();
|
||||||
|
}
|
||||||
|
|
||||||
|
async toggleExpandedRow(element: any, event: Event): Promise<void> {
|
||||||
|
// first determine the new expanded element, thus it would be possible to use up-to-date
|
||||||
|
const newExpandedElement = this.__expandedElement === element ? null : element;
|
||||||
|
|
||||||
|
// before update the expanded element call the call-back method to show up-to-date component
|
||||||
|
await this.onToggleExpandedRow(newExpandedElement, event);
|
||||||
|
|
||||||
|
// assign expanded element
|
||||||
|
this.__expandedElement = newExpandedElement;
|
||||||
|
event.stopPropagation();
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -0,0 +1,12 @@
|
|||||||
|
<dd-table [data]="data" [columnsToDisplay]="displayedColumns" [schema]="schema"
|
||||||
|
[paginatorSizeOptions]="[5, 10, 25, 100]" [filter]="{label: 'Filter', placeholder: ''}"
|
||||||
|
[onToggleExpandedRow]="onToggleExpandedRow" [isSortable]="true" [isExpandable]="true" [isFilterable]="true">
|
||||||
|
<mat-tab-group expanded>
|
||||||
|
<mat-tab label="Emfänger">
|
||||||
|
<receiver-status-table></receiver-status-table>
|
||||||
|
</mat-tab>
|
||||||
|
<mat-tab label="History">
|
||||||
|
<history-table></history-table>
|
||||||
|
</mat-tab>
|
||||||
|
</mat-tab-group>
|
||||||
|
</dd-table>
|
||||||
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user