From 2f0b45406cb28c2ace5d9fe43c2d384643cb2277 Mon Sep 17 00:00:00 2001 From: jboinembalome Date: Wed, 9 Sep 2020 11:33:15 +0200 Subject: [PATCH] =?UTF-8?q?Impl=C3=A9mentation=20compl=C3=A8te=20du=20serv?= =?UTF-8?q?ice=20formation=20et=20de=20l'api=20formation?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Controllers/FormationsApi.cs | 320 ++++++++++++++------------------- IServices/IFormationService.cs | 16 +- Services/FormationService.cs | 196 +++++++++++++++----- 3 files changed, 302 insertions(+), 230 deletions(-) diff --git a/Controllers/FormationsApi.cs b/Controllers/FormationsApi.cs index 5278644..561eb2e 100644 --- a/Controllers/FormationsApi.cs +++ b/Controllers/FormationsApi.cs @@ -19,9 +19,11 @@ using IO.Swagger.Security; using Microsoft.AspNetCore.Authorization; using IO.Swagger.DTO; using EPAServeur.IServices; +using System.Reflection.Metadata.Ecma335; +using System.Runtime.InteropServices.WindowsRuntime; namespace IO.Swagger.Controllers -{ +{ /// /// /// @@ -48,17 +50,19 @@ namespace IO.Swagger.Controllers [ValidateModelState] [SwaggerOperation("AjouterFormation")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] - public virtual IActionResult AjouterFormation([FromBody]FormationDTO body) + public virtual IActionResult AjouterFormation([FromBody] FormationDTO body) { - switch (formationService.AddFormation(body)) - { - case 0: - return StatusCode(201); - case 1: - return Forbid(); - default: - return NotFound(); - } + FormationDTO nouvelleFormation = formationService.AddFormation(body); + + return Created("", nouvelleFormation); + //if (body.Id != null && body.Id > 0) + //{ + // return StatusCode(201, body); + //} + //else + //{ + // return NotFound(); + //} } /// @@ -74,33 +78,18 @@ namespace IO.Swagger.Controllers [ValidateModelState] [SwaggerOperation("DeleteFormation")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] - public virtual IActionResult DeleteFormation([FromRoute][Required]decimal? idFormation) - { - int id = 0; - - try - { - id = Convert.ToInt32(idFormation); - } - catch (Exception ex) + public virtual IActionResult DeleteFormation([FromRoute][Required] decimal? idFormation) + { + if (!formationService.DeleteFormationById(idFormation)) { - ErreurDTO erreurDTO = new ErreurDTO() + ErreurDTO erreur = new ErreurDTO() { - Code = "403", - Message = "Impossible de convertir le paramètre idFormation en int. " + ex.Message + Code = "404", + Message = "Aucune formation trouvée" }; - return StatusCode(403, erreurDTO); - } - - switch (formationService.DeleteFormationById(id)) - { - case 0: - return NoContent(); - case 1: - return Forbid(); - default: - return NotFound(); + return NotFound(erreur); } + return NoContent(); } /// @@ -124,23 +113,21 @@ namespace IO.Swagger.Controllers [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 GetFormationAnnulees([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]int? idAgence, [FromQuery]string texte, [FromQuery]string tri) + public virtual IActionResult GetFormationAnnulees([FromQuery][Required()] bool? asc, [FromQuery][Required()] int? numPage, [FromQuery][Required()] int? parPAge, [FromQuery] int? idAgence, [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, formationService.GetFormationAnnulees()); - - //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)); - - //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - // return StatusCode(404, default(ErreurDTO)); - //string exampleJson = null; - //exampleJson = "[ {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n}, {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n} ]"; + IEnumerable formations = formationService.GetFormationAnnulees(asc, numPage, parPAge, idAgence, texte, tri); + if (formations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucune formation annulée" + }; + return NotFound(erreur); + } - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(formations); } /// @@ -159,33 +146,19 @@ namespace IO.Swagger.Controllers [SwaggerResponse(statusCode: 200, type: typeof(FormationDTO), 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 GetFormationById([FromRoute][Required]decimal? idFormation) + public virtual IActionResult GetFormationById([FromRoute][Required] decimal? idFormation) { - //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(FormationDTO)); - - //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)); - FormationDTO formationDTO = formationService.GetFormationById(Convert.ToInt32(idFormation)); if (formationDTO == null) { ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", - Message = "Le formateur n'existe pas", + Message = "La formation n'existe pas", }; return NotFound(erreurDTO); } return Ok(formationDTO); - - //string exampleJson = null; - //exampleJson = "{\n \"heure\" : 1.4658129805029452,\n \"participantsFormation\" : [ {\n \"date\" : \"2000-01-23T04:56:07.000+00:00\",\n \"idCollaborateur\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"estEvaluee\" : true,\n \"dateCreation\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : 5,\n \"formation\" : \"formation\",\n \"collaborateur\" : \"collaborateur\",\n \"statut\" : \"statut\"\n }, {\n \"date\" : \"2000-01-23T04:56:07.000+00:00\",\n \"idCollaborateur\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"estEvaluee\" : true,\n \"dateCreation\" : \"2000-01-23T04:56:07.000+00:00\",\n \"id\" : 5,\n \"formation\" : \"formation\",\n \"collaborateur\" : \"collaborateur\",\n \"statut\" : \"statut\"\n } ],\n \"organisme\" : \"organisme\",\n \"origine\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"jour\" : 5.962133916683182,\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n }\n}"; - - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject(exampleJson) - // : default(FormationDTO); //TODO: Change the data returned - //return new ObjectResult(example); } /// @@ -209,25 +182,24 @@ namespace IO.Swagger.Controllers [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 GetFormationRealisee([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]int? idAgence, [FromQuery]string texte, [FromQuery]string tri) + public virtual IActionResult GetFormationRealisee([FromQuery][Required()] bool? asc, [FromQuery][Required()] int? numPage, [FromQuery][Required()] int? parPAge, [FromQuery] int? idAgence, [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, formationService.GetFormationRealisee()); - - //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)); - - //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - // return StatusCode(404, default(ErreurDTO)); - //string exampleJson = null; - //exampleJson = "[ {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n}, {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n} ]"; + IEnumerable formations = formationService.GetFormationRealisee(asc, numPage, parPAge, idAgence, texte, tri); + if (formations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucune formation réalisée" + }; + return NotFound(erreur); + } - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(formations); } + /// /// /// @@ -248,20 +220,21 @@ namespace IO.Swagger.Controllers [SwaggerOperation("GetFormations")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] - public virtual IActionResult GetFormations()//[FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]int? idAgence, [FromQuery]int? statutFormation, [FromQuery]string texte, [FromQuery]string tri) + public virtual IActionResult GetFormations([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]int? idAgence, [FromQuery]int? statutFormation, [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, formationService.GetFormations()); + IEnumerable formations = formationService.GetFormations(asc, numPage, parPAge, idAgence, texte, tri); + if (formations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucune formation" + }; + return NotFound(erreur); + } - //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)); - //string exampleJson = null; - //exampleJson = "[ {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n}, {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n} ]"; - - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(formations); } /// @@ -280,17 +253,18 @@ namespace IO.Swagger.Controllers public virtual IActionResult GetModesFormation() { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - return StatusCode(200, formationService.GetModesFormation()); - - //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)); - //string exampleJson = null; - //exampleJson = "[ {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n}, {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n} ]"; + IEnumerable modeFormations = formationService.GetModesFormation(); + if (modeFormations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucun mode de formation" + }; + return NotFound(erreur); + } - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(modeFormations); } /// @@ -309,17 +283,18 @@ namespace IO.Swagger.Controllers public virtual IActionResult GetOriginesFormation() { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - return StatusCode(200, formationService.GetOriginesFormation()); - - //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)); - //string exampleJson = null; - //exampleJson = "[ {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n}, {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n} ]"; + IEnumerable origineFormations = formationService.GetOriginesFormation(); + if (origineFormations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucune origine de formation" + }; + return NotFound(erreur); + } - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(origineFormations); } /// @@ -343,23 +318,21 @@ namespace IO.Swagger.Controllers [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 GetProchainesFormation([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]int? idAgence, [FromQuery]string texte, [FromQuery]string tri) - { + public virtual IActionResult GetProchainesFormation([FromQuery][Required()] bool? asc, [FromQuery][Required()] int? numPage, [FromQuery][Required()] int? parPAge, [FromQuery] int? idAgence, [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)); + IEnumerable formations = formationService.GetProchainesFormation(asc, numPage, parPAge, idAgence, texte, tri); + if (formations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucune prochaine formation" + }; + return NotFound(erreur); + } - //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - // return StatusCode(404, default(ErreurDTO)); - string exampleJson = null; - exampleJson = "[ {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n}, {\n \"mode\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"dateDebut\" : \"2000-01-23T04:56:07.000+00:00\",\n \"estCertifie\" : true,\n \"id\" : 0,\n \"dateFin\" : \"2000-01-23T04:56:07.000+00:00\",\n \"type\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n },\n \"intitule\" : \"intitule\",\n \"statut\" : {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n },\n \"nbPartitipants\" : 1\n} ]"; - - var example = exampleJson != null - ? JsonConvert.DeserializeObject>(exampleJson) - : default(List); //TODO: Change the data returned - return new ObjectResult(example); + return Ok(formations); } /// @@ -378,17 +351,18 @@ namespace IO.Swagger.Controllers public virtual IActionResult GetStatutsFormation() { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - return StatusCode(200, formationService.GetStatutsFormation()); - - //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)); - //string exampleJson = null; - //exampleJson = "[ {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n}, {\n \"libelle\" : \"libelle\",\n \"id\" : 6\n} ]"; + IEnumerable statutFormations = formationService.GetStatutsFormation(); + if (statutFormations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucun statut de formation" + }; + return NotFound(erreur); + } - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(statutFormations); } /// @@ -407,17 +381,18 @@ namespace IO.Swagger.Controllers public virtual IActionResult GetTypesFormation() { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - return StatusCode(200, formationService.GetTypesFormation()); - - //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)); - //string exampleJson = null; - //exampleJson = "[ {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n}, {\n \"libelle\" : \"libelle\",\n \"id\" : 5\n} ]"; + IEnumerable typeFormations = formationService.GetTypesFormation(); + if (typeFormations == null) + { + ErreurDTO erreur = new ErreurDTO() + { + Code = "404", + Message = "Aucun type de formation" + }; + return NotFound(erreur); + } - // var example = exampleJson != null - // ? JsonConvert.DeserializeObject>(exampleJson) - // : default(List); //TODO: Change the data returned - //return new ObjectResult(example); + return Ok(typeFormations); } /// @@ -435,47 +410,28 @@ namespace IO.Swagger.Controllers [ValidateModelState] [SwaggerOperation("UpdateFormation")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] - public virtual IActionResult UpdateFormation([FromBody]FormationDTO body, [FromRoute][Required]decimal? idFormation) + public virtual IActionResult UpdateFormation([FromBody] FormationDTO body, [FromRoute][Required] decimal? idFormation) { - //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - // return StatusCode(200); - - //TODO: Uncomment the next line to return response 201 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - // return StatusCode(201); - - //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)); - int id = 0; - try + FormationDTO formation = formationService.UpdateFormation(body); + if (formation == null) { - id = Convert.ToInt32(idFormation); + formation = formationService.AddFormation(body); + return Created("", formation); } - catch (Exception ex) - { - ErreurDTO erreurDTO = new ErreurDTO() - { - Code = "403", - Message = "Impossible de convertir le paramètre idFormation en int. " + ex.Message - }; - return StatusCode(403, erreurDTO); - } - - - switch (formationService.DeleteFormationById(id)) - { - case 0: - return StatusCode(201); - case 1: - return StatusCode(200); - case 2: - return StatusCode(403); - default: - return NotFound(); - } - - //TODO: Uncomment the next line to return response 201 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - formationService.UpdateFormation(body); - return StatusCode(201); + return Ok(formation); + + + //switch (formationService.UpdateFormation(body)) + //{ + // case 0: + // return Ok(); + // case 1: + // return StatusCode(201); + // case 2: + // return Forbid(); + // default: + // return NotFound(); + //} } } diff --git a/IServices/IFormationService.cs b/IServices/IFormationService.cs index 34b7dc7..90f5cd7 100644 --- a/IServices/IFormationService.cs +++ b/IServices/IFormationService.cs @@ -10,19 +10,19 @@ namespace EPAServeur.IServices { public interface IFormationService { - FormationDTO GetFormationById(int? id); + FormationDTO GetFormationById(decimal? id); - IEnumerable GetFormations(); - IEnumerable GetFormationAnnulees(); - IEnumerable GetFormationRealisee(); - IEnumerable GetProchainesFormation(); + IEnumerable GetFormations(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri); + IEnumerable GetFormationAnnulees(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri); + IEnumerable GetFormationRealisee(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri); + IEnumerable GetProchainesFormation(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri); IEnumerable GetModesFormation(); IEnumerable GetOriginesFormation(); IEnumerable GetStatutsFormation(); IEnumerable GetTypesFormation(); - byte AddFormation(FormationDTO formationDTO); - byte UpdateFormation(FormationDTO formationDTO); - byte DeleteFormationById(int? id); + FormationDTO AddFormation(FormationDTO formationDTO); + FormationDTO UpdateFormation(FormationDTO formationDTO); + bool DeleteFormationById(decimal? id); } } diff --git a/Services/FormationService.cs b/Services/FormationService.cs index e3b2233..edb6b6e 100644 --- a/Services/FormationService.cs +++ b/Services/FormationService.cs @@ -4,6 +4,7 @@ using EPAServeur.Models.Formation; using IO.Swagger.ApiCollaborateur; using IO.Swagger.DTO; using IO.Swagger.ModelCollaborateur; +using Microsoft.EntityFrameworkCore; using Microsoft.EntityFrameworkCore.ChangeTracking; using System; using System.Collections.Generic; @@ -22,9 +23,24 @@ namespace EPAServeur.Services epContext = _epContext; } - public FormationDTO GetFormationById(int? id) + public FormationDTO GetFormationById(decimal? id) { - Formation formation = epContext.Formation.FirstOrDefault(formation => formation.Id == id); + int idFormation = 0; + + try + { + idFormation = Convert.ToInt32(id); + } + catch (Exception ex) + { + return null; + } + + Formation formation = epContext.Formation.Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation) + .FirstOrDefault(formation => formation.Id == idFormation); if (formation == null) return null; @@ -32,36 +48,138 @@ namespace EPAServeur.Services return GetFormationDTO(formation); } - public IEnumerable GetFormations() + public IEnumerable GetFormations(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri) { - IEnumerable formations = epContext.Formation; - IEnumerable formationDTOs = formations.Select(formation => GetFormationDTO(formation)); + IEnumerable formations; + IEnumerable formationDTOs; + + if (texte == null) + texte = ""; + else + texte = texte.ToLower(); + + int skip = (numPage.Value - 1) * parPAge.Value; + int take = parPAge.Value; + + if (idAgence != null) + formations = epContext.Formation.Where(formation => formation.IdAgence == idAgence) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + else + formations = epContext.Formation.Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + + if (formations == null) + return new List(); + + formationDTOs = formations.Where(formation => formation.Intitule.ToLower().Contains(texte)).Select(formation => GetFormationDTO(formation)); return formationDTOs; } - public IEnumerable GetFormationAnnulees() + public IEnumerable GetFormationAnnulees(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri) { - IEnumerable formations = epContext.Formation; - IEnumerable formationDTOs = formations.Where(formation => formation.Statut.Id == 4).Select(formation => GetFormationDTO(formation)); + IEnumerable formations; + IEnumerable formationDTOs; + + if (texte == null) + texte = ""; + else + texte = texte.ToLower(); + + int skip = (numPage.Value - 1) * parPAge.Value; + int take = parPAge.Value; + + if (idAgence != null) + formations = epContext.Formation.Where(formation => formation.IdAgence == idAgence && formation.Statut.Id == 4) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + else + formations = epContext.Formation.Where(formation => formation.Statut.Id == 4) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + + if (formations == null) + return new List(); + + formationDTOs = formations.Where(formation => formation.Intitule.ToLower().Contains(texte)).Select(formation => GetFormationDTO(formation)); return formationDTOs; } - public IEnumerable GetFormationRealisee() + public IEnumerable GetFormationRealisee(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri) { - IEnumerable formations = epContext.Formation; - IEnumerable formationDTOs = formations.Where(formation => formation.Statut.Id == 3).Select(formation => GetFormationDTO(formation)); + IEnumerable formations; + IEnumerable formationDTOs; + + if (texte == null) + texte = ""; + else + texte = texte.ToLower(); + + int skip = (numPage.Value - 1) * parPAge.Value; + int take = parPAge.Value; + + if (idAgence != null) + formations = epContext.Formation.Where(formation => formation.IdAgence == idAgence && formation.Statut.Id == 3) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + else + formations = epContext.Formation.Where(formation => formation.Statut.Id == 3) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + + if (formations == null) + return new List(); + + formationDTOs = formations.Where(formation => formation.Intitule.ToLower().Contains(texte)).Select(formation => GetFormationDTO(formation)); return formationDTOs; - } - public IEnumerable GetProchainesFormation() + public IEnumerable GetProchainesFormation(bool? asc, int? numPage, int? parPAge, int? idAgence, string texte, string tri) { - IEnumerable formations = epContext.Formation; - IEnumerable formationDTOs = formations.Where(formation => formation.Statut.Id == 1 && formation.Statut.Id == 2).Select(formation => GetFormationDTO(formation)).OrderBy(formation => formation.DateDebut); + IEnumerable formations; + IEnumerable formationDTOs; + + if (texte == null) + texte = ""; + else + texte = texte.ToLower(); + + int skip = (numPage.Value - 1) * parPAge.Value; + int take = parPAge.Value; + + if (idAgence != null) + formations = epContext.Formation.Where(formation => formation.IdAgence == idAgence && (formation.Statut.Id == 1 || formation.Statut.Id == 2)) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + else + formations = epContext.Formation.Where(formation => (formation.Statut.Id == 1 || formation.Statut.Id == 2)) + .Include(formation => formation.Statut) + .Include(formation => formation.ModeFormation) + .Include(formation => formation.Origine) + .Include(formation => formation.TypeFormation); + + if (formations == null) + return new List(); + + formationDTOs = formations.Where(formation => formation.Intitule.ToLower().Contains(texte)).Select(formation => GetFormationDTO(formation)); return formationDTOs; } @@ -98,7 +216,7 @@ namespace EPAServeur.Services return typeFormationDTOs; } - public byte AddFormation(FormationDTO formationDTO) + public FormationDTO AddFormation(FormationDTO formationDTO) { Formation formation = new Formation(); formation = SetFormation(formation, formationDTO); @@ -119,51 +237,49 @@ namespace EPAServeur.Services } catch (Exception) { - return 1; + return null; } - return 0; + return GetFormationDTO(formation); } - public byte UpdateFormation(FormationDTO formationDTO) + public FormationDTO UpdateFormation(FormationDTO formationDTO) { Formation formation = epContext.Formation.FirstOrDefault(formation => formation.Id == formationDTO.Id); if (formation == null) - return 1; - - formation = SetFormation(formation, formationDTO); - try - { - epContext.SaveChanges(); - } - catch (Exception) { - return 2; + return null; } - return 0; + formation = SetFormation(formation, formationDTO); + epContext.SaveChanges(); + + return GetFormationDTO(formation); } - public byte DeleteFormationById(int? id) + public bool DeleteFormationById(decimal? id) { - Formation formation = epContext.Formation.FirstOrDefault(formation => formation.Id == id); - - if (formation == null) - return 1; + int idFormation = 0; try { - epContext.Remove(formation); - epContext.SaveChanges(); + idFormation = Convert.ToInt32(id); } - catch (Exception) + catch (Exception ex) { - return 2; + return false; } - return 0; + Formation formation = epContext.Formation.FirstOrDefault(formation => formation.Id == idFormation); + if (formation == null) + return false; + + + epContext.Remove(formation); + epContext.SaveChanges(); + return true; } #region Object to DTO @@ -265,7 +381,7 @@ namespace EPAServeur.Services formation.Statut = GetStatutFormation(formationDTO.Statut); formation.ModeFormation = GetModeFormation(formationDTO.Mode); formation.TypeFormation = GetTypeFormation(formationDTO.Type); - + //List participationFormationDTOs = epContext.ParticipationFormation.Where(participationFormation => participationFormation.Formation.Id == formation.Id) // .Select(participationFormation => new ParticipationFormationDTO()