Gestion des objets null pour les mappages de model en dto

develop
jboinembalome 4 years ago
parent b43dd25ff1
commit 39083c619b
  1. 49
      EPAServeur/Services/ParticipationFormationService.cs

@ -71,7 +71,7 @@ namespace EPAServeur.Services
/// </summary> /// </summary>
/// <param name="idCollaborateur">Id du collaborateur</param> /// <param name="idCollaborateur">Id du collaborateur</param>
/// <returns></returns> /// <returns></returns>
public async Task<IEnumerable<ParticipationFormationDTO>> GetParticipationByCollaborateurAsync(Guid idCollaborateur) public async Task<IEnumerable<ParticipationFormationDTO>> GetParticipationsByCollaborateurAsync(Guid idCollaborateur)
{ {
IQueryable<ParticipationFormation> query; IQueryable<ParticipationFormation> query;
IEnumerable<ParticipationFormation> participationFormations; IEnumerable<ParticipationFormation> participationFormations;
@ -104,12 +104,13 @@ namespace EPAServeur.Services
{ {
ParticipationFormation participationFormation; ParticipationFormation participationFormation;
IsEvaluationValide(evaluationDTO);
if (!evaluationDTO.Id.HasValue || evaluationDTO.Id.Value != idParticipationFormation) 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."); 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) participationFormation = await epContext.ParticipationFormation.Include(p => p.Evaluation)
.Include(p => p.Formation)
.FirstOrDefaultAsync(p => p.IdParticipationFormation == idParticipationFormation); .FirstOrDefaultAsync(p => p.IdParticipationFormation == idParticipationFormation);
if (participationFormation == null) 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."); 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 // 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."); 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 // 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."); throw new ParticipationFormationInvalidException("Impossible d'évaluer une formation sans saisie.");
// Vérifier que l'évaluation possède une note pour chaque saisie // Vérifier que l'évaluation possède une note pour chaque saisie
if (evaluation.Saisies.Any(s => !s.Note.HasValue)) if (evaluation.Saisies.Any(s => !s.Note.HasValue && (s.TypeSaisie == TypeSaisie.Competence || s.TypeSaisie == TypeSaisie.Notation)))
throw new ParticipationFormationInvalidException("Toutes les saisies doivent posséder une note."); throw new ParticipationFormationInvalidException("Toutes les saisies de type compétence ou notation doivent posséder une note.");
} }
#region Object to DTO #region Object to DTO
@ -171,12 +172,19 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable<CollaborateurDTO> collaborateurDTOs) private ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable<CollaborateurDTO> collaborateurDTOs)
{ {
if (participationFormation == null)
return null;
if (collaborateurDTOs == null || !collaborateurDTOs.Any())
return null;
ParticipationFormationDTO participationFormationDTO = new ParticipationFormationDTO() ParticipationFormationDTO participationFormationDTO = new ParticipationFormationDTO()
{ {
Id = participationFormation.IdParticipationFormation, Id = participationFormation.IdParticipationFormation,
DateCreation = participationFormation.DateCreation, DateCreation = participationFormation.DateCreation,
Intitule = participationFormation.Formation.Intitule, Intitule = participationFormation.Formation.Intitule,
DateDebut = participationFormation.Formation.DateDebut, DateDebut = participationFormation.Formation.DateDebut,
EstEvaluee = participationFormation.EstEvaluee,
Statut = GetStatutFormationDTO(participationFormation.Formation.Statut), Statut = GetStatutFormationDTO(participationFormation.Formation.Statut),
Collaborateur = GetCollaborateurDTO(participationFormation, collaborateurDTOs), Collaborateur = GetCollaborateurDTO(participationFormation, collaborateurDTOs),
Ep = GetEpInformationDTO(participationFormation.DemandeFormation.Ep, collaborateurDTOs) Ep = GetEpInformationDTO(participationFormation.DemandeFormation.Ep, collaborateurDTOs)
@ -193,12 +201,15 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private EvaluationDTO GetEvaluationDTO(ParticipationFormation participationFormation) private EvaluationDTO GetEvaluationDTO(ParticipationFormation participationFormation)
{ {
if (participationFormation == null)
return null;
EvaluationDTO evaluationDTO = new EvaluationDTO() EvaluationDTO evaluationDTO = new EvaluationDTO()
{ {
Id = participationFormation.IdParticipationFormation, Id = participationFormation.IdParticipationFormation,
Intitule = participationFormation.Formation.Intitule, Intitule = participationFormation.Formation.Intitule,
DateDebut = participationFormation.Formation.DateDebut, DateDebut = participationFormation.Formation.DateDebut,
EstCertifie = participationFormation.Formation.EstCertifiee, EstCertifiee = participationFormation.Formation.EstCertifiee,
Saisies = participationFormation.Evaluation.Select(s => GetSaisieDTO(s)).ToList() Saisies = participationFormation.Evaluation.Select(s => GetSaisieDTO(s)).ToList()
}; };
@ -258,6 +269,7 @@ namespace EPAServeur.Services
{ {
if (statutFormation == null) if (statutFormation == null)
return null; return null;
StatutFormationDTO statutFormationDTO = new StatutFormationDTO() StatutFormationDTO statutFormationDTO = new StatutFormationDTO()
{ {
Id = statutFormation.IdStatutFormation, Id = statutFormation.IdStatutFormation,
@ -273,7 +285,7 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<ParticipationFormation> participationsFormation) private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<ParticipationFormation> participationsFormation)
{ {
if (!participationsFormation.Any()) if (participationsFormation == null || !participationsFormation.Any())
return null; return null;
List<Guid?> guids = participationsFormation.SelectMany(participationFormation => new[] { (Guid?)participationFormation.DemandeFormation.Ep.IdCollaborateur, participationFormation.DemandeFormation.Ep.IdReferent }).ToList(); List<Guid?> guids = participationsFormation.SelectMany(participationFormation => new[] { (Guid?)participationFormation.DemandeFormation.Ep.IdCollaborateur, participationFormation.DemandeFormation.Ep.IdReferent }).ToList();
@ -288,6 +300,12 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private CollaborateurDTO GetCollaborateurDTO(ParticipationFormation participationFormation, IEnumerable<CollaborateurDTO> collaborateurDTOs) private CollaborateurDTO GetCollaborateurDTO(ParticipationFormation participationFormation, IEnumerable<CollaborateurDTO> collaborateurDTOs)
{ {
if (participationFormation == null)
return null;
if (collaborateurDTOs == null || !collaborateurDTOs.Any())
return null;
return collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == participationFormation.DemandeFormation.Ep.IdCollaborateur); return collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == participationFormation.DemandeFormation.Ep.IdCollaborateur);
} }
@ -301,6 +319,12 @@ namespace EPAServeur.Services
CollaborateurDTO collaborateur; CollaborateurDTO collaborateur;
CollaborateurDTO referent; CollaborateurDTO referent;
if (ep == null)
return null;
if (collaborateurDTOs == null || !collaborateurDTOs.Any())
return null;
collaborateur = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdCollaborateur); collaborateur = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdCollaborateur);
referent = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdReferent); referent = collaborateurDTOs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdReferent);
@ -331,14 +355,18 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private Saisie GetSaisie(SaisieDTO saisieDTO) private Saisie GetSaisie(SaisieDTO saisieDTO)
{ {
if (saisieDTO == null)
return null;
Saisie saisie = new Saisie() Saisie saisie = new Saisie()
{ {
IdSaisie = saisieDTO.Id.Value, //IdSaisie = saisieDTO.Id.Value,
Note = saisieDTO.Note, Note = saisieDTO.Note,
Texte = saisieDTO.Texte, Texte = saisieDTO.Texte,
Champ = GetChamp(saisieDTO.Champ), Champ = GetChamp(saisieDTO.Champ),
TypeSaisie = saisieDTO.TypeSaisie TypeSaisie = saisieDTO.TypeSaisie
}; };
return saisie; return saisie;
} }
@ -349,6 +377,9 @@ namespace EPAServeur.Services
/// <returns></returns> /// <returns></returns>
private Champ GetChamp(ChampDTO champDTO) private Champ GetChamp(ChampDTO champDTO)
{ {
if (champDTO == null)
return null;
Champ champ = new Champ() Champ champ = new Champ()
{ {
IdChamp = champDTO.Id.Value, IdChamp = champDTO.Id.Value,

Loading…
Cancel
Save