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>
/// <param name="idCollaborateur">Id du collaborateur</param>
/// <returns></returns>
public async Task<IEnumerable<ParticipationFormationDTO>> GetParticipationByCollaborateurAsync(Guid idCollaborateur)
public async Task<IEnumerable<ParticipationFormationDTO>> GetParticipationsByCollaborateurAsync(Guid idCollaborateur)
{
IQueryable<ParticipationFormation> query;
IEnumerable<ParticipationFormation> 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
/// <returns></returns>
private ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable<CollaborateurDTO> 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
/// <returns></returns>
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
/// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<ParticipationFormation> participationsFormation)
{
if (!participationsFormation.Any())
if (participationsFormation == null || !participationsFormation.Any())
return null;
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>
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);
}
@ -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
/// <returns></returns>
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
/// <returns></returns>
private Champ GetChamp(ChampDTO champDTO)
{
if (champDTO == null)
return null;
Champ champ = new Champ()
{
IdChamp = champDTO.Id.Value,

Loading…
Cancel
Save