Refaktorierung: Hauptentität auf EnvelopeReceiver geändert; Endlosschleifen-Bug behoben
- HomeController und ShowEnvelopeView aktualisiert. - Endlosschleifenproblem zwischen Envelope und EnvelopeReceiver gelöst. - Anpassungen an Envelope, EnvelopeDTO, EnvelopeRepository und EnvelopeService vorgenommen.
This commit is contained in:
parent
eb096cb201
commit
9620cb7189
@ -8,8 +8,8 @@ namespace EnvelopeGenerator.Application.Contracts
|
|||||||
{
|
{
|
||||||
public interface IEnvelopeService : IBasicCRUDService<IEnvelopeRepository, EnvelopeDto, Envelope, int>
|
public interface IEnvelopeService : IBasicCRUDService<IEnvelopeRepository, EnvelopeDto, Envelope, int>
|
||||||
{
|
{
|
||||||
Task<DataResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool envelopeReceivers = 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, string? signature = null, bool withDocuments = false, bool withEnvelopeReceivers = 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);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -34,6 +34,5 @@ namespace EnvelopeGenerator.Application.DTOs
|
|||||||
string? StatusTranslated,
|
string? StatusTranslated,
|
||||||
string? ContractTypeTranslated,
|
string? ContractTypeTranslated,
|
||||||
IEnumerable<EnvelopeDocumentDto>? Documents,
|
IEnumerable<EnvelopeDocumentDto>? Documents,
|
||||||
IEnumerable<EnvelopeReceiverDto>? EnvelopeReceivers,
|
|
||||||
IEnumerable<EnvelopeHistoryDto>? History);
|
IEnumerable<EnvelopeHistoryDto>? History);
|
||||||
}
|
}
|
||||||
@ -20,16 +20,16 @@ namespace EnvelopeGenerator.Application.Services
|
|||||||
_logger = logger;
|
_logger = logger;
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<IEnumerable<EnvelopeDto>>> ReadAllWithAsync(bool documents = false, bool envelopeReceivers = 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, envelopeReceivers: envelopeReceivers, 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.MapOrThrow<IEnumerable<EnvelopeDto>>(envelopes);
|
||||||
return Result.Success(readDto);
|
return Result.Success(readDto);
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<DataResult<EnvelopeDto>> ReadByUuidAsync(string uuid, string? signature = null, bool withDocuments = false, bool withEnvelopeReceivers = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false)
|
public async Task<DataResult<EnvelopeDto>> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false)
|
||||||
{
|
{
|
||||||
var envelope = await _repository.ReadByUuidAsync(uuid: uuid, signature: signature, withDocuments: withDocuments, withEnvelopeReceivers: withEnvelopeReceivers, withHistory: withHistory, withDocumentReceiverElement: withDocumentReceiverElement, withUser:withUser, withAll:withAll);
|
var envelope = await _repository.ReadByUuidAsync(uuid: uuid, withDocuments: withDocuments, withHistory: withHistory, withDocumentReceiverElement: withDocumentReceiverElement, withUser:withUser, withAll:withAll);
|
||||||
|
|
||||||
if (envelope is null)
|
if (envelope is null)
|
||||||
return Result.Fail<EnvelopeDto>();
|
return Result.Fail<EnvelopeDto>();
|
||||||
|
|||||||
@ -115,8 +115,6 @@ namespace EnvelopeGenerator.Domain.Entities
|
|||||||
|
|
||||||
public IEnumerable<EnvelopeDocument>? Documents { get; set; }
|
public IEnumerable<EnvelopeDocument>? Documents { get; set; }
|
||||||
|
|
||||||
public IEnumerable<EnvelopeReceiver>? EnvelopeReceivers { get; set; }
|
|
||||||
|
|
||||||
public IEnumerable<EnvelopeHistory>? History { get; set; }
|
public IEnumerable<EnvelopeHistory>? History { get; set; }
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -5,8 +5,8 @@ namespace EnvelopeGenerator.Infrastructure.Contracts
|
|||||||
{
|
{
|
||||||
public interface IEnvelopeRepository : ICRUDRepository<Envelope, int>
|
public interface IEnvelopeRepository : ICRUDRepository<Envelope, int>
|
||||||
{
|
{
|
||||||
Task<IEnumerable<Envelope>> ReadAllWithAsync(bool documents = false, bool envelopeReceivers = false, bool history = false, bool documentReceiverElement = true);
|
Task<IEnumerable<Envelope>> ReadAllWithAsync(bool documents = false, bool history = false, bool documentReceiverElement = false);
|
||||||
|
|
||||||
Task<Envelope?> ReadByUuidAsync(string uuid, string? signature = null, bool withDocuments = false, bool withEnvelopeReceivers = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false);
|
Task<Envelope?> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@ -12,7 +12,7 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
|
|||||||
{
|
{
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<IEnumerable<Envelope>> ReadAllWithAsync(bool documents = false, bool receivers = false, bool history = false, bool documentReceiverElement = false)
|
public async Task<IEnumerable<Envelope>> ReadAllWithAsync(bool documents = false, bool history = false, bool documentReceiverElement = false)
|
||||||
{
|
{
|
||||||
var query = _dbSet.AsQueryable();
|
var query = _dbSet.AsQueryable();
|
||||||
|
|
||||||
@ -22,31 +22,22 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
|
|||||||
else
|
else
|
||||||
query = query.Include(e => e.Documents);
|
query = query.Include(e => e.Documents);
|
||||||
|
|
||||||
if (receivers)
|
|
||||||
query = query.Include(e => e.EnvelopeReceivers);
|
|
||||||
|
|
||||||
if (history)
|
if (history)
|
||||||
query = query.Include(e => e.History);
|
query = query.Include(e => e.History);
|
||||||
|
|
||||||
return await query.ToListAsync();
|
return await query.ToListAsync();
|
||||||
}
|
}
|
||||||
|
|
||||||
public async Task<Envelope?> ReadByUuidAsync(string uuid, string? signature = null, bool withDocuments = false, bool withEnvelopeReceivers = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false)
|
public async Task<Envelope?> ReadByUuidAsync(string uuid, bool withDocuments = false, bool withHistory = false, bool withDocumentReceiverElement = false, bool withUser = false, bool withAll = false)
|
||||||
{
|
{
|
||||||
var query = _dbSet.Where(e => e.Uuid == uuid);
|
var query = _dbSet.Where(e => e.Uuid == uuid);
|
||||||
|
|
||||||
if (signature is not null)
|
|
||||||
query = query.Where(e => e.EnvelopeReceivers != null && e.EnvelopeReceivers.Any(er => er.Receiver != null && er.Receiver.Signature == signature));
|
|
||||||
|
|
||||||
if (withAll || withDocuments)
|
if (withAll || withDocuments)
|
||||||
if (withAll || withDocumentReceiverElement)
|
if (withAll || withDocumentReceiverElement)
|
||||||
query = query.Include(e => e.Documents!).ThenInclude(d => d.Elements);
|
query = query.Include(e => e.Documents!).ThenInclude(d => d.Elements);
|
||||||
else
|
else
|
||||||
query = query.Include(e => e.Documents);
|
query = query.Include(e => e.Documents);
|
||||||
|
|
||||||
if (withAll || withEnvelopeReceivers)
|
|
||||||
query = query.Include(e => e.EnvelopeReceivers!).ThenInclude(er => er.Receiver);
|
|
||||||
|
|
||||||
if (withAll || withUser)
|
if (withAll || withUser)
|
||||||
query = query.Include(e => e.User!);
|
query = query.Include(e => e.User!);
|
||||||
|
|
||||||
|
|||||||
@ -24,9 +24,10 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
|
|||||||
query = query.Where(er => er.Receiver != null && er.Receiver.Signature == signature);
|
query = query.Where(er => er.Receiver != null && er.Receiver.Signature == signature);
|
||||||
|
|
||||||
if (withEnvelope)
|
if (withEnvelope)
|
||||||
query = query.Include(er => er.Envelope).ThenInclude(e => e!.Documents!).ThenInclude(d => d.Elements)
|
query = query
|
||||||
|
.Include(er => er.Envelope).ThenInclude(e => e!.Documents!).ThenInclude(d => d.Elements)
|
||||||
.Include(er => er.Envelope).ThenInclude(e => e!.History)
|
.Include(er => er.Envelope).ThenInclude(e => e!.History)
|
||||||
.Include(er => er.Envelope).ThenInclude(e => e!.History);
|
.Include(er => er.Envelope).ThenInclude(e => e!.User);
|
||||||
|
|
||||||
if (withReceiver)
|
if (withReceiver)
|
||||||
query = query.Include(er => er.Receiver);
|
query = query.Include(er => er.Receiver);
|
||||||
|
|||||||
@ -17,16 +17,16 @@ namespace EnvelopeGenerator.Web.Controllers.Test
|
|||||||
public override Task<IActionResult> GetAll() => base.GetAll();
|
public override Task<IActionResult> GetAll() => base.GetAll();
|
||||||
|
|
||||||
[HttpGet]
|
[HttpGet]
|
||||||
public async Task<IActionResult> GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = false, [FromQuery] bool withEnvelopeReceivers = false, [FromQuery] bool withHistory = false, [FromQuery] bool withDocumentReceiverElement = false, [FromQuery] bool withUser = false, [FromQuery] bool withAll = true)
|
public async Task<IActionResult> GetAll([FromQuery] string? envelopeKey = default, [FromQuery] bool withDocuments = false, [FromQuery] bool withHistory = false, [FromQuery] bool withDocumentReceiverElement = false, [FromQuery] bool withUser = false, [FromQuery] bool withAll = true)
|
||||||
{
|
{
|
||||||
if(envelopeKey is not null)
|
if(envelopeKey is not null)
|
||||||
{
|
{
|
||||||
var decoded = envelopeKey.DecodeEnvelopeReceiverId();
|
(var uuid, var signature) = envelopeKey.DecodeEnvelopeReceiverId();
|
||||||
|
if (uuid is null)
|
||||||
|
return BadRequest("UUID is null");
|
||||||
var envlopeServiceResult = await _service.ReadByUuidAsync(
|
var envlopeServiceResult = await _service.ReadByUuidAsync(
|
||||||
uuid: decoded.EnvelopeUuid,
|
uuid: uuid,
|
||||||
signature: decoded.ReceiverSignature,
|
withDocuments: withDocuments, withHistory: withHistory, withDocumentReceiverElement:withDocumentReceiverElement, withUser:withUser, withAll:withAll);
|
||||||
withDocuments: withDocuments, withEnvelopeReceivers: withEnvelopeReceivers, withHistory: withHistory, withDocumentReceiverElement:withDocumentReceiverElement, withUser:withUser, withAll:withAll);
|
|
||||||
|
|
||||||
if (envlopeServiceResult.IsSuccess)
|
if (envlopeServiceResult.IsSuccess)
|
||||||
{
|
{
|
||||||
@ -35,7 +35,7 @@ namespace EnvelopeGenerator.Web.Controllers.Test
|
|||||||
return NotFound();
|
return NotFound();
|
||||||
}
|
}
|
||||||
|
|
||||||
var result = await _service.ReadAllWithAsync(documents: withDocuments, envelopeReceivers: withEnvelopeReceivers, history: withHistory);
|
var result = await _service.ReadAllWithAsync(documents: withDocuments, history: withHistory);
|
||||||
if (result.IsSuccess)
|
if (result.IsSuccess)
|
||||||
{
|
{
|
||||||
return Ok(result);
|
return Ok(result);
|
||||||
|
|||||||
@ -8,9 +8,7 @@
|
|||||||
@{
|
@{
|
||||||
var envelope = Model.Envelope;
|
var envelope = Model.Envelope;
|
||||||
var document = Model.Envelope?.Documents?.FirstOrDefault();
|
var document = Model.Envelope?.Documents?.FirstOrDefault();
|
||||||
var receiver = Model.Envelope?.EnvelopeReceivers?.FirstOrDefault();
|
|
||||||
var sender = Model.Envelope?.User;
|
var sender = Model.Envelope?.User;
|
||||||
var receiverName = receiver?.Name ?? string.Empty;
|
|
||||||
var pages = document?.Elements?.Select(e => e.Page) ?? Array.Empty<int>();
|
var pages = document?.Elements?.Select(e => e.Page) ?? Array.Empty<int>();
|
||||||
var stPageIndexes = string.Join(pages.Count() > 1 ? ", " : "", pages.Take(pages.Count() - 1))
|
var stPageIndexes = string.Join(pages.Count() > 1 ? ", " : "", pages.Take(pages.Count() - 1))
|
||||||
+ (pages.Count() > 1 ? " und " : "") + pages.LastOrDefault();
|
+ (pages.Count() > 1 ? " und " : "") + pages.LastOrDefault();
|
||||||
@ -20,7 +18,7 @@
|
|||||||
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
|
<button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarToggleExternalContent" aria-controls="navbarToggleExternalContent" aria-expanded="false" aria-label="Toggle navigation">
|
||||||
<span class="navbar-toggler-icon"></span>
|
<span class="navbar-toggler-icon"></span>
|
||||||
</button>
|
</button>
|
||||||
<div class="navbar-brand me-auto ms-5 envelope-message">@($"Hallo {receiverName}, {@envelope?.Message}")</div>
|
<div class="navbar-brand me-auto ms-5 envelope-message">@($"Hallo {Model.Name}, {@envelope?.Message}")</div>
|
||||||
<div class="col-1 p-0 m-0 me-3 d-flex">
|
<div class="col-1 p-0 m-0 me-3 d-flex">
|
||||||
<img src="~/img/digital_data.svg" alt="...">
|
<img src="~/img/digital_data.svg" alt="...">
|
||||||
</div>
|
</div>
|
||||||
@ -37,7 +35,7 @@
|
|||||||
<div class="card-body p-0 m-0">
|
<div class="card-body p-0 m-0">
|
||||||
<h5 class="card-title p-0 m-0">@($"{envelope?.Title}")</h5>
|
<h5 class="card-title p-0 m-0">@($"{envelope?.Title}")</h5>
|
||||||
<p class="card-text p-0 m-0">@($"Sie haben {(pages.Count())} Briefe zu unterschreiben. Bitte prüfen Sie die Seiten {stPageIndexes}.")</p>
|
<p class="card-text p-0 m-0">@($"Sie haben {(pages.Count())} Briefe zu unterschreiben. Bitte prüfen Sie die Seiten {stPageIndexes}.")</p>
|
||||||
<p class="card-text p-0 m-0"><small class="text-body-secondary">Erstellt am @envelope.?AddedWhen von @sender?.Prename @sender?.Name. Sie können den Absender über <a href="mailto:@(sender?.Email)?subject=@(envelope?.Title)&body=Sehr%20geehrter%20@(sender?.Prename)%20@(sender?.Name),%0A%0A%0A">@sender?.Email</a> kontaktieren.</small></p>
|
<p class="card-text p-0 m-0"><small class="text-body-secondary">Erstellt am @envelope?.AddedWhen von @sender?.Prename @sender?.Name. Sie können den Absender über <a href="mailto:@(sender?.Email)?subject=@(envelope?.Title)&body=Sehr%20geehrter%20@(sender?.Prename)%20@(sender?.Name),%0A%0A%0A">@sender?.Email</a> kontaktieren.</small></p>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user