diff --git a/Controllers/CollaborateursApi.cs b/Controllers/CollaborateursApi.cs index 3bfc315..53f2158 100644 --- a/Controllers/CollaborateursApi.cs +++ b/Controllers/CollaborateursApi.cs @@ -20,6 +20,9 @@ using Microsoft.AspNetCore.Authorization; using IO.Swagger.DTO; using EPAServeur.IServices; using Microsoft.Extensions.Logging; +using EPAServeur.Exceptions; +using IO.Swagger.ClientCollaborateur; +using Microsoft.AspNetCore.Server.Kestrel.Core; namespace IO.Swagger.Controllers { @@ -57,17 +60,29 @@ namespace IO.Swagger.Controllers //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 du collaborateur d'ID {idCollaborateur}", idCollaborateur); - CollaborateurDTO collaborateurDTO = collaborateurService.GetCollaborateurById(idCollaborateur); - if( collaborateurDTO == null) + CollaborateurDTO collaborateurDTO = null; + try { - logger.LogWarning("Le ccollaborateur {id} est introuvable", idCollaborateur); + collaborateurDTO = collaborateurService.GetCollaborateurById(idCollaborateur); + } + catch (ApiException) + { + logger.LogError("Une erreur est survenue lors de la communication avec le service Collaborateur pour récupérer le collaborateur par son id {idCollaborateur}", idCollaborateur); + } + catch (CollaborateurNotFoundException) + { + logger.LogError("Le ccollaborateur {id} est introuvable", idCollaborateur); 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 du collaborateur {idCollaborateur}", idCollaborateur); + } logger.LogInformation("Collaborateur {id} trouvée", idCollaborateur); return Ok(collaborateurDTO); } @@ -93,20 +108,31 @@ namespace IO.Swagger.Controllers //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 d'un collaborateur par le mail {mail}", mail); - CollaborateurDTO collaborateurDTO = collaborateurService.GetCollaborateurByMail(mail); - if (collaborateurDTO == null) + CollaborateurDTO collaborateurDTO = null; + try + { + collaborateurDTO = collaborateurService.GetCollaborateurByMail(mail); + } + catch (CollaborateurNotFoundException) { - logger.LogWarning("Le collaborateur {mail} est introuvable", mail); + logger.LogError("Le ccollaborateur {mail} est introuvable", mail); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", - Message = "Aucun collaborateur n'est lié au mail "+mail, + Message = "Aucun collaborateur n'est lié au mail " + mail, }; return NotFound(erreurDTO); } + catch (ApiException) + { + logger.LogError("Une erreur est survenue lors de la communication avec le service Collaborateur pour récupérer le collaborateur par son mail {mail}", mail); + } + catch (Exception) + { + logger.LogError("Une erreur inconnue est survenue lors de la récupération du collaborateur {mail}", mail); + } logger.LogInformation("Collaborateur {mail} trouvée", mail); return Ok(collaborateurDTO); - } /// @@ -135,7 +161,21 @@ namespace IO.Swagger.Controllers //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 liste des collaborateurs"); - return Ok(collaborateurService.GetCollaborateurs(asc, numPage, parPAge, fonctions, idAgence, idBU, texte, tri)); + IEnumerable collaborateurs = null; + try + { + collaborateurs = collaborateurService.GetCollaborateurs(asc, numPage, parPAge, fonctions, idAgence, idBU, texte, tri); + } + catch(ApiException) + { + logger.LogError("Une erreur est survenue lors de la discussion avec le service Collaborateur pour récupérer la liste des collaborateurs"); + } + catch(Exception) + { + logger.LogError("Une erreur inconnue est survenue lors de la récupération de la liste des collaborateurs"); + } + logger.LogInformation("Liste des collaborateurs récupérée"); + return Ok(collaborateurs); } @@ -164,8 +204,17 @@ namespace IO.Swagger.Controllers { //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 liste des collaborateurs du référent {idReferent}",idReferent); IEnumerable collaborateurs = collaborateurService.GetCollaborateursByReferent(idReferent, asc, numPage, parPAge, texte, tri); - if(collaborateurs == null) + try + { + collaborateurs = collaborateurService.GetCollaborateursByReferent(idReferent, asc, 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 collaborateurs du référent {idReferent}", idReferent); + } + catch (ReferentNotFoundException) { ErreurDTO erreurDTO = new ErreurDTO() { @@ -174,6 +223,11 @@ namespace IO.Swagger.Controllers }; return NotFound(erreurDTO); } + catch (Exception) + { + logger.LogError("Uner erreur inconnue est survenue lors de la récupération des collaborateurs du référent {idReferent}", idReferent); + } + logger.LogInformation("Liste des collaborateurs du référent {idReferent} récupérée", idReferent); return Ok(collaborateurs); } @@ -197,10 +251,19 @@ namespace IO.Swagger.Controllers { //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)); - - ProfilDTO collaborateurDTO = collaborateurService.GetProfilByMail(mail); - if (collaborateurDTO == null) + logger.LogInformation("Récupération du profil par la mail {mail}", mail); + ProfilDTO collaborateurDTO = null; + try + { + collaborateurDTO = collaborateurService.GetProfilByMail(mail); + } + catch (ApiException) + { + logger.LogError("Une erreur est survenue lors de la communication avec le service collaborateur lors de la récupération du profil par le mail {mail}", mail); + } + catch (CollaborateurNotFoundException) { + logger.LogError("Aucun collaborateur n'est lié au mail {mail}", mail); ErreurDTO erreurDTO = new ErreurDTO() { Code = "404", @@ -208,6 +271,11 @@ namespace IO.Swagger.Controllers }; return NotFound(erreurDTO); } + catch (Exception) + { + logger.LogError("Une erreur inconnue est survenue lors de la récupération du profil d'un collaborateur par le mail {mail}", mail); + } + logger.LogInformation("Profil du mail {mail} récupéré", mail); return Ok(collaborateurDTO); } } diff --git a/Services/CollaborateurService.cs b/Services/CollaborateurService.cs index bb7ab43..55d58b1 100644 --- a/Services/CollaborateurService.cs +++ b/Services/CollaborateurService.cs @@ -1,4 +1,5 @@ using EPAServeur.Context; +using EPAServeur.Exceptions; using EPAServeur.IServices; using IO.Swagger.ApiCollaborateur; using IO.Swagger.DTO; @@ -42,7 +43,7 @@ namespace EPAServeur.Services { Collaborateur collaborateur = collaborateurApi.ChercherCollabId(id); if (collaborateur == null) - return null; + throw new CollaborateurNotFoundException(); return GetCollaborateurDTO(collaborateur); } @@ -55,7 +56,7 @@ namespace EPAServeur.Services { Collaborateur collaborateur = collaborateurApi.ChercherCollabMail(mail); if (collaborateur == null) - return null; + throw new CollaborateurNotFoundException(); return GetCollaborateurDTO(collaborateur); } @@ -125,7 +126,7 @@ namespace EPAServeur.Services */ Collaborateur referent = collaborateurApi.ChercherCollabId(idReferent); if (referent == null) - return null; + throw new ReferentNotFoundException(); if (texte == null) texte = ""; @@ -149,7 +150,7 @@ namespace EPAServeur.Services { Collaborateur collaborateur = collaborateurApi.ChercherCollabMail(mail); if (collaborateur == null) - return null; + throw new CollaborateurNotFoundException(); return GetProfilDTO(collaborateur); } @@ -170,7 +171,7 @@ namespace EPAServeur.Services //Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds); if (collaborateur == null) - return null; + throw new CollaborateurNotFoundException(); return GetProfilDTO(collaborateur); } #endregion