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