feat: Löschen nach E-Mail oder Signatur zur Delete-Methode und zum Service hinzugefügt

- Die `Delete`-Methode im Controller aktualisiert, um das Löschen nach `id`, `emailAddress` oder `signature` zu unterstützen.
- `DeleteByAsync`-Methode im Service hinzugefügt, um Datensätze basierend auf `emailAddress` und `signature` zu löschen.
- Fehlerbehandlung mit Protokollierung für fehlgeschlagene Löschversuche verbessert.
This commit is contained in:
Developer 02
2024-08-21 16:37:54 +02:00
parent bfe3d38ecc
commit 306956a7be
3 changed files with 38 additions and 0 deletions

View File

@@ -3,12 +3,14 @@ using DigitalData.Core.DTO;
using EnvelopeGenerator.Application.Contracts;
using EnvelopeGenerator.Application.DTOs.Receiver;
using EnvelopeGenerator.Domain.Entities;
using Microsoft.AspNetCore.Authorization;
using Microsoft.AspNetCore.Mvc;
namespace EnvelopeGenerator.GeneratorAPI.Controllers
{
[Route("api/[controller]")]
[ApiController]
[Authorize]
public class ReceiverController : CRUDControllerBaseWithErrorHandling<IReceiverService, ReceiverCreateDto, ReceiverReadDto, ReceiverUpdateDto, Receiver, int>
{
public ReceiverController(ILogger<ReceiverController> logger, IReceiverService service) : base(logger, service)
@@ -44,5 +46,29 @@ namespace EnvelopeGenerator.GeneratorAPI.Controllers
return await base.Create(createDto);
}
[NonAction]
public override Task<IActionResult> Delete([FromRoute] int id)
{
return base.Delete(id);
}
[HttpDelete]
public async Task<IActionResult> Delete([FromQuery] int? id = null, [FromQuery]string? emailAddress = null, [FromQuery] string? signature = null)
{
if(id is int id_int)
return await base.Delete(id_int);
if (emailAddress is not null && signature is not null)
return await _service.DeleteByAsync(emailAddress: emailAddress, signature: signature).ThenAsync(
Success: Ok,
Fail: IActionResult (msg, ntc) =>
{
_logger.LogNotice(ntc);
return StatusCode(StatusCodes.Status500InternalServerError);
});
return BadRequest();
}
}
}