Add tenant services
This commit is contained in:
		| @@ -9,14 +9,13 @@ using Core.Thalos.BuildingBlocks; | ||||
| using Core.Thalos.Provider.Contracts; | ||||
| using Microsoft.AspNetCore.Authorization; | ||||
| using Microsoft.AspNetCore.Mvc; | ||||
| using Microsoft.Graph; | ||||
| using ModuleRequest = Core.Thalos.Domain.Contexts.Onboarding.Request.ModuleRequest; | ||||
| using StatusEnum = Core.Blueprint.Mongo.StatusEnum; | ||||
|  | ||||
| namespace LSA.Core.Thalos.API.Controllers | ||||
| { | ||||
|     /// <summary> | ||||
|     /// Handles all requests for module authentication. | ||||
|     /// Handles all requests for module management. | ||||
|     /// </summary> | ||||
|     [ApiVersion(MimeTypes.ApplicationVersion)] | ||||
|     [Route("api/v{api-version:apiVersion}/[controller]")] | ||||
| @@ -27,71 +26,47 @@ namespace LSA.Core.Thalos.API.Controllers | ||||
|     public class ModuleController(IModuleProvider service) : ControllerBase | ||||
|     { | ||||
|         /// <summary> | ||||
|         /// Gets all the modules. | ||||
|         /// Gets all modules. | ||||
|         /// </summary> | ||||
|         /// <returns>The <see cref="IEnumerable{ModuleAdapter}"/> found entities.</returns> | ||||
|         /// <response code="200">The roles found.</response> | ||||
|         /// <response code="404">The roles not found error.</response> | ||||
|         /// <response code="500">The service internal error.</response> | ||||
|         [HttpGet] | ||||
|         [Consumes(MimeTypes.ApplicationJson)] | ||||
|         [Produces(MimeTypes.ApplicationJson)] | ||||
|         [ProducesResponseType(typeof(IEnumerable<ModuleAdapter>), StatusCodes.Status200OK)] | ||||
|         [Permission("ModuleManagement.Read, RoleManagement.Read")] | ||||
|         public async Task<IActionResult> GetAllModulesAsync(CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.GetAllModules(cancellationToken).ConfigureAwait(false); | ||||
|             var result = await service.GetAllModules(cancellationToken); | ||||
|             return Ok(result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets all the modules by module identifiers. | ||||
|         /// </summary> | ||||
|         /// <param name="modules">The list of module identifiers.</param> | ||||
|         /// <returns>The <see cref="IEnumerable{ModuleAdapter}"/> found entities.</returns> | ||||
|         /// <response code="200">The modules found.</response> | ||||
|         /// <response code="404">The modules not found error.</response> | ||||
|         /// <response code="500">The service internal error.</response> | ||||
|         [HttpPost] | ||||
|         [Route(Routes.GetModuleList)] | ||||
|         [Consumes(MimeTypes.ApplicationJson)] | ||||
|         [Produces(MimeTypes.ApplicationJson)] | ||||
|         [ProducesResponseType(typeof(IEnumerable<ModuleAdapter>), StatusCodes.Status200OK)] | ||||
|         [Permission("ModuleManagement.Read")] | ||||
|         public async Task<IActionResult> GetAllModulesByList([FromBody] string[] modules, CancellationToken cancellationToken) | ||||
|         { | ||||
|             if (modules == null || !modules.Any()) | ||||
|             { | ||||
|                 return BadRequest("Module identifiers are required."); | ||||
|             } | ||||
|  | ||||
|             var result = await service.GetAllModulesByList(modules, cancellationToken).ConfigureAwait(false); | ||||
|             var result = await service.GetAllModulesByList(modules, cancellationToken); | ||||
|             return Ok(result); | ||||
|         } | ||||
|  | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Gets the module by identifier. | ||||
|         /// Gets the module by mongo identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="id">The module identifier.</param> | ||||
|         /// <returns>The <see cref="ModuleAdapter"/> found entity.</returns> | ||||
|         /// <response code="200">The module found.</response> | ||||
|         /// <response code="404">The module not found error.</response> | ||||
|         /// <response code="500">The service internal error.</response> | ||||
|         [HttpGet] | ||||
|         [Route(Routes.Id)] | ||||
|         [Consumes(MimeTypes.ApplicationJson)] | ||||
|         [Produces(MimeTypes.ApplicationJson)] | ||||
|         [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] | ||||
|         [ProducesResponseType(StatusCodes.Status404NotFound)] | ||||
|         [Permission("ModuleManagement.Read")] | ||||
|         public async Task<IActionResult> GetModuleByIdAsync([FromRoute] string id, CancellationToken cancellationToken) | ||||
|         public async Task<IActionResult> GetModuleByIdAsync([FromRoute] string _id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.GetModuleById(id, cancellationToken).ConfigureAwait(false); | ||||
|             var result = await service.GetModuleById(_id, cancellationToken); | ||||
|  | ||||
|             if (result == null) | ||||
|             { | ||||
|                 return NotFound("Entity not found"); | ||||
|             } | ||||
|  | ||||
|             return Ok(result); | ||||
|         } | ||||
| @@ -99,67 +74,67 @@ namespace LSA.Core.Thalos.API.Controllers | ||||
|         /// <summary> | ||||
|         /// Creates a new module. | ||||
|         /// </summary> | ||||
|         /// <param name="newModule">The module to be added.</param> | ||||
|         /// <returns>The <see cref="ModuleAdapter"/> created entity.</returns> | ||||
|         /// <response code="201">The module created.</response> | ||||
|         /// <response code="422">The module could not be created.</response> | ||||
|         /// <response code="500">The service internal e|ror.</response> | ||||
|         [HttpPost] | ||||
|         [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status201Created)] | ||||
|         [ProducesResponseType(StatusCodes.Status422UnprocessableEntity)] | ||||
|         [Permission("ModuleManagement.Write")] | ||||
|         public async Task<IActionResult> CreateModuleAsync([FromBody] ModuleRequest newModule, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.CreateModule(newModule, cancellationToken).ConfigureAwait(false); | ||||
|             var result = await service.CreateModule(newModule, cancellationToken); | ||||
|             return Created("CreatedWithIdAsync", result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Updates a full module by identifier. | ||||
|         /// Updates a full module by mongo identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="entity">The module to update.</param> | ||||
|         /// <param name="id">The module identifier.</param> | ||||
|         /// <returns>The <see cref="ModuleAdapter"/> updated entity.</returns> | ||||
|         /// <response code="200">The module updated.</response> | ||||
|         /// <response code="404">The module not found.</response> | ||||
|         /// <response code="422">The module could not be updated.</response> | ||||
|         /// <response code="500">The service internal error.</response> | ||||
|         [HttpPut] | ||||
|         [Route(Routes.Id)] | ||||
|         [Consumes(MimeTypes.ApplicationJson)] | ||||
|         [Produces(MimeTypes.ApplicationJson)] | ||||
|         [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] | ||||
|         [ProducesResponseType(StatusCodes.Status400BadRequest)] | ||||
|         [ProducesResponseType(StatusCodes.Status422UnprocessableEntity)] | ||||
|         [Permission("ModuleManagement.Write")] | ||||
|         public async Task<IActionResult> UpdateModuleAsync([FromRoute] string id, ModuleAdapter entity, CancellationToken cancellationToken) | ||||
|         public async Task<IActionResult> UpdateModuleAsync([FromRoute] string _id, [FromBody] ModuleAdapter entity, CancellationToken cancellationToken) | ||||
|         { | ||||
|             if (id != entity.Id?.ToString()) | ||||
|             { | ||||
|             if (_id != entity._Id) | ||||
|                 return BadRequest("Module ID mismatch"); | ||||
|             } | ||||
|  | ||||
|             var result = await service.UpdateModule(entity, cancellationToken).ConfigureAwait(false); | ||||
|  | ||||
|             var result = await service.UpdateModule(entity, cancellationToken); | ||||
|             return Ok(result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Changes the status of the module. | ||||
|         /// </summary> | ||||
|         /// <param name="id">The module identifier.</param> | ||||
|         /// <param name="newStatus">The new status of the module.</param> | ||||
|         /// <returns>The <see cref="ModuleAdapter"/> updated entity.</returns> | ||||
|         /// <response code="200">The module updates.</response> | ||||
|         /// <response code="404">The module not found.</response> | ||||
|         /// <response code="422">The module could not be deleted.</response> | ||||
|         /// <response code="500">The service internal error.</response> | ||||
|         [HttpPatch] | ||||
|         [Route(Routes.ChangeStatus)] | ||||
|         [Consumes(MimeTypes.ApplicationJson)] | ||||
|         [Produces(MimeTypes.ApplicationJson)] | ||||
|         [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] | ||||
|         [Permission("ModuleManagement.Write")] | ||||
|         public async Task<IActionResult> ChangeModuleStatus([FromRoute] string id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) | ||||
|         public async Task<IActionResult> ChangeModuleStatus([FromRoute] string _id, [FromRoute] StatusEnum newStatus, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.ChangeModuleStatus(id, newStatus, cancellationToken).ConfigureAwait(false); | ||||
|             var result = await service.ChangeModuleStatus(_id, newStatus, cancellationToken); | ||||
|             return Ok(result); | ||||
|         } | ||||
|  | ||||
|         /// <summary> | ||||
|         /// Deletes a module by mongo identifier. | ||||
|         /// </summary> | ||||
|         /// <param name="_id">The module Mongo mongo identifier.</param> | ||||
|         /// <param name="cancellationToken">Cancellation token for async operation.</param> | ||||
|         /// <returns>The deleted <see cref="ModuleAdapter"/> if found.</returns> | ||||
|         /// <response code="200">The module was successfully deleted.</response> | ||||
|         /// <response code="404">The module was not found.</response> | ||||
|         /// <response code="500">Internal server error.</response> | ||||
|         [HttpDelete] | ||||
|         [Route(Routes.Id)] | ||||
|         [ProducesResponseType(typeof(ModuleAdapter), StatusCodes.Status200OK)] | ||||
|         [ProducesResponseType(StatusCodes.Status404NotFound)] | ||||
|         [Permission("ModuleManagement.Write")] | ||||
|         public async Task<IActionResult> DeleteModuleAsync([FromRoute] string _id, CancellationToken cancellationToken) | ||||
|         { | ||||
|             var result = await service.DeleteModule(_id, cancellationToken); | ||||
|             if (result == null) | ||||
|                 return NotFound("Entity not found"); | ||||
|  | ||||
|             return Ok(result); | ||||
|         } | ||||
|     } | ||||
|   | ||||
		Reference in New Issue
	
	Block a user