@ -26,6 +26,11 @@ namespace EPAServeur.Services
/// </summary>
private readonly ICollaborateurService collaborateurService ;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO ;
/// <summary>
/// Nombre d'éléments min à afficher par page
/// </summary>
@ -59,10 +64,11 @@ namespace EPAServeur.Services
/// Constructeur de la classe FormationService
/// </summary>
/// <param name="_epContext"></param>
public FormationService ( EpContext _ epContext , ICollaborateurService _ collaborateurService )
public FormationService ( EpContext _ epContext , ICollaborateurService _ collaborateurService , ITransformDTO _ transformDTO )
{
epContext = _ epContext ;
collaborateurService = _ collaborateurService ;
transformDTO = _ transformDTO ;
}
# endregion
@ -91,12 +97,12 @@ namespace EPAServeur.Services
if ( formation . ParticipationsFormation . Count > 0 )
{
IEnumerable < CollaborateurDTO > collaborateurDTOs = await GetCollaborateurDTOs ( formation . ParticipationsFormation ) ;
return GetFormationDTO ( formation , collaborateurDTOs ) ;
IEnumerable < CollaborateurDTO > collaborateurDTOs = await collaborateurService . GetCollaborateurDTOsAsync ( formation . ParticipationsFormation ) ;
return transformDTO . GetFormationDTO ( formation , collaborateurDTOs ) ;
}
else
{
return GetFormationDTO ( formation ) ;
return transformDTO . GetFormationDTOWhitoutParticipationFormation ( formation ) ;
}
}
@ -137,7 +143,7 @@ namespace EPAServeur.Services
formations = await query . ToListAsync ( ) ;
formationDTOs = formations . Select ( formation = > GetFormationDetailsDTO ( formation ) ) ;
formationDTOs = formations . Select ( formation = > transformDTO . GetFormationDetailsDTO ( formation ) ) ;
return formationDTOs ;
}
@ -187,7 +193,7 @@ namespace EPAServeur.Services
modeFormations = await epContext . ModeFormation . ToListAsync ( ) ;
modeFormationDTOs = modeFormations . Select ( modeFormation = > GetModeFormationDTO ( modeFormation ) ) ;
modeFormationDTOs = modeFormations . Select ( modeFormation = > transformDTO . GetModeFormationDTO ( modeFormation ) ) ;
return modeFormationDTOs ;
}
@ -203,7 +209,7 @@ namespace EPAServeur.Services
origineFormations = await epContext . OrigineFormation . ToListAsync ( ) ;
origineFormationDTOs = origineFormations . Select ( origineFormation = > GetOrigineFormationDTO ( origineFormation ) ) ;
origineFormationDTOs = origineFormations . Select ( origineFormation = > transformDTO . GetOrigineFormationDTO ( origineFormation ) ) ;
return origineFormationDTOs ;
}
@ -219,7 +225,7 @@ namespace EPAServeur.Services
statutFormations = await epContext . StatutFormation . ToListAsync ( ) ;
statutFormationDTOs = statutFormations . Select ( statutFormation = > GetStatutFormationDTO ( statutFormation ) ) ;
statutFormationDTOs = statutFormations . Select ( statutFormation = > transformDTO . GetStatutFormationDTO ( statutFormation ) ) ;
return statutFormationDTOs ;
}
@ -235,7 +241,7 @@ namespace EPAServeur.Services
typeFormations = await epContext . TypeFormation . ToListAsync ( ) ;
typeFormationDTOs = typeFormations . Select ( typeFormation = > GetTypeFormationDTO ( typeFormation ) ) ;
typeFormationDTOs = typeFormations . Select ( typeFormation = > transformDTO . GetTypeFormationDTO ( typeFormation ) ) ;
return typeFormationDTOs ;
}
@ -250,7 +256,7 @@ namespace EPAServeur.Services
IsFormationValide ( formationDTO ) ;
Formation formation = new Formation ( ) ;
formation = SetFormation ( formation , formationDTO ) ;
formation = transformDTO . SetFormation ( formation , formationDTO ) ;
epContext . StatutFormation . Attach ( formation . Statut ) ;
epContext . OrigineFormation . Attach ( formation . Origine ) ;
@ -260,7 +266,7 @@ namespace EPAServeur.Services
await epContext . SaveChangesAsync ( ) ;
return GetFormationDTO ( formation ) ;
return transformDTO . GetFormationDTOWhitoutParticipationFormation ( formation ) ;
}
/// <summary>
@ -289,10 +295,10 @@ namespace EPAServeur.Services
throw new FormationNotFoundException ( string . Format ( "Aucune formation trouvée avec l'id suivant: {0}." , idFormation ) ) ;
formation = SetFormation ( formation , formationDTO ) ;
formation = transformDTO . SetFormation ( formation , formationDTO ) ;
await epContext . SaveChangesAsync ( ) ;
return GetFormationDTO ( formation ) ;
return transformDTO . GetFormationDTOWhitoutParticipationFormation ( formation ) ;
}
/// <summary>
@ -318,7 +324,7 @@ namespace EPAServeur.Services
await epContext . SaveChangesAsync ( ) ;
return GetFormationDTO ( formation ) ;
return transformDTO . GetFormationDTOWhitoutParticipationFormation ( formation ) ;
}
# endregion
@ -538,385 +544,6 @@ namespace EPAServeur.Services
}
#region Object to DTO
/// <summary>
/// Récuperer un objet FormationDTO en fonction d'un objet Formation
/// </summary>
/// <param name="formation"></param>
/// <returns></returns>
private FormationDTO GetFormationDTO ( 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 ;
}
/// <summary>
/// Récuperer un objet FormationDTO avec des participations en fonction d'un objet Formation et d'une liste de CollaborateurDTO
/// </summary>
/// <param name="formation"></param>
/// <returns></returns>
private FormationDTO GetFormationDTO ( Formation formation , IEnumerable < CollaborateurDTO > 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 ;
}
/// <summary>
/// Récuperer un objet FormationDetailsDTO en fonction d'un objet Formation
/// </summary>
/// <param name="formation"></param>
/// <returns></returns>
private 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 ;
}
/// <summary>
/// Récuperer un objet OrigineFormationDTO en fonction d'un objet OrigineFormation
/// </summary>
/// <param name="origineFormation"></param>
/// <returns></returns>
private OrigineFormationDTO GetOrigineFormationDTO ( OrigineFormation origineFormation )
{
if ( origineFormation = = null )
return null ;
OrigineFormationDTO origineFormationDTO = new OrigineFormationDTO ( )
{
Id = origineFormation . IdOrigineFormation ,
Libelle = origineFormation . Libelle
} ;
return origineFormationDTO ;
}
/// <summary>
/// Récuperer un objet StatutFormationDTO en fonction d'un objet StatutFormation
/// </summary>
/// <param name="statutFormation"></param>
/// <returns></returns>
private StatutFormationDTO GetStatutFormationDTO ( StatutFormation statutFormation )
{
if ( statutFormation = = null )
return null ;
StatutFormationDTO statutFormationDTO = new StatutFormationDTO ( )
{
Id = statutFormation . IdStatutFormation ,
Libelle = statutFormation . Libelle
} ;
return statutFormationDTO ;
}
/// <summary>
/// Récuperer un objet ModeFormationDTO en fonction d'un objet ModeFormation
/// </summary>
/// <param name="modeFormation"></param>
/// <returns></returns>
private ModeFormationDTO GetModeFormationDTO ( ModeFormation modeFormation )
{
if ( modeFormation = = null )
return null ;
ModeFormationDTO modeFormationDTO = new ModeFormationDTO ( )
{
Id = modeFormation . IdModeFormation ,
Libelle = modeFormation . Libelle
} ;
return modeFormationDTO ;
}
/// <summary>
/// Récuperer un objet TypeFormationDTO en fonction d'un objet TypeFormation
/// </summary>
/// <param name="typeFormation"></param>
/// <returns></returns>
private TypeFormationDTO GetTypeFormationDTO ( TypeFormation typeFormation )
{
if ( typeFormation = = null )
return null ;
TypeFormationDTO typeFormationDTO = new TypeFormationDTO ( )
{
Id = typeFormation . IdTypeFormation ,
Libelle = typeFormation . Libelle
} ;
return typeFormationDTO ;
}
/// <summary>
/// Récuperer une liste de CollaborateurDTO contenant les collaborateurs et les référents. Retourne null s'il n'y a aucune participation.
/// </summary>
/// <param name="typeFormation"></param>
/// <returns></returns>
private async Task < IEnumerable < CollaborateurDTO > > GetCollaborateurDTOs ( List < ParticipationFormation > participationsFormation )
{
if ( participationsFormation = = null | | participationsFormation . Count = = 0 )
return null ;
List < Guid ? > guids = participationsFormation . SelectMany ( participationFormation = > new [ ] { ( Guid ? ) participationFormation . DemandeFormation . Ep . IdCollaborateur , participationFormation . DemandeFormation . Ep . IdReferent } ) . ToList ( ) ;
return await collaborateurService . GetCollaborateurDTOsAsync ( guids ) ; ;
}
/// <summary>
/// Récuperer une liste de ParticipationFormationDTO en fonction d'une liste de ParticipationFormation et d'une liste de CollaborateurDTO. Retourne null s'il n'y a aucune participation ou aucun collaborateur.
/// </summary>
/// <param name="typeFormation"></param>
/// <returns></returns>
private List < ParticipationFormationDTO > GetParticipationsFormationDTO ( List < ParticipationFormation > participationsFormation , IEnumerable < CollaborateurDTO > collaborateurDTOs )
{
List < ParticipationFormationDTO > 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 ;
}
/// <summary>
/// Récuperer un objet ParticipationFormationDTO en fonction d'un objet ParticipationFormation et d'une liste de CollaborateurDTO
/// </summary>
/// <param name="participationFormation"></param>
/// <returns></returns>
private ParticipationFormationDTO GetParticipationFormationDTO ( ParticipationFormation participationFormation , IEnumerable < CollaborateurDTO > 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 ;
}
/// <summary>
/// Récupère un objet CollaborateurDTO en fonction d'un objet ParticipationFormation et d'une liste de CollaborateurDTO
/// </summary>
/// <param name="participationFormation"></param>
/// <returns></returns>
private CollaborateurDTO GetCollaborateurDTO ( ParticipationFormation participationFormation , IEnumerable < CollaborateurDTO > collaborateurDTOs )
{
if ( participationFormation = = null | | collaborateurDTOs = = null | | ! collaborateurDTOs . Any ( ) )
return null ;
return collaborateurDTOs . FirstOrDefault ( collaborateurDTO = > collaborateurDTO . Id = = participationFormation . DemandeFormation . Ep . IdCollaborateur ) ;
}
/// <summary>
/// Récupère un objet EpInformationDTO en fonction d'un objet Ep et d'une liste de CollaborateurDTO
/// </summary>
/// <param name="ep"></param>
/// <returns></returns>
private EpInformationDTO GetEpInformationDTO ( Ep ep , IEnumerable < CollaborateurDTO > collaborateurDTOs )
{
CollaborateurDTO collaborateur ;
CollaborateurDTO referent ;
if ( ep = = null | | collaborateurDTOs = = null | | ! collaborateurDTOs . Any ( ) )
return null ;
collaborateur = collaborateurDTOs . FirstOrDefault ( collaborateurDTO = > collaborateurDTO . Id = = ep . IdCollaborateur ) ;
referent = collaborateurDTOs . 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 ;
}
# endregion
#region DTO to Object
/// <summary>
/// Modifier un objet Formation en fonction d'un objet FormationDTO
/// </summary>
/// <param name="formation"></param>
/// <param name="formationDTO"></param>
/// <returns></returns>
private 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 ;
}
/// <summary>
/// Récuperer un objet OrigineFormation en fonction d'un objet OrigineFormationDTO
/// </summary>
/// <param name="origineFormationDTO"></param>
/// <returns></returns>
private OrigineFormation GetOrigineFormation ( OrigineFormationDTO origineFormationDTO )
{
if ( origineFormationDTO = = null )
return null ;
OrigineFormation origineFormation = new OrigineFormation ( )
{
IdOrigineFormation = origineFormationDTO . Id . Value ,
Libelle = origineFormationDTO . Libelle
} ;
return origineFormation ;
}
/// <summary>
/// Récuperer un objet StatutFormation en fonction d'un objet StatutFormationDTO
/// </summary>
/// <param name="statutFormationDTO"></param>
/// <returns></returns>
private StatutFormation GetStatutFormation ( StatutFormationDTO statutFormationDTO )
{
if ( statutFormationDTO = = null )
return null ;
StatutFormation statutFormation = new StatutFormation ( )
{
IdStatutFormation = statutFormationDTO . Id . Value ,
Libelle = statutFormationDTO . Libelle
} ;
return statutFormation ;
}
/// <summary>
/// Récuperer un objet ModeFormation en fonction d'un objet ModeFormationDTO
/// </summary>
/// <param name="modeFormationDTO"></param>
/// <returns></returns>
private ModeFormation GetModeFormation ( ModeFormationDTO modeFormationDTO )
{
if ( modeFormationDTO = = null )
return null ;
ModeFormation modeFormation = new ModeFormation ( )
{
IdModeFormation = modeFormationDTO . Id . Value ,
Libelle = modeFormationDTO . Libelle
} ;
return modeFormation ;
}
/// <summary>
/// Récuperer un objet TypeFormation en fonction d'un objet TypeFormationDTO
/// </summary>
/// <param name="typeFormationDTO"></param>
/// <returns></returns>
private TypeFormation GetTypeFormation ( TypeFormationDTO typeFormationDTO )
{
if ( typeFormationDTO = = null )
return null ;
TypeFormation typeFormation = new TypeFormation ( )
{
IdTypeFormation = typeFormationDTO . Id . Value ,
Libelle = typeFormationDTO . Libelle
} ;
return typeFormation ;
}
# endregion
# endregion
}