/* * API du serveur de l'application de digitalisation des EP * * API qui sra utilisée afin de faire communiquer le client et le serveur ainsi que le serveur et la boîte noire. * * OpenAPI spec version: 1.3.4 * * Generated by: https://github.com/swagger-api/swagger-codegen.git */ using System; using System.Collections.Generic; using Microsoft.AspNetCore.Mvc; using Swashbuckle.AspNetCore.Annotations; using Newtonsoft.Json; using System.ComponentModel.DataAnnotations; using IO.Swagger.Attributes; using IO.Swagger.DTO; using EPAServeur.IServices; using System.Net; using Microsoft.AspNetCore.Authorization; using IO.Swagger.Security; using System.Linq; using System.Threading.Tasks; using Microsoft.Extensions.Logging; using IO.Swagger.ClientCollaborateur; using EPAServeur.Exceptions; namespace IO.Swagger.Controllers { /// /// /// [ApiController] public class ReferentsApiController : ControllerBase { private readonly IReferentService referentService; private readonly ILogger logger; public ReferentsApiController(IReferentService _referentService, ILogger _logger) { referentService = _referentService; logger = _logger; } /// /// /// /// Récupérer un referent par son id /// id referent /// OK /// Acces interdit /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/referents/{idReferent}")] ////[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetReferentById")] [SwaggerResponse(statusCode: 200, type: typeof(ReferentDTO), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")] public virtual async Task GetReferentById([FromRoute][Required]Guid? idReferent) { logger.LogInformation("Récupération du référent {idReferent}.", idReferent); ReferentDTO referentDTO = null; try { referentDTO = await referentService.GetReferentByIdAsync(idReferent); } catch (ApiException) { logger.LogError("Une erreur est survenue lors de la communication avec le service Collaborateur pour récupérer le référent par son id {idReferent}.", idReferent); } catch (ReferentNotFoundException) { logger.LogError("Le référent {idReferent} est introuvable.", idReferent); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", Message = "Le référent n'existe pas", }; return NotFound(erreurDTO); } catch (Exception) { logger.LogError("Une erreur inconnue est survenue lors de la récupération du référent {idReferent}.", idReferent); } logger.LogInformation("Référent {idReferent} récupéré.", idReferent); return Ok(referentDTO); } /// /// /// /// Récupérer la liste de tous les referents /// Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false) /// Numéro de la page du tableau qui affiche les données /// Nombre d'éléments affiché sur chaque page du tableau /// Liste des fonctions des collaborateurs que l'on veut récupérer /// id de l'agence à laquelle sont rattachées les données à récupérer /// id de la business unit à laquelle sont rattachées les données à récupérer /// Texte permettant d'identifier l'objet rechercher /// Colonne du tableau sur lequel le tri s'effectue /// OK /// Acces interdit [HttpGet] [Route("/api/referents")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetReferents")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] public virtual IActionResult GetReferents([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]List fonctions, [FromQuery]long? idAgence, [FromQuery]long? idBU, [FromQuery]string texte, [FromQuery]string tri) { //IEnumerable referentDTOs = referentService.GetReferents(asc,numPage,parPAge,fonctions,idAgence,idBU,texte,tri); return NoContent(); } /// /// /// /// Récupérer le référent actuel d'un collaborateur /// id collaborateur /// OK /// Acces interdit /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/referents/actuel/collaborateur/{idCollaborateur}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetReferentActuelCollaborateur")] [SwaggerResponse(statusCode: 200, type: typeof(ReferentDTO), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")] public virtual async Task GetReferentActuelCollaborateur([FromRoute][Required] Guid? idCollaborateur) { logger.LogInformation("Récupération du référent actuel du collaborateur {idCollaborateur}.", idCollaborateur); ReferentDTO referentDTO = null; try { referentDTO = await referentService.GetReferentActuelCollaborateurAsync(idCollaborateur); } catch (ApiException) { logger.LogError("Une erreur est survenue lors de la communication avec le service Collaborateur pour récupérer le référent actuel du collaborateur {idCollaborateur}.", idCollaborateur); } catch (ReferentNotFoundException) { logger.LogError("Le référent actuel du collaborateur {idCollaborateur} est introuvable.", idCollaborateur); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", Message = "Aucun référent actuel pour le collaborateur", }; return NotFound(erreurDTO); } catch (Exception) { logger.LogError("Une erreur inconnue est survenue lors de la récupération du référent actuel du collaborateur {idCollaborateur}.", idCollaborateur); } logger.LogInformation("Référent actuel du collaborateur {idCollaborateur} récupéré.", idCollaborateur); return Ok(referentDTO); } /// /// /// /// Récupérer la liste des référents d'un collaborateur /// Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false) /// id collaborateur /// Numéro de la page du tableau qui affiche les données /// Nombre d'éléments affiché sur chaque page du tableau /// Texte permettant d'identifier l'objet rechercher /// Colonne du tableau sur lequel le tri s'effectue /// OK /// Acces interdit /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/referents/collaborateur/{idCollaborateur}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetReferentByCollaborateur")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")] public virtual async Task GetReferentsByCollaborateur([FromQuery][Required()] bool? asc, [FromRoute][Required] Guid? idCollaborateur, [FromQuery][Required()] int? numPage, [FromQuery][Required()] int? parPAge, [FromQuery] string texte, [FromQuery] string tri) { logger.LogInformation("Récupération de la liste des référents du collaborateur {idCollaborateur}.", idCollaborateur); IEnumerable referentDTOs = null; try { referentDTOs = await referentService.GetReferentsByCollaborateurAsync(asc, idCollaborateur, numPage, parPAge, texte, tri); } catch (ApiException) { logger.LogError("Une erreur est survenue lors de la communication avec le service collaborateur lors de la récupération de la liste des référents du collaborateur {idReferent}.", idCollaborateur); } catch (CollaborateurNotFoundException) { ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", Message = "Le collaborateur n'existe pas", }; return NotFound(erreurDTO); } catch (Exception) { logger.LogError("Une erreur inconnue est survenue lors de la récupération des référents du collaborateur {idCollaborateur}.", idCollaborateur); } if (referentDTOs.Count() == 0) { logger.LogInformation("Aucun référent pour le collaborateur {idCollaborateur}.", idCollaborateur); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", Message = "Aucun référent pour le collaborateur", }; return NotFound(erreurDTO); } logger.LogInformation("Liste des référents du collaborateur {idCollaborateur} récupérée", idCollaborateur); return Ok(referentDTOs); } } }