diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs
new file mode 100644
index 0000000..75a5bf8
--- /dev/null
+++ b/EPAServeur/Services/TransformDTO.cs
@@ -0,0 +1,713 @@
+using EPAServeur.Context;
+using EPAServeur.Exceptions;
+using EPAServeur.IServices;
+using EPAServeur.Models.EP;
+using EPAServeur.Models.Formation;
+using EPAServeur.Models.Notes;
+using EPAServeur.Models.SaisieChamp;
+using IO.Swagger.ApiCollaborateur;
+using IO.Swagger.DTO;
+using IO.Swagger.Enum;
+using IO.Swagger.ModelCollaborateur;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace EPAServeur.Services
+{
+ public class TransformDTO : ITransformDTO
+ {
+
+ ///
+ /// Transformer un objet DetailsNoteDTO en objet Note.
+ ///
+ /// En général, de base, cette méthode est prévue pour être utilisée qu'à la création d'une nouvelle note, dateCreation et dateUpdate sont donc initialisée à ce moment là
+ /// Objet DTO à transformer en note
+ /// L'objet DTO transformé en note
+ public Note DetailsNoteDTOToNouvelleNote(DetailsNoteDTO detailsNoteDTO)
+ {
+ Note note = new Note()
+ {
+ IdAuteur = detailsNoteDTO.IdAuteur.Value,
+ IdCollaborateur = detailsNoteDTO.Collaborateur.Id.Value,
+ Texte = detailsNoteDTO.Texte,
+ Titre = detailsNoteDTO.Titre,
+ DateCreation = detailsNoteDTO.DateCreation.Value,
+ DateMiseAJour = detailsNoteDTO.DateMiseAjour.Value
+ };
+ return note;
+ }
+
+ ///
+ /// Transformer un objet Ep en objet EpInformationDTO.
+ /// La liste des collaborateurs est utilisé pour alimenter le collaborateur et le référent de l'objet EpInformationDTO.
+ ///
+ ///
+ ///
+ ///
+ public EpInformationDTO EpToEpDTO(Ep ep, IEnumerable collaborateurDTOs)
+ {
+ return new EpInformationDTO()
+ {
+ Id = ep.IdEP,
+ Collaborateur = collaborateurDTOs.Where(c => c.Id.Equals(ep.IdCollaborateur)).FirstOrDefault(),
+ DateDisponibilite = ep.DateDisponibilite,
+ DatePrevisionnelle = ep.DatePrevisionnelle,
+ Obligatoire = ep.Obligatoire,
+ Referent = collaborateurDTOs.FirstOrDefault(c => c.Id.Equals(ep.IdReferent)),
+ Statut = ep.Statut,
+ Type = ep.TypeEP
+ };
+ }
+
+ ///
+ /// Transformer un objet Agence en objet AgenceDTO.
+ ///
+ ///
+ ///
+ public AgenceDTO GetAgenceDTO(Agence agence)
+ {
+ if (agence == null)
+ return null;
+ AgenceDTO agenceDTO = new AgenceDTO()
+ {
+ Id = agence.Id,
+ Nom = agence.Nom,
+ Bu = new List()
+ };
+ agenceDTO.Bu = agence.Bus.Select(bu => new BusinessUnitDTO()
+ {
+ Id = bu.Id,
+ Nom = bu.Nom
+ }).ToList();
+ return agenceDTO;
+ }
+
+ ///
+ /// Transformer une objet BU en objet BusinessUnitDTO.
+ ///
+ ///
+ ///
+ public BusinessUnitDTO GetBusinessUnitDTO(BU businessUnit)
+ {
+ if (businessUnit == null)
+ return null;
+ BusinessUnitDTO businessUnitDTO = new BusinessUnitDTO()
+ {
+ Id = businessUnit.Id,
+ Nom = businessUnit.Nom,
+ Agence = GetAgenceDTO(businessUnit.Agence)
+ };
+ return businessUnitDTO;
+ }
+
+ ///
+ /// Récupérer un objet Champ en objet ChampDTO.
+ ///
+ ///
+ ///
+ public Champ GetChamp(ChampDTO champDTO)
+ {
+ if (champDTO == null)
+ return null;
+
+ Champ champ = new Champ()
+ {
+ IdChamp = champDTO.Id.Value,
+ Texte = champDTO.Texte,
+ Section = champDTO.Section,
+ SousSection = champDTO.Soussection,
+ Ordre = champDTO.Ordre.Value,
+ TypeChamp = champDTO.TypeChamp,
+ TypeSaisie = champDTO.TypeSaisie
+ };
+ return champ;
+ }
+
+ ///
+ /// Transformer un objet Champ en objet ChampDTO.
+ ///
+ ///
+ ///
+ public ChampDTO GetChampDTO(Champ champ)
+ {
+ if (champ == null)
+ return null;
+
+ ChampDTO champDTO = new ChampDTO()
+ {
+ Id = champ.IdChamp,
+ Texte = champ.Texte,
+ Section = champ.Section,
+ Soussection = champ.SousSection,
+ Ordre = champ.Ordre,
+ TypeChamp = champ.TypeChamp,
+ TypeSaisie = champ.TypeSaisie
+ };
+ return champDTO;
+ }
+
+ ///
+ /// Récupérer le collaborateur qui participe à la formation.
+ ///
+ ///
+ ///
+ ///
+ public 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);
+ }
+
+
+ ///
+ /// Transformer un objet DemandeDelegation en objet DemandeDelegationDTO.
+ /// L'objet CollaborateurDTO est utilisé pour alimenter la propriété Referent de l'objet DemandeDelegationDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Ep de l'objet DemandeDelegationDTO.
+ ///
+ ///
+ ///
+ ///
+ ///
+ public DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demande, CollaborateurDTO referent, IEnumerable collaborateurs)
+ {
+ return new DemandeDelegationDTO()
+ {
+ Id = demande.IdDemandeDelegation,
+ DateDemande = demande.DateDemande,
+ EtatDemande = demande.EtatDemande,
+ Referent = referent,
+ RaisonDemande = demande.RaisonDemande,
+ Ep = GetEpInformationDTO(demande.Ep, collaborateurs)
+ };
+ }
+
+ ///
+ /// Transformer un objet Engagement en objet EngagementDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Ep de l'objet EngagementDTO.
+ ///
+ ///
+ ///
+ ///
+ public EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable collaborateurDTOs)
+ {
+ if (engagement == null || collaborateurDTOs == null || !collaborateurDTOs.Any())
+ return null;
+
+ EngagementDTO engagementDTO = new EngagementDTO()
+ {
+ Id = engagement.IdEngagement,
+ Action = engagement.Action,
+ DateLimite = engagement.DateLimite,
+ Dispositif = engagement.Dispositif,
+ Modalite = engagement.Modalite,
+ RaisonNonRealisable = engagement.RaisonNonRealisable,
+ EtatEngagement = engagement.EtatEngagement,
+ Ep = GetEpInformationDTO(engagement.Ep, collaborateurDTOs)
+ };
+
+ return engagementDTO;
+ }
+
+ ///
+ /// Transformer un objet Ep en objet EpInformationDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Referent de l'objet EpInformationDTO.
+ ///
+ ///
+ ///
+ ///
+ public EpInformationDTO GetEpInformationDTO(Ep ep, IEnumerable collaborateurs)
+ {
+ CollaborateurDTO collaborateur;
+ CollaborateurDTO referent;
+
+ if (ep == null || collaborateurs == null || !collaborateurs.Any())
+ return null;
+
+ collaborateur = collaborateurs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdCollaborateur);
+ referent = collaborateurs.FirstOrDefault(collaborateurDTO => collaborateurDTO.Id == ep.IdReferent);
+
+ EpInformationDTO epInformationDTO = new EpInformationDTO()
+ {
+ Id = ep.IdEP,
+ Type = ep.TypeEP,
+ Statut = ep.Statut,
+ DateDisponibilite = ep.DateDisponibilite,
+ DatePrevisionnelle = ep.DatePrevisionnelle,
+ Obligatoire = ep.Obligatoire,
+ Collaborateur = collaborateur,
+ Referent = referent,
+ };
+
+ return epInformationDTO;
+ }
+
+ ///
+ /// Transformer un objet ParticipationFormation en objet EvaluationDTO.
+ ///
+ ///
+ ///
+ public EvaluationDTO GetEvaluationDTO(ParticipationFormation participationFormation)
+ {
+ if (participationFormation == null)
+ return null;
+
+ EvaluationDTO evaluationDTO = new EvaluationDTO()
+ {
+ Id = participationFormation.IdParticipationFormation,
+ Intitule = participationFormation.Formation.Intitule,
+ DateDebut = participationFormation.Formation.DateDebut,
+ EstCertifiee = participationFormation.Formation.EstCertifiee,
+ Saisies = participationFormation.Evaluation.Select(s => GetSaisieDTO(s)).ToList()
+ };
+
+ return evaluationDTO;
+ }
+
+ ///
+ /// Transformer un objet Formation en objet FormationDetailsDTO.
+ ///
+ ///
+ ///
+ public FormationDetailsDTO GetFormationDetailsDTO(Formation formation)
+ {
+ if (formation == null)
+ return null;
+
+ 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;
+ }
+
+ ///
+ /// Transformer un objet Formation en objet FormationDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Participations de l'objet FormationDTO.
+ ///
+ ///
+ ///
+ ///
+ public FormationDTO GetFormationDTO(Formation formation, IEnumerable collaborateurDTOs)
+ {
+ if (formation == null || collaborateurDTOs == null || !collaborateurDTOs.Any())
+ return null;
+
+ FormationDTO formationDTO = new FormationDTO()
+ {
+ Id = formation.IdFormation,
+ Intitule = formation.Intitule,
+ IdAgence = formation.IdAgence,
+ DateDebut = formation.DateDebut,
+ DateFin = formation.DateFin,
+ Heure = formation.Heure,
+ Jour = formation.Jour,
+ Organisme = formation.Organisme,
+ EstCertifiee = formation.EstCertifiee,
+ EstRealisee = formation.EstRealisee,
+ Origine = GetOrigineFormationDTO(formation.Origine),
+ Statut = GetStatutFormationDTO(formation.Statut),
+ Mode = GetModeFormationDTO(formation.ModeFormation),
+ Type = GetTypeFormationDTO(formation.TypeFormation),
+ Participations = GetParticipationsFormationDTO(formation.ParticipationsFormation, collaborateurDTOs)
+ };
+
+ return formationDTO;
+ }
+
+ ///
+ /// Transformer un objet Formation en objet FormationDTO et laisser la propriété Participations de l'objet FormationDTO null.
+ ///
+ ///
+ ///
+ public FormationDTO GetFormationDTOWhitoutParticipationFormation(Formation formation)
+ {
+ if (formation == null)
+ return null;
+
+ FormationDTO formationDTO = new FormationDTO()
+ {
+ Id = formation.IdFormation,
+ Intitule = formation.Intitule,
+ IdAgence = formation.IdAgence,
+ DateDebut = formation.DateDebut,
+ DateFin = formation.DateFin,
+ Heure = formation.Heure,
+ Jour = formation.Jour,
+ Organisme = formation.Organisme,
+ EstCertifiee = formation.EstCertifiee,
+ EstRealisee = formation.EstRealisee,
+ Origine = GetOrigineFormationDTO(formation.Origine),
+ Statut = GetStatutFormationDTO(formation.Statut),
+ Mode = GetModeFormationDTO(formation.ModeFormation),
+ Type = GetTypeFormationDTO(formation.TypeFormation),
+ };
+
+ return formationDTO;
+ }
+
+ ///
+ /// Transformer un objet ModeFormationDTO en objet ModeFormation.
+ ///
+ ///
+ ///
+ public ModeFormation GetModeFormation(ModeFormationDTO modeFormationDTO)
+ {
+ if (modeFormationDTO == null)
+ return null;
+
+ ModeFormation modeFormation = new ModeFormation()
+ {
+ IdModeFormation = modeFormationDTO.Id.Value,
+ Libelle = modeFormationDTO.Libelle
+ };
+
+ return modeFormation;
+ }
+
+ ///
+ /// Transformer un objet ModeFormation en objet ModeFormationDTO.
+ ///
+ ///
+ ///
+ public ModeFormationDTO GetModeFormationDTO(ModeFormation modeFormation)
+ {
+ if (modeFormation == null)
+ return null;
+
+ ModeFormationDTO modeFormationDTO = new ModeFormationDTO()
+ {
+ Id = modeFormation.IdModeFormation,
+ Libelle = modeFormation.Libelle
+ };
+
+ return modeFormationDTO;
+ }
+
+ ///
+ /// Transformer un objet OrigineFormationDTO en objet OrigineFormation.
+ ///
+ ///
+ ///
+ public OrigineFormation GetOrigineFormation(OrigineFormationDTO origineFormationDTO)
+ {
+ if (origineFormationDTO == null)
+ return null;
+
+ OrigineFormation origineFormation = new OrigineFormation()
+ {
+ IdOrigineFormation = origineFormationDTO.Id.Value,
+ Libelle = origineFormationDTO.Libelle
+ };
+
+ return origineFormation;
+ }
+
+
+ ///
+ /// Transformer un objet OrigineFormation en objet OrigineFormationDTO.
+ ///
+ ///
+ ///
+ public OrigineFormationDTO GetOrigineFormationDTO(OrigineFormation origineFormation)
+ {
+ if (origineFormation == null)
+ return null;
+
+ OrigineFormationDTO origineFormationDTO = new OrigineFormationDTO()
+ {
+ Id = origineFormation.IdOrigineFormation,
+ Libelle = origineFormation.Libelle
+ };
+
+ return origineFormationDTO;
+ }
+
+ ///
+ /// Transformer un objet ParticipationFormation en objet ParticipationFormationDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Ep de l'objet FormationDTO.
+ ///
+ ///
+ ///
+ ///
+ public ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable collaborateurDTOs)
+ {
+ if (participationFormation == null || collaborateurDTOs == null || !collaborateurDTOs.Any())
+ 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),
+ Collaborateur = GetCollaborateurDTO(participationFormation, collaborateurDTOs),
+ Ep = GetEpInformationDTO(participationFormation.DemandeFormation.Ep, collaborateurDTOs)
+ };
+
+ return participationFormationDTO;
+ }
+
+ ///
+ /// Transformer une liste d'objets ParticipationFormation en liste d'objets ParticipationFormationDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Ep de l'objet FormationDTO.
+ ///
+ ///
+ ///
+ ///
+ public List GetParticipationsFormationDTO(List participationsFormation, IEnumerable collaborateurDTOs)
+ {
+ List participationFormationDTOs;
+
+ if (participationsFormation == null || participationsFormation.Count == 0 || collaborateurDTOs == null || !collaborateurDTOs.Any())
+ return null;
+
+ participationFormationDTOs = participationsFormation.Select(participationFormation => GetParticipationFormationDTO(participationFormation, collaborateurDTOs))
+ .OrderBy(participationFormation => participationFormation.Collaborateur.Nom)
+ .ThenBy(participationFormation => participationFormation.Collaborateur.Prenom).ToList();
+
+ return participationFormationDTOs;
+ }
+
+
+ ///
+ /// Transformer un objet SaisieDTO en objet Saisie.
+ ///
+ ///
+ ///
+ public Saisie GetSaisie(SaisieDTO saisieDTO)
+ {
+ if (saisieDTO == null)
+ return null;
+
+ Saisie saisie = new Saisie()
+ {
+ //IdSaisie = saisieDTO.Id.Value,
+ Note = saisieDTO.Note,
+ Texte = saisieDTO.Texte,
+ Champ = GetChamp(saisieDTO.Champ),
+ TypeSaisie = saisieDTO.TypeSaisie
+ };
+
+ return saisie;
+ }
+
+ ///
+ /// Transformer un objet Saisie en objet SaisieDTO.
+ ///
+ ///
+ ///
+ public SaisieDTO GetSaisieDTO(Saisie saisie)
+ {
+ if (saisie == null)
+ return null;
+
+ SaisieDTO saisieDTO = new SaisieDTO()
+ {
+ Id = saisie.IdSaisie,
+ Note = saisie.Note,
+ Texte = saisie.Texte,
+ Champ = GetChampDTO(saisie.Champ),
+ TypeSaisie = saisie.TypeSaisie
+ };
+ return saisieDTO;
+ }
+
+ ///
+ /// Transformer un objet StatutFormationDTO en objet StatutFormation.
+ ///
+ ///
+ ///
+ public StatutFormation GetStatutFormation(StatutFormationDTO statutFormationDTO)
+ {
+ if (statutFormationDTO == null)
+ return null;
+
+ StatutFormation statutFormation = new StatutFormation()
+ {
+ IdStatutFormation = statutFormationDTO.Id.Value,
+ Libelle = statutFormationDTO.Libelle
+ };
+
+ return statutFormation;
+ }
+
+ ///
+ /// Transformer un objet StatutFormation en objet StatutFormationDTO.
+ ///
+ ///
+ ///
+ public StatutFormationDTO GetStatutFormationDTO(StatutFormation statutFormation)
+ {
+ if (statutFormation == null)
+ return null;
+
+ StatutFormationDTO statutFormationDTO = new StatutFormationDTO()
+ {
+ Id = statutFormation.IdStatutFormation,
+ Libelle = statutFormation.Libelle
+ };
+
+ return statutFormationDTO;
+ }
+
+ ///
+ /// Transformer un objet TypeFormationDTO en objet TypeFormation.
+ ///
+ ///
+ ///
+ public TypeFormation GetTypeFormation(TypeFormationDTO typeFormationDTO)
+ {
+ if (typeFormationDTO == null)
+ return null;
+
+ TypeFormation typeFormation = new TypeFormation()
+ {
+ IdTypeFormation = typeFormationDTO.Id.Value,
+ Libelle = typeFormationDTO.Libelle
+ };
+
+ return typeFormation;
+ }
+
+ ///
+ /// Transformer un objet TypeFormation en objet TypeFormationDTO.
+ ///
+ ///
+ ///
+ public TypeFormationDTO GetTypeFormationDTO(TypeFormation typeFormation)
+ {
+ if (typeFormation == null)
+ return null;
+
+ TypeFormationDTO typeFormationDTO = new TypeFormationDTO()
+ {
+ Id = typeFormation.IdTypeFormation,
+ Libelle = typeFormation.Libelle
+ };
+
+ return typeFormationDTO;
+ }
+
+ ///
+ /// Transformer un objet Note en objet AffichageNoteDTO.
+ /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur (nom et prénom) de l'objet AffichageNoteDTO.
+ ///
+ ///
+ ///
+ ///
+ public AffichageNoteDTO NoteToAffichageDTO(Note note, IEnumerable collaborateurs)
+ {
+ Collaborateur collaborateur = collaborateurs.FirstOrDefault(c => c.Id.Equals(note.IdCollaborateur));
+ string infoCollab = "Aucun collaborateur lié";
+ if (collaborateur != null)
+ infoCollab = collaborateur.Nom + " " + collaborateur.Prenom;
+ AffichageNoteDTO affichage = new AffichageNoteDTO()
+ {
+ Id = note.IdNote,
+ IdCollaborateur = note.IdCollaborateur,
+ Collaborateur = infoCollab,
+ Titre = note.Titre,
+ DateMiseAJour = note.DateMiseAJour
+ };
+ return affichage;
+ }
+
+ ///
+ /// Transformer un objet Note en objet DetailsNoteDTO.
+ /// L'objet CollaborateurDTO est utilisé pour alimenter la propriété Collaborateur de l'objet DetailsNoteDTO.
+ ///
+ ///
+ ///
+ ///
+ public DetailsNoteDTO NoteToDetailSDTO(Note note, CollaborateurDTO collaborateur)
+ {
+ if (collaborateur == null)
+ throw new CollaborateurNotFoundException("Il est impossible de récupérer une note donc le collaborateur n'existe plus");
+ DetailsNoteDTO details = new DetailsNoteDTO()
+ {
+ Id = note.IdNote,
+ DateCreation = note.DateCreation,
+ DateMiseAjour = note.DateMiseAJour,
+ Titre = note.Titre,
+ Texte = note.Texte,
+ IdAuteur = note.IdAuteur,
+ Collaborateur = collaborateur,
+ };
+ return details;
+ }
+
+ ///
+ /// Mettre à jour un objet Formation en fonction d'un objet FormationDTO.
+ ///
+ ///
+ ///
+ ///
+ public Formation SetFormation(Formation formation, FormationDTO formationDTO)
+ {
+ if (formation == null || formationDTO == null)
+ return null;
+
+ formation.Intitule = formationDTO.Intitule;
+ formation.IdAgence = formationDTO.IdAgence.Value;
+ formation.DateDebut = formationDTO.DateDebut.Value;
+ formation.DateFin = formationDTO.DateFin.Value;
+ formation.Heure = Convert.ToInt32(formationDTO.Heure.Value);
+ formation.Jour = Convert.ToInt32(formationDTO.Jour.Value);
+ formation.Organisme = formationDTO.Organisme;
+ formation.EstCertifiee = formationDTO.EstCertifiee.Value;
+ //formation.EstRealisee = formationDTO.EstRealisee.Value;
+ formation.Origine = GetOrigineFormation(formationDTO.Origine);
+ formation.Statut = GetStatutFormation(formationDTO.Statut);
+ formation.ModeFormation = GetModeFormation(formationDTO.Mode);
+ formation.TypeFormation = GetTypeFormation(formationDTO.Type);
+
+ return formation;
+ }
+
+ ///
+ /// Mettre à jour la réponse d'un objet Engagement en fonction d'un objet EngagementDTO.
+ ///
+ ///
+ ///
+ ///
+ public Engagement SetReponseEngagement(Engagement engagement, EngagementDTO engagementDTO)
+ {
+ if (engagement == null || engagementDTO == null)
+ return null;
+
+ engagement.EtatEngagement = engagementDTO.EtatEngagement;
+
+ switch (engagement.EtatEngagement)
+ {
+ case EtatEngagement.NonRealisable:
+ engagement.RaisonNonRealisable = engagementDTO.RaisonNonRealisable;
+ break;
+ case EtatEngagement.DateLimitePassee:
+ engagement.RaisonNonRealisable = "La date limite pour respecter l'engagement est passée.";
+ break;
+ default:
+ engagement.RaisonNonRealisable = null;
+ break;
+ }
+
+ return engagement;
+ }
+ }
+}