diff --git a/DigitalData.Core.API/CRUDControllerBase.cs b/DigitalData.Core.API/CRUDControllerBase.cs index f3de4a6..1d099c5 100644 --- a/DigitalData.Core.API/CRUDControllerBase.cs +++ b/DigitalData.Core.API/CRUDControllerBase.cs @@ -46,19 +46,27 @@ namespace DigitalData.Core.API [HttpPost] public virtual async Task Create(TCreateDto createDto) { - 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); - }); + try + { + 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); + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "{Message}", ex.Message); + return StatusCode(StatusCodes.Status500InternalServerError); + } } /// @@ -69,13 +77,21 @@ namespace DigitalData.Core.API [HttpGet("{id}")] public virtual async Task GetById([FromRoute] TId id) { - return await _service.ReadByIdAsync(id).ThenAsync( - Success: Ok, - Fail: IActionResult (messages, notices) => - { - _logger.LogNotice(notices); - return NotFound(messages); - }); + try + { + return await _service.ReadByIdAsync(id).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "{Message}", ex.Message); + return StatusCode(StatusCodes.Status500InternalServerError); + } } /// @@ -85,13 +101,21 @@ namespace DigitalData.Core.API [HttpGet] public virtual async Task GetAll() { - return await _service.ReadAllAsync().ThenAsync( - Success: Ok, - Fail: IActionResult (messages, notices) => - { - _logger.LogNotice(notices); - return NotFound(messages); - }); + try + { + return await _service.ReadAllAsync().ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return NotFound(messages); + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "{Message}", ex.Message); + return StatusCode(StatusCodes.Status500InternalServerError); + } } /// @@ -102,13 +126,21 @@ namespace DigitalData.Core.API [HttpPut] public virtual async Task Update(TUpdateDto updateDto) { - return await _service.UpdateAsync(updateDto).ThenAsync( - Success: Ok, - Fail: IActionResult (messages, notices) => - { - _logger.LogNotice(notices); - return BadRequest(messages); - }); + try + { + return await _service.UpdateAsync(updateDto).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); + } + catch(Exception ex) + { + _logger.LogError(ex, "{Message}", ex.Message); + return StatusCode(StatusCodes.Status500InternalServerError); + } } /// @@ -119,13 +151,21 @@ namespace DigitalData.Core.API [HttpDelete("{id}")] public virtual async Task Delete([FromRoute] TId id) { - return await _service.DeleteAsyncById(id).ThenAsync( - Success: Ok, - Fail: IActionResult (messages, notices) => - { - _logger.LogNotice(notices); - return BadRequest(messages); - }); + try + { + return await _service.DeleteAsyncById(id).ThenAsync( + Success: Ok, + Fail: IActionResult (messages, notices) => + { + _logger.LogNotice(notices); + return BadRequest(messages); + }); + } + catch (Exception ex) + { + _logger.LogError(ex, "{Message}", ex.Message); + return StatusCode(StatusCodes.Status500InternalServerError); + } } } } \ No newline at end of file