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,