diff --git a/EPAServeur/Services/FormationService.cs b/EPAServeur/Services/FormationService.cs index 1ef4934..2c25d60 100644 --- a/EPAServeur/Services/FormationService.cs +++ b/EPAServeur/Services/FormationService.cs @@ -73,6 +73,9 @@ namespace EPAServeur.Services .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) .Include(formation => formation.TypeFormation) + .Include(formation => formation.ParticipationsFormation) + .ThenInclude(participation => participation.DemandeFormation) + .ThenInclude(demande => demande.Ep) .FirstOrDefaultAsync(formation => formation.IdFormation == idFormation); if (formation == null) @@ -91,17 +94,18 @@ namespace EPAServeur.Services /// Texte permettant d'identifier l'objet rechercher /// Colonne du tableau sur lequel le tri s'effectue /// - public async Task> GetFormationsAsync(long? idAgence, List idStatuts, bool? asc, int? numPage, int? parPage, string texte, string tri, DateTime? dateDebut, DateTime? dateFin) + public async Task> GetFormationsAsync(long? idAgence, List idStatuts, bool? asc, int? numPage, int? parPage, string texte, string tri, DateTime? dateDebut, DateTime? dateFin) { IQueryable query; IEnumerable formations; - IEnumerable formationDTOs; + IEnumerable formationDTOs; query = epContext.Formation .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation) + .Include(formation => formation.ParticipationsFormation); query = IdStatutsFilter(query, idStatuts); @@ -117,7 +121,7 @@ namespace EPAServeur.Services formations = await query.ToListAsync(); - formationDTOs = formations.Select(formation => GetFormationDTO(formation)); + formationDTOs = formations.Select(formation => GetFormationDetailsDTO(formation)); return formationDTOs; } @@ -140,7 +144,8 @@ namespace EPAServeur.Services .Include(formation => formation.Statut) .Include(formation => formation.ModeFormation) .Include(formation => formation.Origine) - .Include(formation => formation.TypeFormation); + .Include(formation => formation.TypeFormation) + .Include(formation => formation.ParticipationsFormation); query = IntituleFilter(query, texte); @@ -517,7 +522,31 @@ namespace EPAServeur.Services Origine = GetOrigineFormationDTO(formation.Origine), Statut = GetStatutFormationDTO(formation.Statut), Mode = GetModeFormationDTO(formation.ModeFormation), - Type = GetTypeFormationDTO(formation.TypeFormation) + Type = GetTypeFormationDTO(formation.TypeFormation), + Participations = GetParticipationsFormationDTO(formation.ParticipationsFormation) + }; + + return formationDTO; + } + + /// + /// Récuperer un objet FormationDetailsDTO en fonction d'un objet Formation + /// + /// + /// + private FormationDetailsDTO GetFormationDetailsDTO(Formation formation) + { + FormationDetailsDTO formationDTO = new FormationDetailsDTO() + { + Id = formation.IdFormation, + Intitule = formation.Intitule, + DateDebut = formation.DateDebut, + DateFin = formation.DateFin, + Organisme = formation.Organisme, + EstCertifiee = formation.EstCertifiee, + NbParticipations = formation.ParticipationsFormation.Count, + Origine = GetOrigineFormationDTO(formation.Origine), + Statut = GetStatutFormationDTO(formation.Statut), }; return formationDTO; @@ -573,6 +602,7 @@ namespace EPAServeur.Services }; return modeFormationDTO; } + /// /// Récuperer un objet TypeFormationDTO en fonction d'un objet TypeFormation /// @@ -590,6 +620,43 @@ namespace EPAServeur.Services return typeFormationDTO; } + /// + /// Récuperer une liste de ParticipationFormationDTO en fonction d'une liste de ParticipationFormation + /// + /// + /// + private List GetParticipationsFormationDTO(List participationsFormation) + { + List participationFormationDTOs; + + if (participationsFormation == null || participationsFormation.Count == 0) + return null; + + participationFormationDTOs = participationsFormation.Select(participationFormation => GetParticipationFormationDTO(participationFormation)).ToList(); + + return participationFormationDTOs; + } + + /// + /// Récuperer un objet ParticipationFormationDTO en fonction d'un objet ParticipationFormation + /// + /// + /// + private ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation) + { + if (participationFormation == null) + return null; + ParticipationFormationDTO participationFormationDTO = new ParticipationFormationDTO() + { + Id = participationFormation.IdParticipationFormation, + DateCreation = participationFormation.DateCreation, + Intitule = participationFormation.Formation.Intitule, + DateDebut= participationFormation.Formation.DateDebut, + Statut = GetStatutFormationDTO(participationFormation.Formation.Statut), + }; + return participationFormationDTO; + } + #endregion #region DTO to Object