From 370666cb0e7c6cbc6c6846dde90cba49f5a8e006 Mon Sep 17 00:00:00 2001 From: Developer 02 Date: Tue, 1 Oct 2024 12:54:27 +0200 Subject: [PATCH] =?UTF-8?q?refactor:=20EnvelopeReceiverReadOnlyRepository?= =?UTF-8?q?=20so=20angepasst,=20dass=20die=20Einbindung=20von=20Envelope?= =?UTF-8?q?=20bis=20zur=20Kl=C3=A4rung=20des=20ID-Typs=20verschoben=20wird?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Konstruktor von EnvelopeReceiverReadOnlyRepository angepasst, um IEnvelopeRepository zu akzeptieren. - Die Zeile Include(erro => erro.Envelope) in der Methode ReadOnly auskommentiert, bis der EnvelopeId-Typ standardisiert ist. - Methoden IncludeEnvelope hinzugefügt, um Envelope manuell für jedes EnvelopeReceiverReadOnly einzubinden. - Markierte manuelle Einbindungs-Methoden als veraltet, um durch IQueryable.Include ersetzt zu werden, sobald der EnvelopeId-Typ geklärt ist. --- .../Entities/EnvelopeReceiverReadOnly.cs | 5 +-- .../EGDbContext.cs | 5 --- .../EnvelopeReceiverReadOnlyRepository.cs | 35 +++++++++++++++++-- 3 files changed, 36 insertions(+), 9 deletions(-) diff --git a/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs b/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs index 56a5319d..c7e9fc5b 100644 --- a/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs +++ b/EnvelopeGenerator.Domain/Entities/EnvelopeReceiverReadOnly.cs @@ -17,8 +17,9 @@ namespace EnvelopeGenerator.Domain.Entities [Required] public long EnvelopeId { get; init; } - [ForeignKey("EnvelopeId")] - public Envelope? Envelope { get; init; } + //TODO: remove NotMapped attribute when EnvelopeId data type is standardized + [NotMapped] + public Envelope? Envelope { get; set; } [Column("RECEIVER_MAIL")] [Required] diff --git a/EnvelopeGenerator.Infrastructure/EGDbContext.cs b/EnvelopeGenerator.Infrastructure/EGDbContext.cs index daa454a3..e9a08d14 100644 --- a/EnvelopeGenerator.Infrastructure/EGDbContext.cs +++ b/EnvelopeGenerator.Infrastructure/EGDbContext.cs @@ -135,11 +135,6 @@ namespace EnvelopeGenerator.Infrastructure .HasForeignKey(erro => erro.AddedWho) .HasPrincipalKey(r => r.EmailAddress); - modelBuilder.Entity() - .HasOne(erro => erro.Envelope) - .WithMany() - .HasForeignKey(erro => (int) erro.EnvelopeId); - // Configure entities to handle database triggers modelBuilder.Entity().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS")); modelBuilder.Entity().ToTable(tb => tb.HasTrigger("TBSIG_ENVELOPE_HISTORY_AFT_INS")); diff --git a/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeReceiverReadOnlyRepository.cs b/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeReceiverReadOnlyRepository.cs index acbdd1f6..f4d21fc2 100644 --- a/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeReceiverReadOnlyRepository.cs +++ b/EnvelopeGenerator.Infrastructure/Repositories/EnvelopeReceiverReadOnlyRepository.cs @@ -7,15 +7,46 @@ namespace EnvelopeGenerator.Infrastructure.Repositories { public class EnvelopeReceiverReadOnlyRepository : CRUDRepository, IEnvelopeReceiverReadOnlyRepository { - public EnvelopeReceiverReadOnlyRepository(EGDbContext dbContext) : base(dbContext, dbContext.EnvelopeReceiverReadOnlys) + private readonly IEnvelopeRepository _envRepo; + + public EnvelopeReceiverReadOnlyRepository(EGDbContext dbContext, IEnvelopeRepository envelopeRepository) : base(dbContext, dbContext.EnvelopeReceiverReadOnlys) { + _envRepo = envelopeRepository; } protected override IQueryable ReadOnly() { return base.ReadOnly() - .Include(erro => erro.Envelope) + //TODO: add again when EnvelopeId data type is standardized + //.Include(erro => erro.Envelope) .Include(erro => erro.Receiver); } + + public async override Task> ReadAllAsync() + { + var erros = await base.ReadAllAsync(); + return await IncludeEnvelope(erros); + } + + //TODO: Use IQueryable.Include instead of this when ID type is clarified. + [Obsolete("Use IQueryable.Include instead of this when ID type is clarified.")] + private async Task> IncludeEnvelope(params EnvelopeReceiverReadOnly[] erros) + { + foreach (var erro in erros) + erro.Envelope = await _envRepo.ReadByIdAsync((int) erro.EnvelopeId); + + return erros; + } + + //TODO: Use IQueryable.Include instead of this when ID type is clarified. + [Obsolete("Use IQueryable.Include instead of this when ID type is clarified.")] + private async Task IncludeEnvelope(T erros) + where T : IEnumerable + { + foreach (var erro in erros) + erro.Envelope = await _envRepo.ReadByIdAsync((int)erro.EnvelopeId); + + return erros; + } } } \ No newline at end of file