- 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.
52 lines
2.1 KiB
C#
52 lines
2.1 KiB
C#
using DigitalData.Core.Infrastructure;
|
|
using EnvelopeGenerator.Domain.Entities;
|
|
using EnvelopeGenerator.Infrastructure.Contracts;
|
|
using Microsoft.EntityFrameworkCore;
|
|
|
|
namespace EnvelopeGenerator.Infrastructure.Repositories
|
|
{
|
|
public class EnvelopeReceiverReadOnlyRepository : CRUDRepository<EnvelopeReceiverReadOnly, long, EGDbContext>, IEnvelopeReceiverReadOnlyRepository
|
|
{
|
|
private readonly IEnvelopeRepository _envRepo;
|
|
|
|
public EnvelopeReceiverReadOnlyRepository(EGDbContext dbContext, IEnvelopeRepository envelopeRepository) : base(dbContext, dbContext.EnvelopeReceiverReadOnlys)
|
|
{
|
|
_envRepo = envelopeRepository;
|
|
}
|
|
|
|
protected override IQueryable<EnvelopeReceiverReadOnly> ReadOnly()
|
|
{
|
|
return base.ReadOnly()
|
|
//TODO: add again when EnvelopeId data type is standardized
|
|
//.Include(erro => erro.Envelope)
|
|
.Include(erro => erro.Receiver);
|
|
}
|
|
|
|
public async override Task<IEnumerable<EnvelopeReceiverReadOnly>> 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<IEnumerable<EnvelopeReceiverReadOnly>> 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<T> IncludeEnvelope<T>(T erros)
|
|
where T : IEnumerable<EnvelopeReceiverReadOnly>
|
|
{
|
|
foreach (var erro in erros)
|
|
erro.Envelope = await _envRepo.ReadByIdAsync((int)erro.EnvelopeId);
|
|
|
|
return erros;
|
|
}
|
|
}
|
|
} |