feat: ReadByUsernameAsync-Methode erweitert, um Statusfilter hinzuzufügen
- `ReadByUsernameAsync` aktualisiert, um optionale Parameter `min_status`, `max_status` und `ignore_statuses` zu unterstützen. - Abfrage optimiert, um Umschläge basierend auf Statuswerten zu filtern. - Ermöglicht das Abrufen von Umschlägen mit spezifischen Statusbereichen oder das Ignorieren bestimmter Status.
This commit is contained in:
parent
11e8c46e44
commit
15eabfc834
@ -19,6 +19,6 @@ namespace EnvelopeGenerator.Infrastructure.Contracts
|
||||
|
||||
Task<string?> ReadAccessCodeByIdAsync(int envelopeId, int receiverId);
|
||||
|
||||
Task<IEnumerable<EnvelopeReceiver>> ReadByUsernameAsync(string username);
|
||||
Task<IEnumerable<EnvelopeReceiver>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses);
|
||||
}
|
||||
}
|
||||
@ -49,7 +49,7 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
|
||||
|
||||
public async Task<int> CountAsync(string uuid, string signature) => await ReadWhere(uuid: uuid, signature: signature).CountAsync();
|
||||
|
||||
public IQueryable<EnvelopeReceiver> ReadById(int envelopeId, int receiverId) => _dbSet
|
||||
public IQueryable<EnvelopeReceiver> ReadById(int envelopeId, int receiverId) => _dbSet.AsNoTracking()
|
||||
.Where(er => er.EnvelopeId == envelopeId && er.ReceiverId == receiverId);
|
||||
|
||||
public async Task<EnvelopeReceiver?> ReadByIdAsync(int envelopeId, int receiverId)
|
||||
@ -61,11 +61,20 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
|
||||
.Select(er => er.AccessCode)
|
||||
.FirstOrDefaultAsync();
|
||||
|
||||
public async Task<IEnumerable<EnvelopeReceiver>> ReadByUsernameAsync(string username) => await _dbSet
|
||||
.AsNoTracking()
|
||||
.Where(er => er.Envelope!.User!.Username == username)
|
||||
.Include(er => er.Envelope)
|
||||
.Include(er => er.Receiver)
|
||||
.ToListAsync();
|
||||
public async Task<IEnumerable<EnvelopeReceiver>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses)
|
||||
{
|
||||
var query = _dbSet.AsNoTracking().Where(er => er.Envelope!.User!.Username == username);
|
||||
|
||||
if (min_status is not null)
|
||||
query = query.Where(er => er.Envelope!.Status >= min_status);
|
||||
|
||||
if (max_status is not null)
|
||||
query = query.Where(er => er.Envelope!.Status <= max_status);
|
||||
|
||||
foreach (var ignore_status in ignore_statuses)
|
||||
query = query.Where(er => er.Envelope!.Status != ignore_status);
|
||||
|
||||
return await query.Include(er => er.Envelope).Include(er => er.Receiver).ToListAsync();
|
||||
}
|
||||
}
|
||||
}
|
||||
Loading…
x
Reference in New Issue
Block a user