Compare commits

...

4 Commits

Author SHA1 Message Date
Developer 02
9cc15f9beb feat: Envelope-Status-Enum erstellt 2024-08-21 09:13:57 +02:00
Developer 02
d323244157 feat: Füge Abfrageparameter zum GetEnvelopeReceiver-Endpunkt hinzu
- Optionale Abfrageparameter hinzugefügt: min_status, max_status und ignore_status.
- ignore_status standardmäßig auf ein leeres Array gesetzt, wenn nicht bereitgestellt.
- Aktualisierte _erService.ReadByUsernameAsync-Methode, um neue Parameter einzuschließen.
- Bestehende Fehlerbehandlung und Protokollierung beibehalten.
2024-08-20 16:15:11 +02:00
Developer 02
56d35c65bb feat: ReadByUsernameAsync-Methode im Service aktualisiert, um Statusfilter zu unterstützen
- `ReadByUsernameAsync` Methode angepasst, um zusätzliche Parameter `min_status`, `max_status` und `ignore_statuses` zu integrieren.
- Die Methode ruft jetzt die aktualisierte Repository-Methode auf, um Umschläge basierend auf Statusfiltern abzurufen.
- DTO-Zuordnung und Erfolgsrückgabe beibehalten.
2024-08-20 12:30:17 +02:00
Developer 02
15eabfc834 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.
2024-08-20 11:28:25 +02:00
6 changed files with 48 additions and 14 deletions

View File

@@ -24,6 +24,6 @@ namespace EnvelopeGenerator.Application.Contracts
Task<DataResult<bool>> IsExisting(string envelopeReceiverId); Task<DataResult<bool>> IsExisting(string envelopeReceiverId);
Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username); Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses);
} }
} }

View File

@@ -116,9 +116,9 @@ namespace EnvelopeGenerator.Application.Services
: Result.Success(code); : Result.Success(code);
} }
public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username) public async Task<DataResult<IEnumerable<EnvelopeReceiverDto>>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses)
{ {
var er_list = await _repository.ReadByUsernameAsync(username: username); var er_list = await _repository.ReadByUsernameAsync(username: username, min_status: min_status, max_status: max_status, ignore_statuses: ignore_statuses);
var dto_list = _mapper.MapOrThrow<IEnumerable<EnvelopeReceiverDto>>(er_list); var dto_list = _mapper.MapOrThrow<IEnumerable<EnvelopeReceiverDto>>(er_list);
return Result.Success(dto_list); return Result.Success(dto_list);
} }

View File

@@ -0,0 +1,23 @@
export enum Status {
Invalid = 0,
EnvelopeCreated = 1001,
EnvelopeSaved = 1002,
EnvelopeQueued = 1003,
EnvelopeSent = 1004,
EnvelopePartlySigned = 1005,
EnvelopeCompletelySigned = 1006,
EnvelopeReportCreated = 1007,
EnvelopeArchived = 1008,
EnvelopeDeleted = 1009,
AccessCodeRequested = 2001,
AccessCodeCorrect = 2002,
AccessCodeIncorrect = 2003,
DocumentOpened = 2004,
DocumentSigned = 2005,
SignatureConfirmed = 2006,
MessageInvitationSent = 3001,
MessageAccessCodeSent = 3002,
MessageConfirmationSent = 3003,
MessageDeletionSent = 3004,
MessageCompletionSent = 3005
}

View File

@@ -17,10 +17,10 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
_logger = logger; _logger = logger;
_erService = envelopeReceiverService; _erService = envelopeReceiverService;
} }
[Authorize] [Authorize]
[HttpGet] [HttpGet]
public async Task<IActionResult> GetEnvelopeReceiver() public async Task<IActionResult> GetEnvelopeReceiver([FromQuery] int? min_status = null, [FromQuery] int? max_status = null, [FromQuery] int[]? ignore_status = null)
{ {
try try
{ {
@@ -33,7 +33,9 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
return StatusCode(StatusCodes.Status500InternalServerError); return StatusCode(StatusCodes.Status500InternalServerError);
} }
return await _erService.ReadByUsernameAsync(username).ThenAsync( ignore_status ??= Array.Empty<int>();
return await _erService.ReadByUsernameAsync(username: username, min_status: min_status, max_status: max_status, ignore_statuses: ignore_status).ThenAsync(
Success: Ok, Success: Ok,
Fail: IActionResult (msg, ntc) => Fail: IActionResult (msg, ntc) =>
{ {

View File

@@ -19,6 +19,6 @@ namespace EnvelopeGenerator.Infrastructure.Contracts
Task<string?> ReadAccessCodeByIdAsync(int envelopeId, int receiverId); 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);
} }
} }

View File

@@ -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 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); .Where(er => er.EnvelopeId == envelopeId && er.ReceiverId == receiverId);
public async Task<EnvelopeReceiver?> ReadByIdAsync(int envelopeId, int receiverId) public async Task<EnvelopeReceiver?> ReadByIdAsync(int envelopeId, int receiverId)
@@ -61,11 +61,20 @@ namespace EnvelopeGenerator.Infrastructure.Repositories
.Select(er => er.AccessCode) .Select(er => er.AccessCode)
.FirstOrDefaultAsync(); .FirstOrDefaultAsync();
public async Task<IEnumerable<EnvelopeReceiver>> ReadByUsernameAsync(string username) => await _dbSet public async Task<IEnumerable<EnvelopeReceiver>> ReadByUsernameAsync(string username, int? min_status = null, int? max_status = null, params int[] ignore_statuses)
.AsNoTracking() {
.Where(er => er.Envelope!.User!.Username == username) var query = _dbSet.AsNoTracking().Where(er => er.Envelope!.User!.Username == username);
.Include(er => er.Envelope)
.Include(er => er.Receiver) if (min_status is not null)
.ToListAsync(); 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();
}
} }
} }