/* * 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 Swashbuckle.AspNetCore.SwaggerGen; using Newtonsoft.Json; using System.ComponentModel.DataAnnotations; using IO.Swagger.Attributes; using IO.Swagger.Security; using Microsoft.AspNetCore.Authorization; using IO.Swagger.DTO; using EPAServeur.Services; using EPAServeur.IServices; using EPAServeur.Models.Notes; using Microsoft.Extensions.Logging; namespace IO.Swagger.Controllers { /// /// /// [ApiController] public class NotesApiController : ControllerBase { private readonly INoteService noteService; private readonly ILogger logger; public NotesApiController(INoteService _noteService, ILogger _logger) { noteService = _noteService; logger = _logger; } /// /// /// /// Supprimer une note /// id note /// Note supprimée /// Acces interdit /// Ressource n'a pas été trouvée [HttpDelete] [Route("/api/notes/{idNote}/supprimer")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("DeleteNote")] [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 IActionResult DeleteNote([FromRoute][Required]long? idNote) { //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); logger.LogInformation("Suppresion de la note {idNote}", idNote); if (!noteService.SupprimerNote(idNote)) { logger.LogError("Impossible de supprimer la note d'id {idNote} car elle n'existe pas", idNote); ErreurDTO erreur = new ErreurDTO() { Code = "404", Message = "Aucune note trouvé" }; return NotFound(erreur); }; logger.LogInformation("Note {idNote} supprimée avec sucès", idNote); return NoContent(); } /// /// /// /// Récupérer une note par son id /// id note /// OK /// Acces interdit /// Ressource n'a pas été trouvée [HttpGet] [Route("/api/notes/{idNote}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNoteById")] [SwaggerResponse(statusCode: 200, type: typeof(DetailsNoteDTO), 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 IActionResult GetNoteById([FromRoute][Required]long? idNote) { //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); logger.LogInformation("Récupération de la note {idNote}", idNote); DetailsNoteDTO note = noteService.GetNoteById(idNote); if(note == null) { logger.LogError("Aucune note ne correspond à l'id {idNote} cherché", idNote); ErreurDTO erreur = new ErreurDTO() { Code = "404", Message = "Aucune note n'a été trouvée" }; return NotFound(erreur); } logger.LogInformation("Note d'id {idNote} trouvée",idNote); return Ok(note); } /// /// /// /// Récupérer toutes les notes /// 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 /// Texte permettant d'identifier l'objet rechercher /// Colonne du tableau sur lequel le tri s'effectue /// OK /// Acces interdit [HttpGet] [Route("/api/notes/")] [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNotes")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] public virtual IActionResult GetNotes([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]string texte, [FromQuery]string tri) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(200, default(List)); //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); throw new NotImplementedException(); } /// /// /// /// Récupérer les notes d'une personne a écrite /// Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false) /// id referent /// 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/notes/auteur/{idReferent}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNotesByAuteur")] [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 IActionResult GetNotesByAuteur([FromQuery][Required()]bool? asc, [FromRoute][Required]Guid? idReferent, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]string texte, [FromQuery]string tri) { //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); logger.LogInformation("Récupération des notes de l'auteur d'id {idReferent}", idReferent); IEnumerable notes = noteService.GetNotesByAuteur(idReferent, asc, numPage, parPAge, texte, tri); if(notes == null) { logger.LogError("Le référent {idReferent} n'a pas été trouvé", idReferent); ErreurDTO erreur = new ErreurDTO() { Code = "404", Message = "Aucun id ne correspond au référent" }; return NotFound(erreur); } logger.LogInformation("Liste des notes de l'auteur {idReferent} trouvée", idReferent); return Ok(notes); } /// /// /// /// Récupérer une note par son id /// Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false) /// id collaborateur /// id referent /// 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/notes/auteur/{idReferent}/collaborateur/{idCollaborateur}")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("GetNotesByCollaborateur")] [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 IActionResult GetNotesByCollaborateur([FromQuery][Required()]bool? asc, [FromRoute][Required]Guid? idCollaborateur, [FromRoute][Required]Guid? idReferent, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]string texte, [FromQuery]string tri) { //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); logger.LogInformation("Récupération des notes de l'auteur {idReferent} sur un collaborateur {idCollaborateur}", idReferent, idCollaborateur); IEnumerable notes = noteService.GetNotesByCollaborateur(idReferent, idCollaborateur, asc, numPage, parPAge, texte, tri); if (notes == null) { logger.LogInformation("auteur {idReferent} ou collaborateur {idCollaborateur} introuvable", idReferent, idCollaborateur); ErreurDTO erreur = new ErreurDTO() { Code = "404", Message = "Aucun id ne correspond au référent et/ou au collaborateur" }; return NotFound(erreur); } logger.LogInformation("Liste des notes de l'auteur {idReferent} sur un collaborateur {idCollaborateur} trouvée", idReferent, idCollaborateur); return Ok(notes); } /// /// /// /// Ajouter une nouvelle note /// /// Note créée avec succès /// Acces interdit [HttpPost] [Route("/api/notes/nouvellenote")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("NouvelleNote")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] public virtual IActionResult NouvelleNote([FromBody]DetailsNoteDTO body) { //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); logger.LogInformation("Ajout d'une nouvelle note"); Note nouvelleNote = noteService.AjouterNote(body); logger.LogInformation("Nouvelle note ajoutée"); return Created("",nouvelleNote); } /// /// /// /// Mettre à jour une note /// /// id note /// Note mise à jour avec succès /// Note créée avec succès /// Acces interdit [HttpPut] [Route("/api/notes/{idNote}/updateNote")] //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)] [ValidateModelState] [SwaggerOperation("UpdateNote")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] public virtual IActionResult UpdateNote([FromBody] DetailsNoteDTO body, [FromRoute][Required] long? idNote) { //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(403, default(ErreurDTO)); logger.LogInformation("Mise à jour de la note d'id {idNote}", idNote); Note note = noteService.UpdateNote(idNote, body); if (note == null) { logger.LogInformation(""); note = noteService.AjouterNote(body); logger.LogInformation("Ajout effectuer avec succès"); } else logger.LogInformation("Update effectué avec succès"); return Ok(note); //TODO: Uncomment the next line to return response 201 or use other options such as return this.NotFound(), return this.BadRequest(..), ... // return StatusCode(201); } } }