diff --git a/DigitalData.UserManager.API/Controllers/DirectoryController.cs b/DigitalData.UserManager.API/Controllers/DirectoryController.cs index 94fb25f..35bf4e2 100644 --- a/DigitalData.UserManager.API/Controllers/DirectoryController.cs +++ b/DigitalData.UserManager.API/Controllers/DirectoryController.cs @@ -117,8 +117,11 @@ namespace DigitalData.UserManager.API.Controllers if (dirEntryUsername is null) return Unauthorized(); - var result = _dirSearchService.FindAllByUserCache(dirEntryUsername, filter, properties: propName); - return Ok(result); + return _dirSearchService.FindAllByUserCache(dirEntryUsername, filter, properties: propName).Then(Ok, IActionResult (m, n) => + { + _logger.LogNotice(n); + return StatusCode(StatusCodes.Status424FailedDependency); + }); } catch (Exception ex) { @@ -142,9 +145,11 @@ namespace DigitalData.UserManager.API.Controllers if (filter is null) return NotFound($"The filter named {filterName} does not exist."); - var result = _dirSearchService.FindAllByUserCache(dirEntryUsername, filter, properties: propName); - - return Ok(result); + return _dirSearchService.FindAllByUserCache(dirEntryUsername, filter, properties: propName).Then(Ok, IActionResult (m, n) => + { + _logger.LogNotice(n); + return StatusCode(StatusCodes.Status424FailedDependency); + }); } catch (Exception ex) { @@ -168,9 +173,11 @@ namespace DigitalData.UserManager.API.Controllers if (filter is null) throw new InvalidOperationException("The LDAP Group Search filter configuration is missing in your appsettings. Please ensure it's added under DirectorySearch:CustomSearchFilters:Group to enable group searches."); - var result = _dirSearchService.FindAllByUserCache(username: dirEntryUsername, filter, properties: propName); - - return Ok(result); + return _dirSearchService.FindAllByUserCache(username: dirEntryUsername, filter, properties: propName).Then(Ok, IActionResult (m, n) => + { + _logger.LogNotice(n); + return StatusCode(StatusCodes.Status424FailedDependency); + }); } catch (Exception ex) { @@ -195,15 +202,21 @@ namespace DigitalData.UserManager.API.Controllers if (filter is null) throw new InvalidOperationException("The LDAP User Search filter configuration is missing in your appsettings. Please ensure it's added under DirectorySearch:CustomSearchFilters:User to enable group searches."); - var result = _dirSearchService.FindAllByUserCache(username: dirEntryUsername, filter, properties: propName); - - if (groupName is not null && result.IsSuccess && result.Data is not null) - result.Data = result.Data - .Where(rp => rp.PropertyNames.Cast().Contains("memberof") && - rp["memberof"].Cast().Any(ldapDir => ldapDir.Contains(groupName))) - .ToList(); - - return Ok(result); + return _dirSearchService.FindAllByUserCache(username: dirEntryUsername, filter, properties: propName).Then( + Success: data => + { + if (groupName is not null) + data = data + .Where(rp => rp.PropertyNames.Cast().Contains("memberof") && + rp["memberof"].Cast().Any(ldapDir => ldapDir.Contains(groupName))) + .ToList(); + return Ok(data); + }, + Fail: IActionResult (m, n) => + { + _logger.LogNotice(n); + return StatusCode(StatusCodes.Status424FailedDependency); + }); } catch (Exception ex) { diff --git a/DigitalData.UserManager.API/Controllers/GroupController.cs b/DigitalData.UserManager.API/Controllers/GroupController.cs index 2d80ed6..a5ba919 100644 --- a/DigitalData.UserManager.API/Controllers/GroupController.cs +++ b/DigitalData.UserManager.API/Controllers/GroupController.cs @@ -1,4 +1,5 @@ using DigitalData.Core.API; +using DigitalData.Core.DTO; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.Group; using DigitalData.UserManager.Domain.Entities; @@ -19,15 +20,19 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = await _service.CreateAsync(adGroup); - 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(adGroup).ThenAsync( + Success: id => + { + var createdResource = new { Id = id }; + var actionName = nameof(GetById); + var routeValues = new { id = createdResource.Id }; + return CreatedAtAction(actionName, routeValues, createdResource); + }, + Fail: IActionResult (m, n) => + { + _logger.LogNotice(n); + return BadRequest(); + }); } catch (Exception ex) { diff --git a/DigitalData.UserManager.API/Controllers/GroupOfUserController.cs b/DigitalData.UserManager.API/Controllers/GroupOfUserController.cs index 865f191..99f9dae 100644 --- a/DigitalData.UserManager.API/Controllers/GroupOfUserController.cs +++ b/DigitalData.UserManager.API/Controllers/GroupOfUserController.cs @@ -1,4 +1,5 @@ using DigitalData.Core.API; +using DigitalData.Core.DTO; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.GroupOfUser; using DigitalData.UserManager.Domain.Entities; @@ -19,13 +20,11 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = await _service.DeleteAsyncByGroupUserId(groupId, userId); - if (result.IsSuccess) + return await _service.DeleteAsyncByGroupUserId(groupId, userId).ThenAsync(Ok, IActionResult (m, n) => { - return Ok(result); - } - - return BadRequest(result); + _logger.LogNotice(n); + return BadRequest(); + }); } catch (Exception ex) { @@ -42,13 +41,11 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = await _service.ReadAllAsyncWith(withUser, withGroup); - if (result.IsSuccess) + return await _service.ReadAllAsyncWith(withUser, withGroup).ThenAsync(Ok, IActionResult (m, n) => { - return Ok(result); - } - - return NotFound(result); + _logger.LogNotice(n); + return NotFound(); + }); } catch(Exception ex) { diff --git a/DigitalData.UserManager.API/Controllers/ModuleOfUserController.cs b/DigitalData.UserManager.API/Controllers/ModuleOfUserController.cs index e4389de..be69b8a 100644 --- a/DigitalData.UserManager.API/Controllers/ModuleOfUserController.cs +++ b/DigitalData.UserManager.API/Controllers/ModuleOfUserController.cs @@ -1,4 +1,5 @@ using DigitalData.Core.API; +using DigitalData.Core.DTO; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.ModuleOfUser; using DigitalData.UserManager.Domain.Entities; @@ -19,13 +20,11 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = await _service.DeleteAsyncByModuleUserId(moduleId, userId); - if (result.IsSuccess) + return await _service.DeleteAsyncByModuleUserId(moduleId, userId).ThenAsync(Ok, IActionResult (m, n) => { - return Ok(result); - } - - return BadRequest(result); + _logger.LogNotice(n); + return BadRequest(); + }); } catch(Exception ex) { diff --git a/DigitalData.UserManager.API/Controllers/UserController.cs b/DigitalData.UserManager.API/Controllers/UserController.cs index 194e6b3..0a105ed 100644 --- a/DigitalData.UserManager.API/Controllers/UserController.cs +++ b/DigitalData.UserManager.API/Controllers/UserController.cs @@ -1,9 +1,11 @@ using DigitalData.Core.API; +using DigitalData.Core.DTO; using DigitalData.UserManager.Application.Contracts; using DigitalData.UserManager.Application.DTOs.User; using DigitalData.UserManager.Domain.Entities; using Microsoft.AspNetCore.Authorization; using Microsoft.AspNetCore.Mvc; +using System.Reflection; namespace DigitalData.UserManager.API.Controllers { @@ -19,8 +21,12 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = assigned ? await _service.ReadByModuleIdAsync(moduleId) : await _service.ReadUnassignedByModuleIdAsync(moduleId); - return Ok(result); + return await (assigned ? _service.ReadByModuleIdAsync(moduleId) : _service.ReadUnassignedByModuleIdAsync(moduleId)) + .ThenAsync(Ok, IActionResult(m, n) => + { + _logger.LogNotice(n); + return StatusCode(StatusCodes.Status500InternalServerError); + }); } catch(Exception ex) { @@ -34,8 +40,12 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = assigned ? await _service.ReadByGroupIdAsync(groupId) : await _service.ReadUnassignedByGroupIdAsync(groupId); ; - return Ok(result); + return await (assigned ? _service.ReadByGroupIdAsync(groupId) : _service.ReadUnassignedByGroupIdAsync(groupId)) + .ThenAsync(Ok, IActionResult (m, n) => + { + _logger.LogNotice(n); + return StatusCode(StatusCodes.Status500InternalServerError); + }); } catch(Exception ex) { @@ -49,15 +59,19 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = await _service.CreateAsync(upDto); - 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(upDto).ThenAsync( + Success: id => + { + var createdResource = new { Id = id }; + var actionName = nameof(GetById); + var routeValues = new { id = createdResource.Id }; + return CreatedAtAction(actionName, routeValues, createdResource); + }, + Fail: IActionResult (m, n) => + { + _logger.LogNotice(n); + return BadRequest(); + }); } catch(Exception ex) { @@ -71,12 +85,11 @@ namespace DigitalData.UserManager.API.Controllers { try { - var result = await _service.ReadByUsernameAsync(username); - if (result.IsSuccess) + return await _service.ReadByUsernameAsync(username).ThenAsync(Ok, IActionResult (m, n) => { - return Ok(result); - } - return NotFound(result); + _logger.LogNotice(n); + return NotFound(); + }); } catch(Exception ex) {