From 39083c619b8c634c77f350446eb79d8affd358cc Mon Sep 17 00:00:00 2001 From: jboinembalome Date: Fri, 26 Feb 2021 13:09:14 +0100 Subject: [PATCH] Gestion des objets null pour les mappages de model en dto --- .../Services/ParticipationFormationService.cs | 49 +++++++++++++++---- 1 file changed, 40 insertions(+), 9 deletions(-) diff --git a/EPAServeur/Services/ParticipationFormationService.cs b/EPAServeur/Services/ParticipationFormationService.cs index 6eb1323..37ff1f3 100644 --- a/EPAServeur/Services/ParticipationFormationService.cs +++ b/EPAServeur/Services/ParticipationFormationService.cs @@ -71,7 +71,7 @@ namespace EPAServeur.Services /// /// Id du collaborateur /// - public async Task> GetParticipationByCollaborateurAsync(Guid idCollaborateur) + public async Task> GetParticipationsByCollaborateurAsync(Guid idCollaborateur) { IQueryable query; IEnumerable participationFormations; @@ -104,12 +104,13 @@ namespace EPAServeur.Services { ParticipationFormation participationFormation; + IsEvaluationValide(evaluationDTO); + if (!evaluationDTO.Id.HasValue || evaluationDTO.Id.Value != idParticipationFormation) throw new ParticipationFormationIncompatibleIdException("L'id de la participation formation a mettre à jour et la participation formation a mettre à jour sont incompatble."); - IsEvaluationValide(evaluationDTO); - participationFormation = await epContext.ParticipationFormation.Include(p => p.Evaluation) + .Include(p => p.Formation) .FirstOrDefaultAsync(p => p.IdParticipationFormation == idParticipationFormation); if (participationFormation == null) @@ -146,7 +147,7 @@ namespace EPAServeur.Services throw new ParticipationFormationInvalidException("L'intitulé de la formation doit contenir au moins 1 caractère."); // Vérifier que la formation a bien une valeur permettant de dire si la formation est certifiée ou non - if (!evaluation.EstCertifie.HasValue) + if (!evaluation.EstCertifiee.HasValue) throw new ParticipationFormationInvalidException("Impossible d'évaluer une formation sans savoir si la formation est certfiée ou non."); // Vérifier que la formation a bien une date de début @@ -158,8 +159,8 @@ namespace EPAServeur.Services throw new ParticipationFormationInvalidException("Impossible d'évaluer une formation sans saisie."); // Vérifier que l'évaluation possède une note pour chaque saisie - if (evaluation.Saisies.Any(s => !s.Note.HasValue)) - throw new ParticipationFormationInvalidException("Toutes les saisies doivent posséder une note."); + if (evaluation.Saisies.Any(s => !s.Note.HasValue && (s.TypeSaisie == TypeSaisie.Competence || s.TypeSaisie == TypeSaisie.Notation))) + throw new ParticipationFormationInvalidException("Toutes les saisies de type compétence ou notation doivent posséder une note."); } #region Object to DTO @@ -171,12 +172,19 @@ namespace EPAServeur.Services /// private ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable collaborateurDTOs) { + if (participationFormation == null) + return null; + + if (collaborateurDTOs == null || !collaborateurDTOs.Any()) + return null; + ParticipationFormationDTO participationFormationDTO = new ParticipationFormationDTO() { Id = participationFormation.IdParticipationFormation, DateCreation = participationFormation.DateCreation, Intitule = participationFormation.Formation.Intitule, DateDebut = participationFormation.Formation.DateDebut, + EstEvaluee = participationFormation.EstEvaluee, Statut = GetStatutFormationDTO(participationFormation.Formation.Statut), Collaborateur = GetCollaborateurDTO(participationFormation, collaborateurDTOs), Ep = GetEpInformationDTO(participationFormation.DemandeFormation.Ep, collaborateurDTOs) @@ -193,12 +201,15 @@ namespace EPAServeur.Services /// private EvaluationDTO GetEvaluationDTO(ParticipationFormation participationFormation) { + if (participationFormation == null) + return null; + EvaluationDTO evaluationDTO = new EvaluationDTO() { Id = participationFormation.IdParticipationFormation, Intitule = participationFormation.Formation.Intitule, DateDebut = participationFormation.Formation.DateDebut, - EstCertifie = participationFormation.Formation.EstCertifiee, + EstCertifiee = participationFormation.Formation.EstCertifiee, Saisies = participationFormation.Evaluation.Select(s => GetSaisieDTO(s)).ToList() }; @@ -258,6 +269,7 @@ namespace EPAServeur.Services { if (statutFormation == null) return null; + StatutFormationDTO statutFormationDTO = new StatutFormationDTO() { Id = statutFormation.IdStatutFormation, @@ -273,7 +285,7 @@ namespace EPAServeur.Services /// private async Task> GetCollaborateurDTOs(IEnumerable participationsFormation) { - if (!participationsFormation.Any()) + if (participationsFormation == null || !participationsFormation.Any()) return null; List guids = participationsFormation.SelectMany(participationFormation => new[] { (Guid?)participationFormation.DemandeFormation.Ep.IdCollaborateur, participationFormation.DemandeFormation.Ep.IdReferent }).ToList(); @@ -288,6 +300,12 @@ namespace EPAServeur.Services /// private CollaborateurDTO GetCollaborateurDTO(ParticipationFormation participationFormation, IEnumerable collaborateurDTOs) { + if (participationFormation == null) + return null; + + if (collaborateurDTOs == null || !collaborateurDTOs.Any()) + return null; + return collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == participationFormation.DemandeFormation.Ep.IdCollaborateur); } @@ -301,6 +319,12 @@ namespace EPAServeur.Services CollaborateurDTO collaborateur; CollaborateurDTO referent; + if (ep == null) + return null; + + if (collaborateurDTOs == null || !collaborateurDTOs.Any()) + return null; + collaborateur = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdCollaborateur); referent = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdReferent); @@ -331,14 +355,18 @@ namespace EPAServeur.Services /// private Saisie GetSaisie(SaisieDTO saisieDTO) { + if (saisieDTO == null) + return null; + Saisie saisie = new Saisie() { - IdSaisie = saisieDTO.Id.Value, + //IdSaisie = saisieDTO.Id.Value, Note = saisieDTO.Note, Texte = saisieDTO.Texte, Champ = GetChamp(saisieDTO.Champ), TypeSaisie = saisieDTO.TypeSaisie }; + return saisie; } @@ -349,6 +377,9 @@ namespace EPAServeur.Services /// private Champ GetChamp(ChampDTO champDTO) { + if (champDTO == null) + return null; + Champ champ = new Champ() { IdChamp = champDTO.Id.Value,