diff --git a/DigitalData.Core.API/CRUDControllerBase.cs b/DigitalData.Core.API/CRUDControllerBase.cs index 4c68628..9da2dfb 100644 --- a/DigitalData.Core.API/CRUDControllerBase.cs +++ b/DigitalData.Core.API/CRUDControllerBase.cs @@ -50,16 +50,19 @@ namespace DigitalData.Core.API [HttpPost] public virtual async Task Create(TCreateDto createDto) { - var result = await _service.CreateAsync(createDto); - if (result.IsSuccess) - { - var createdResource = new { Id = result.Data }; - var actionName = nameof(GetById); - var routeValues = new { id = createdResource.Id }; - return CreatedAtAction(actionName, routeValues, createdResource); - } - - return BadRequest(result); + return await _service.CreateAsync(createDto).ThenAsync( + Success: id => + { + var createdResource = new { Id = id }; + var actionName = nameof(GetById); + var routeValues = new { id = createdResource.Id }; + return CreatedAtAction(actionName, routeValues, createdResource); + }, + Fail: (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); } /// @@ -70,12 +73,13 @@ namespace DigitalData.Core.API [HttpGet("{id}")] public virtual async Task GetById([FromRoute] TId id) { - var result = await _service.ReadByIdAsync(id); - if (result.IsSuccess) - { - return Ok(result); - } - return NotFound(result); + return await _service.ReadByIdAsync(id).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); } /// @@ -85,12 +89,13 @@ namespace DigitalData.Core.API [HttpGet] public virtual async Task GetAll() { - var result = await _service.ReadAllAsync(); - if (result.IsSuccess) - { - return Ok(result); - } - return NotFound(result); + return await _service.ReadAllAsync().ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); } /// @@ -101,12 +106,13 @@ namespace DigitalData.Core.API [HttpPut] public virtual async Task Update(TUpdateDto updateDto) { - var result = await _service.UpdateAsync(updateDto); - if (result.IsSuccess) - { - return Ok(result); - } - return BadRequest(result); + return await _service.UpdateAsync(updateDto).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); } /// @@ -117,13 +123,13 @@ namespace DigitalData.Core.API [HttpDelete("{id}")] public virtual async Task Delete([FromRoute] TId id) { - var result = await _service.DeleteAsyncById(id); - if (result.IsSuccess) - { - return Ok(result); - } - return BadRequest(result); + return await _service.DeleteAsyncById(id).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); } - } } \ No newline at end of file