Remplacement des méthodes de mappage privés par l'injection du service TransformDTO

develop
jboinembalome 4 years ago
parent bdf7e343e7
commit b64e5c0a23
  1. 216
      EPAServeur/Services/CollaborateurService.cs
  2. 47
      EPAServeur/Services/DemandeDelegationService.cs
  3. 150
      EPAServeur/Services/EngagementService.cs
  4. 69
      EPAServeur/Services/EpInformationService.cs
  5. 413
      EPAServeur/Services/FormationService.cs
  6. 88
      EPAServeur/Services/NoteService.cs
  7. 250
      EPAServeur/Services/ParticipationFormationService.cs

@ -2,6 +2,7 @@
using EPAServeur.Exceptions; using EPAServeur.Exceptions;
using EPAServeur.IServices; using EPAServeur.IServices;
using EPAServeur.Models.EP; using EPAServeur.Models.EP;
using EPAServeur.Models.Formation;
using IO.Swagger.ApiCollaborateur; using IO.Swagger.ApiCollaborateur;
using IO.Swagger.DTO; using IO.Swagger.DTO;
using IO.Swagger.ModelCollaborateur; using IO.Swagger.ModelCollaborateur;
@ -26,6 +27,11 @@ namespace EPAServeur.Services
/// </summary> /// </summary>
private readonly ICollaborateurApi collaborateurApi; private readonly ICollaborateurApi collaborateurApi;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO;
/// <summary> /// <summary>
/// Nombre d'éléments min à afficher par page /// Nombre d'éléments min à afficher par page
/// </summary> /// </summary>
@ -49,10 +55,11 @@ namespace EPAServeur.Services
#region Constructeurs #region Constructeurs
public CollaborateurService(ICollaborateurApi _collaborateurApi, EpContext _contexte) public CollaborateurService(ICollaborateurApi _collaborateurApi, EpContext _contexte, ITransformDTO _transformDTO)
{ {
collaborateurApi = _collaborateurApi; collaborateurApi = _collaborateurApi;
context = _contexte; context = _contexte;
transformDTO = _transformDTO;
} }
#endregion #endregion
@ -259,6 +266,125 @@ namespace EPAServeur.Services
return collaborateursDTO; return collaborateursDTO;
} }
/// <summary>
/// Transformer un collaborateur en collaborateurDTO de manière asynchrone.
/// </summary>
/// <param name="collaborateur">Collaborateur à transformer en collaborateurDTO</param>
/// <param name="chercherReferent">Indiquer si le référent du collaborateur doit être récupéré ou non</param>
/// <returns>Renvoie la transformation DTO du collaborateur</returns>
public async Task<CollaborateurDTO> GetCollaborateurDTOAsync(Collaborateur collaborateur, bool chercherReferent)
{
CollaborateurDTO collaborateurDTO = new CollaborateurDTO()
{
Id = collaborateur.Id,
Prenom = collaborateur.Prenom,
Nom = collaborateur.Nom,
MailApside = collaborateur.MailApside,
DateArrivee = collaborateur.DateArrivee,
};
collaborateurDTO.BusinessUnit = transformDTO.GetBusinessUnitDTO(collaborateur.BusinessUnit);
//Si le référent du collaborateur doit être récupérer en même temps
if (chercherReferent)
collaborateurDTO.Referent = await GetReferentAsync(collaborateurDTO);
return collaborateurDTO;
}
/// <summary>
/// Récupérer une liste de CollaborateurDTO contenant les collaborateurs et les référents.
/// </summary>
/// <param name="participationsFormation"></param>
/// <returns></returns>
public async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOsAsync(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 GetCollaborateurDTOsAsync(guids);
}
/// <summary>
/// Récupérer une liste de CollaborateurDTO contenant les collaborateurs et les référents.
/// </summary>
/// <param name="participationsFormation"></param>
/// <returns></returns>
public async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOsAsync(IEnumerable<ParticipationFormation> participationsFormation)
{
if (participationsFormation == null || !participationsFormation.Any())
return null;
List<Guid?> guids = participationsFormation.SelectMany(participationFormation => new[] { (Guid?)participationFormation.DemandeFormation.Ep.IdCollaborateur, participationFormation.DemandeFormation.Ep.IdReferent }).ToList();
return await GetCollaborateurDTOsAsync(guids);
}
/// <summary>
/// Récupérer le collaborateur et le référent qui sont présent dans l'EP qui est lié à l'engagement.
/// </summary>
/// <param name="engagement"></param>
/// <returns></returns>
public async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOsAsync(Engagement engagement)
{
if (engagement == null)
return null;
List<Guid?> guids = new List<Guid?>();
guids.Add((Guid?)engagement.Ep.IdCollaborateur);
guids.Add(engagement.Ep.IdReferent);
return await GetCollaborateurDTOsAsync(guids);
}
/// <summary>
/// Récupérer les collaborateurs et les référents qui sont présent dans les EP qui sont liés aux engagements.
/// </summary>
/// <param name="engagements"></param>
/// <returns></returns>
public async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOsAsync(IEnumerable<Engagement> engagements)
{
if (engagements == null || !engagements.Any())
return null;
List<Guid?> guids = engagements.SelectMany(engagement => new[] { (Guid?)engagement.Ep.IdCollaborateur, engagement.Ep.IdReferent }).ToList();
return await GetCollaborateurDTOsAsync(guids);
}
/// <summary>
/// Récupérer le collaborateur et le référent qui sont présent dans les EP.
/// </summary>
/// <param name="eps"></param>
/// <returns></returns>
public async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOsAsync(IEnumerable<Ep> eps)
{
if (eps == null || !eps.Any())
return null;
List<Guid?> guids = eps.SelectMany(ep => new Guid?[] { ep.IdReferent, ep.IdCollaborateur }).Distinct().ToList();
return await GetCollaborateurDTOsAsync(guids);
}
/// <summary>
/// Récupérer le référent EP d'un collaborateur de manière asynchrone s'il existe.
/// </summary>
/// <param name="collaborateur">Le collaborateur dont on cherche le référent EP</param>
/// <returns>Le référent EP du collaborateur</returns>
public async Task<CollaborateurDTO> GetReferentAsync(CollaborateurDTO collaborateur)
{
ReferentEP referentEP = await context.ReferentEP.FindAsync(collaborateur.Id);
//vérifier que le collaorateur a un référent EP
if (referentEP == null || referentEP.IdReferent == null || !referentEP.IdReferent.HasValue || referentEP.IdReferent.Value == null)
return null;
Collaborateur referent = await collaborateurApi.ChercherCollabIdAsync(referentEP.IdReferent);
if (referent == null)
return null;
return await GetCollaborateurDTOAsync(referent, false);
}
#endregion #endregion
@ -337,93 +463,5 @@ namespace EPAServeur.Services
} }
#endregion #endregion
#region DTO To Object
/// <summary>
/// Transformer une agence en agenceDTO
/// </summary>
/// <param name="agence">agence à transformer en agenceDTO</param>
/// <returns>Retourne la transformation DTO de l'agence</returns>
private AgenceDTO GetAgenceDTO(Agence agence)
{
if (agence == null)
return null;
AgenceDTO agenceDTO = new AgenceDTO()
{
Id = agence.Id,
Nom = agence.Nom,
Bu = new List<BusinessUnitDTO>()
};
agenceDTO.Bu = agence.Bus.Select(bu => new BusinessUnitDTO()
{
Id = bu.Id,
Nom = bu.Nom
}).ToList();
return agenceDTO;
}
/// <summary>
/// Transforme une businessUnit en businessUnitDTO
/// </summary>
/// <param name="businessUnit">businessUnit à transformer en businessUnitDTO</param>
/// <returns>Retourne la transformation DTO de la businessUnit</returns>
private 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;
}
/// <summary>
/// Transforme un collaborateur en collaborateurDTO de manière asynchrone
/// </summary>
/// <param name="collaborateur">collaborateur à transformer en collaborateurDTO</param>
/// <param name="chercherReferent">Indiquer si le référent du collaborateur doit être récupéré ou non</param>
/// <returns>Renvoie la transformation DTO du collaborateur</returns>
private async Task<CollaborateurDTO> GetCollaborateurDTOAsync(Collaborateur collaborateur, bool chercherReferent)
{
CollaborateurDTO collaborateurDTO = new CollaborateurDTO()
{
Id = collaborateur.Id,
Prenom = collaborateur.Prenom,
Nom = collaborateur.Nom,
MailApside = collaborateur.MailApside,
DateArrivee = collaborateur.DateArrivee,
};
collaborateurDTO.BusinessUnit = GetBusinessUnitDTO(collaborateur.BusinessUnit);
//Si le référent du collaborateur doit être récupérer en même temps
if (chercherReferent)
collaborateurDTO.Referent = await GetReferentAsync(collaborateurDTO);
return collaborateurDTO;
}
/// <summary>
/// Récupérer le référent EP d'un collaborateur de manière asynchrone si il existe
/// </summary>
/// <param name="collaborateur">Le collaborateur dont on cherche le référent EP</param>
/// <returns>Le référent EP du collaborateur</returns>
private async Task<CollaborateurDTO> GetReferentAsync(CollaborateurDTO collaborateur)
{
ReferentEP referentEP = await context.ReferentEP.FindAsync(collaborateur.Id);
//vérifier que le collaorateur a un référent EP
if (referentEP == null || referentEP.IdReferent == null || !referentEP.IdReferent.HasValue || referentEP.IdReferent.Value == null)
return null;
Collaborateur referent = await collaborateurApi.ChercherCollabIdAsync(referentEP.IdReferent);
if (referent == null)
return null;
return await GetCollaborateurDTOAsync(referent, false);
}
#endregion
} }
} }

@ -17,16 +17,29 @@ namespace EPAServeur.Services
public class DemandeDelegationService : IDemandeDelegationService public class DemandeDelegationService : IDemandeDelegationService
{ {
#region variables #region variables
/// <summary>
/// Accès et gestion de la base de données
/// </summary>
private readonly EpContext context; private readonly EpContext context;
/// <summary>
/// Accès et service collaborateur
/// </summary>
private readonly ICollaborateurService collaborateurService; private readonly ICollaborateurService collaborateurService;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO;
#endregion #endregion
#region constructeur #region constructeur
public DemandeDelegationService(ICollaborateurService _collaborateurService, EpContext _context) public DemandeDelegationService(ICollaborateurService _collaborateurService, EpContext _context, ITransformDTO _transformDTO)
{ {
context = _context; context = _context;
collaborateurService = _collaborateurService; collaborateurService = _collaborateurService;
transformDTO = _transformDTO;
} }
#endregion #endregion
@ -46,7 +59,7 @@ namespace EPAServeur.Services
throw new ReferentNotFoundException(); throw new ReferentNotFoundException();
} }
return demandesDelegation.Select(d => GetDemandeDelegationDTO(d, referent, collaborateursDTO)); return demandesDelegation.Select(d => transformDTO.GetDemandeDelegationDTO(d, referent, collaborateursDTO));
} }
@ -102,36 +115,6 @@ namespace EPAServeur.Services
return demandeDelegationDTO; return demandeDelegationDTO;
} }
private EpInformationDTO GetEpInformationDTO(Ep ep, IEnumerable<CollaborateurDTO> collaborateurs)
{
return new EpInformationDTO()
{
Id = ep.IdEP,
Collaborateur = collaborateurs.FirstOrDefault(c => c.Id.Equals(ep.IdCollaborateur)),
Referent = collaborateurs.FirstOrDefault(c => c.Id.Equals(ep.IdReferent)),
DatePrevisionnelle = ep.DatePrevisionnelle,
DateDisponibilite = ep.DateDisponibilite,
Statut = ep.Statut,
Type = ep.TypeEP,
Obligatoire = ep.Obligatoire,
};
}
private DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demande, CollaborateurDTO referent, IEnumerable<CollaborateurDTO> collaborateurs)
{
return new DemandeDelegationDTO()
{
Id = demande.IdDemandeDelegation,
DateDemande = demande.DateDemande,
EtatDemande = demande.EtatDemande,
Referent = referent,
RaisonDemande = demande.RaisonDemande,
Ep = GetEpInformationDTO(demande.Ep, collaborateurs)
};
}
#endregion #endregion

@ -27,6 +27,11 @@ namespace EPAServeur.Services
/// </summary> /// </summary>
private readonly ICollaborateurService collaborateurService; private readonly ICollaborateurService collaborateurService;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO;
/// <summary> /// <summary>
/// Nombre d'éléments min à afficher par page /// Nombre d'éléments min à afficher par page
/// </summary> /// </summary>
@ -60,10 +65,11 @@ namespace EPAServeur.Services
/// Constructeur de la classe EngagementService /// Constructeur de la classe EngagementService
/// </summary> /// </summary>
/// <param name="_epContext"></param> /// <param name="_epContext"></param>
public EngagementService(EpContext _epContext, ICollaborateurService _collaborateurService) public EngagementService(EpContext _epContext, ICollaborateurService _collaborateurService, ITransformDTO _transformDTO)
{ {
epContext = _epContext; epContext = _epContext;
collaborateurService = _collaborateurService; collaborateurService = _collaborateurService;
transformDTO = _transformDTO;
} }
#endregion #endregion
@ -96,9 +102,9 @@ namespace EPAServeur.Services
engagements = await query.ToListAsync(); engagements = await query.ToListAsync();
collaborateurDTOs = await GetCollaborateurDTOs(engagements); collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(engagements);
engagementDTOs = engagements.Select(engagement => GetEngagementDTO(engagement, collaborateurDTOs)); engagementDTOs = engagements.Select(engagement => transformDTO.GetEngagementDTO(engagement, collaborateurDTOs));
engagementDTOs = CollaborateurFilter(engagementDTOs, texte); engagementDTOs = CollaborateurFilter(engagementDTOs, texte);
return engagementDTOs; return engagementDTOs;
@ -118,9 +124,9 @@ namespace EPAServeur.Services
engagements = await query.ToListAsync(); engagements = await query.ToListAsync();
collaborateurDTOs = await GetCollaborateurDTOs(engagements); collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(engagements);
engagementDTOs = engagements.Select(engagement => GetEngagementDTO(engagement, collaborateurDTOs)); engagementDTOs = engagements.Select(engagement => transformDTO.GetEngagementDTO(engagement, collaborateurDTOs));
engagementDTOs = CollaborateurFilter(engagementDTOs, texte); engagementDTOs = CollaborateurFilter(engagementDTOs, texte);
count = engagementDTOs.Count(); count = engagementDTOs.Count();
@ -149,13 +155,13 @@ namespace EPAServeur.Services
if (engagement == null) if (engagement == null)
throw new EngagementNotFoundException(); throw new EngagementNotFoundException();
collaborateurDTOs = await GetCollaborateurDTOs(engagement); collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(engagement);
engagement = SetReponseEngagement(engagement, engagementDTO); engagement = transformDTO.SetReponseEngagement(engagement, engagementDTO);
await epContext.SaveChangesAsync(); await epContext.SaveChangesAsync();
return GetEngagementDTO(engagement, collaborateurDTOs); return transformDTO.GetEngagementDTO(engagement, collaborateurDTOs);
} }
@ -323,134 +329,6 @@ namespace EPAServeur.Services
return query.Skip(skip).Take(take); return query.Skip(skip).Take(take);
} }
#region Object to DTO
/// <summary>
/// Récupère un objet EngagementDTO en fonction d'un objet Engagement et d'une liste de CollaborateurDTO
/// </summary>
/// <param name="engagement"></param>
/// <returns></returns>
private EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable<CollaborateurDTO> 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;
}
/// <summary>
/// Récuperer une liste de CollaborateurDTO contenant les collaborateurs et les référents. Retourne null si l'engagement est null.
/// </summary>
/// <param name="typeFormation"></param>
/// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(Engagement engagement)
{
if (engagement == null)
return null;
List<Guid?> guids = new List<Guid?>();
guids.Add((Guid?)engagement.Ep.IdCollaborateur);
guids.Add(engagement.Ep.IdReferent);
return await collaborateurService.GetCollaborateurDTOsAsync(guids); ;
}
/// <summary>
/// Récuperer une liste de CollaborateurDTO contenant les collaborateurs et les référents. Retourne null s'il n'y a aucun engagement.
/// </summary>
/// <param name="typeFormation"></param>
/// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<Engagement> engagements)
{
if (engagements == null || !engagements.Any())
return null;
List<Guid?> guids = engagements.SelectMany(engagement => new[] { (Guid?)engagement.Ep.IdCollaborateur, engagement.Ep.IdReferent }).ToList();
return await collaborateurService.GetCollaborateurDTOsAsync(guids);
}
/// <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>
/// Modifie la réponse d'un objet Engagement en fonction d'un objet EngagementDTO
/// </summary>
/// <param name="engagement"></param>
/// <param name="engagementDTO"></param>
/// <returns></returns>
private 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;
}
#endregion
#endregion #endregion
} }

@ -13,18 +13,43 @@ namespace EPAServeur.Services
public class EpInformationService : IEpInformationService public class EpInformationService : IEpInformationService
{ {
#region Variables #region Variables
private EpContext context; /// <summary>
private ICollaborateurService collaborateurService; /// Accès et gestion de la base de données
private int? minParPage = 5; /// </summary>
private int? maxParPage = 100; private readonly EpContext context;
private int? defaultParPage = 15;
/// <summary>
/// Accès et service collaborateur
/// </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>
private readonly int minParPage = 5;
/// <summary>
/// Nom d'éléments max à affichar par page
/// </summary>
private readonly int maxParPage = 100;
/// <summary>
/// Nombre d'éléments à afficher par défaut par page
/// </summary>
private readonly int defaultParPage = 15;
#endregion #endregion
#region constructeur #region constructeur
public EpInformationService(EpContext context, ICollaborateurService collaborateurService) public EpInformationService(EpContext context, ICollaborateurService collaborateurService, ITransformDTO _transformDTO)
{ {
this.context = context; this.context = context;
this.collaborateurService = collaborateurService; this.collaborateurService = collaborateurService;
this.transformDTO = _transformDTO;
} }
#endregion #endregion
@ -105,7 +130,7 @@ namespace EPAServeur.Services
if (ep == null) if (ep == null)
return null; return null;
IEnumerable<CollaborateurDTO> collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(new List<Guid?>() { ep.IdReferent, ep.IdCollaborateur }); IEnumerable<CollaborateurDTO> collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(new List<Guid?>() { ep.IdReferent, ep.IdCollaborateur });
return EpToEpDTO(ep, collaborateurDTOs); return transformDTO.EpToEpDTO(ep, collaborateurDTOs);
} }
#endregion #endregion
@ -116,8 +141,8 @@ namespace EPAServeur.Services
{ {
eps = TriDate(eps, dateDebut, dateFin); eps = TriDate(eps, dateDebut, dateFin);
IEnumerable<CollaborateurDTO> collaborateurDTOs = await GetCollaborateurDTOs(eps); IEnumerable<CollaborateurDTO> collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(eps);
IEnumerable<EpInformationDTO> epDTOs = eps.Select(ep => EpToEpDTO(ep, collaborateurDTOs)); IEnumerable<EpInformationDTO> epDTOs = eps.Select(ep => transformDTO.EpToEpDTO(ep, collaborateurDTOs));
if (!string.IsNullOrEmpty(texte)) if (!string.IsNullOrEmpty(texte))
epDTOs = epDTOs.Where(e => TriTexte(e, texte)); epDTOs = epDTOs.Where(e => TriTexte(e, texte));
@ -135,8 +160,8 @@ namespace EPAServeur.Services
eps = TriDate(eps, dateDebut, dateFin); eps = TriDate(eps, dateDebut, dateFin);
IEnumerable<CollaborateurDTO> collaborateurDTOs = await GetCollaborateurDTOs(eps); IEnumerable<CollaborateurDTO> collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(eps);
IEnumerable<EpInformationDTO> epDTOs = eps.Select(ep => EpToEpDTO(ep, collaborateurDTOs)); IEnumerable<EpInformationDTO> epDTOs = eps.Select(ep => transformDTO.EpToEpDTO(ep, collaborateurDTOs));
if(!string.IsNullOrEmpty(texte)) if(!string.IsNullOrEmpty(texte))
epDTOs = epDTOs.Where(e => TriTexte(e, texte)); epDTOs = epDTOs.Where(e => TriTexte(e, texte));
@ -154,22 +179,6 @@ namespace EPAServeur.Services
return eps; return eps;
} }
private EpInformationDTO EpToEpDTO(Ep ep, IEnumerable<CollaborateurDTO> 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
};
}
private IEnumerable<EpInformationDTO> TriColonne(IEnumerable<EpInformationDTO> epDTOs, string tri) private IEnumerable<EpInformationDTO> TriColonne(IEnumerable<EpInformationDTO> epDTOs, string tri)
{ {
switch (tri) switch (tri)
@ -223,12 +232,6 @@ namespace EPAServeur.Services
return (epDTOs.Collaborateur.Nom + " " + epDTOs.Collaborateur.Prenom).ToLower().Contains(texte.ToLower()) || (epDTOs.Collaborateur.Prenom + " " + epDTOs.Collaborateur.Nom).ToLower().Contains(texte.ToLower()); return (epDTOs.Collaborateur.Nom + " " + epDTOs.Collaborateur.Prenom).ToLower().Contains(texte.ToLower()) || (epDTOs.Collaborateur.Prenom + " " + epDTOs.Collaborateur.Nom).ToLower().Contains(texte.ToLower());
} }
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<Ep> eps)
{
List<Guid?> guids = eps.SelectMany(ep => new Guid?[] { ep.IdReferent, ep.IdCollaborateur }).Distinct().ToList();
return await collaborateurService.GetCollaborateurDTOsAsync(guids);
}
#endregion #endregion
} }
} }

@ -26,6 +26,11 @@ namespace EPAServeur.Services
/// </summary> /// </summary>
private readonly ICollaborateurService collaborateurService; private readonly ICollaborateurService collaborateurService;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO;
/// <summary> /// <summary>
/// Nombre d'éléments min à afficher par page /// Nombre d'éléments min à afficher par page
/// </summary> /// </summary>
@ -59,10 +64,11 @@ namespace EPAServeur.Services
/// Constructeur de la classe FormationService /// Constructeur de la classe FormationService
/// </summary> /// </summary>
/// <param name="_epContext"></param> /// <param name="_epContext"></param>
public FormationService(EpContext _epContext, ICollaborateurService _collaborateurService) public FormationService(EpContext _epContext, ICollaborateurService _collaborateurService, ITransformDTO _transformDTO)
{ {
epContext = _epContext; epContext = _epContext;
collaborateurService = _collaborateurService; collaborateurService = _collaborateurService;
transformDTO = _transformDTO;
} }
#endregion #endregion
@ -91,12 +97,12 @@ namespace EPAServeur.Services
if (formation.ParticipationsFormation.Count > 0) if (formation.ParticipationsFormation.Count > 0)
{ {
IEnumerable<CollaborateurDTO> collaborateurDTOs = await GetCollaborateurDTOs(formation.ParticipationsFormation); IEnumerable<CollaborateurDTO> collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(formation.ParticipationsFormation);
return GetFormationDTO(formation, collaborateurDTOs); return transformDTO.GetFormationDTO(formation, collaborateurDTOs);
} }
else else
{ {
return GetFormationDTO(formation); return transformDTO.GetFormationDTOWhitoutParticipationFormation(formation);
} }
} }
@ -137,7 +143,7 @@ namespace EPAServeur.Services
formations = await query.ToListAsync(); formations = await query.ToListAsync();
formationDTOs = formations.Select(formation => GetFormationDetailsDTO(formation)); formationDTOs = formations.Select(formation => transformDTO.GetFormationDetailsDTO(formation));
return formationDTOs; return formationDTOs;
} }
@ -187,7 +193,7 @@ namespace EPAServeur.Services
modeFormations = await epContext.ModeFormation.ToListAsync(); modeFormations = await epContext.ModeFormation.ToListAsync();
modeFormationDTOs = modeFormations.Select(modeFormation => GetModeFormationDTO(modeFormation)); modeFormationDTOs = modeFormations.Select(modeFormation => transformDTO.GetModeFormationDTO(modeFormation));
return modeFormationDTOs; return modeFormationDTOs;
} }
@ -203,7 +209,7 @@ namespace EPAServeur.Services
origineFormations = await epContext.OrigineFormation.ToListAsync(); origineFormations = await epContext.OrigineFormation.ToListAsync();
origineFormationDTOs = origineFormations.Select(origineFormation => GetOrigineFormationDTO(origineFormation)); origineFormationDTOs = origineFormations.Select(origineFormation => transformDTO.GetOrigineFormationDTO(origineFormation));
return origineFormationDTOs; return origineFormationDTOs;
} }
@ -219,7 +225,7 @@ namespace EPAServeur.Services
statutFormations = await epContext.StatutFormation.ToListAsync(); statutFormations = await epContext.StatutFormation.ToListAsync();
statutFormationDTOs = statutFormations.Select(statutFormation => GetStatutFormationDTO(statutFormation)); statutFormationDTOs = statutFormations.Select(statutFormation => transformDTO.GetStatutFormationDTO(statutFormation));
return statutFormationDTOs; return statutFormationDTOs;
} }
@ -235,7 +241,7 @@ namespace EPAServeur.Services
typeFormations = await epContext.TypeFormation.ToListAsync(); typeFormations = await epContext.TypeFormation.ToListAsync();
typeFormationDTOs = typeFormations.Select(typeFormation => GetTypeFormationDTO(typeFormation)); typeFormationDTOs = typeFormations.Select(typeFormation => transformDTO.GetTypeFormationDTO(typeFormation));
return typeFormationDTOs; return typeFormationDTOs;
} }
@ -250,7 +256,7 @@ namespace EPAServeur.Services
IsFormationValide(formationDTO); IsFormationValide(formationDTO);
Formation formation = new Formation(); Formation formation = new Formation();
formation = SetFormation(formation, formationDTO); formation = transformDTO.SetFormation(formation, formationDTO);
epContext.StatutFormation.Attach(formation.Statut); epContext.StatutFormation.Attach(formation.Statut);
epContext.OrigineFormation.Attach(formation.Origine); epContext.OrigineFormation.Attach(formation.Origine);
@ -260,7 +266,7 @@ namespace EPAServeur.Services
await epContext.SaveChangesAsync(); await epContext.SaveChangesAsync();
return GetFormationDTO(formation); return transformDTO.GetFormationDTOWhitoutParticipationFormation(formation);
} }
/// <summary> /// <summary>
@ -289,10 +295,10 @@ namespace EPAServeur.Services
throw new FormationNotFoundException(string.Format("Aucune formation trouvée avec l'id suivant: {0}.", idFormation)); 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(); await epContext.SaveChangesAsync();
return GetFormationDTO(formation); return transformDTO.GetFormationDTOWhitoutParticipationFormation(formation);
} }
/// <summary> /// <summary>
@ -318,7 +324,7 @@ namespace EPAServeur.Services
await epContext.SaveChangesAsync(); await epContext.SaveChangesAsync();
return GetFormationDTO(formation); return transformDTO.GetFormationDTOWhitoutParticipationFormation(formation);
} }
#endregion #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 #endregion
} }

@ -32,13 +32,19 @@ namespace EPAServeur.Services
/// Service collaborateur pour récupérer les données collaborateurs au format DTO /// Service collaborateur pour récupérer les données collaborateurs au format DTO
/// </summary> /// </summary>
private readonly ICollaborateurService collaborateurService; private readonly ICollaborateurService collaborateurService;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO;
#endregion #endregion
#region Constructeurs #region Constructeurs
public NoteService(ICollaborateurApi _collaborateurApi, ICollaborateurService _collaborateurService, EpContext _context) public NoteService(ICollaborateurApi _collaborateurApi, ICollaborateurService _collaborateurService, EpContext _context, ITransformDTO _transformDTO)
{ {
collaborateurService = _collaborateurService; collaborateurService = _collaborateurService;
collaborateurApi = _collaborateurApi; collaborateurApi = _collaborateurApi;
context = _context; context = _context;
transformDTO = _transformDTO;
} }
#endregion #endregion
@ -66,7 +72,7 @@ namespace EPAServeur.Services
//transformer la note DTO en Note //transformer la note DTO en Note
Note note = DetailsNoteDTOToNouvelleNote(nouvelleNote); Note note = transformDTO.DetailsNoteDTOToNouvelleNote(nouvelleNote);
//ajouter la note et sauvegarder //ajouter la note et sauvegarder
await context.Note.AddAsync(note); await context.Note.AddAsync(note);
@ -111,7 +117,7 @@ namespace EPAServeur.Services
if (auteur == null) if (auteur == null)
throw new ReferentNotFoundException("L'auteur de la note n'existe pas"); throw new ReferentNotFoundException("L'auteur de la note n'existe pas");
return NoteToDetailSDTO(note, await collaborateurService.GetCollaborateurByIdAsync(note.IdCollaborateur)); return transformDTO.NoteToDetailSDTO(note, await collaborateurService.GetCollaborateurByIdAsync(note.IdCollaborateur));
} }
/// <summary> /// <summary>
@ -134,7 +140,7 @@ namespace EPAServeur.Services
List<Guid?> guids = notes.Select(n => (Guid?)n.IdCollaborateur).ToList(); List<Guid?> guids = notes.Select(n => (Guid?)n.IdCollaborateur).ToList();
IEnumerable<Collaborateur> collaborateurs = await collaborateurApi.ChercherCollabAsync(guids); IEnumerable<Collaborateur> collaborateurs = await collaborateurApi.ChercherCollabAsync(guids);
IEnumerable<AffichageNoteDTO> AffichageNoteDTO = notes.Select(note => NoteToAffichageDTO(note, collaborateurs)); IEnumerable<AffichageNoteDTO> AffichageNoteDTO = notes.Select(note => transformDTO.NoteToAffichageDTO(note, collaborateurs));
int skip = (numPage.Value - 1) * parPage.Value; int skip = (numPage.Value - 1) * parPage.Value;
@ -173,7 +179,7 @@ namespace EPAServeur.Services
List<Guid?> guids = notes.Select(n => (Guid?)n.IdCollaborateur).ToList(); List<Guid?> guids = notes.Select(n => (Guid?)n.IdCollaborateur).ToList();
IEnumerable<Collaborateur> collaborateurs = await collaborateurApi.ChercherCollabAsync(guids); IEnumerable<Collaborateur> collaborateurs = await collaborateurApi.ChercherCollabAsync(guids);
IEnumerable<AffichageNoteDTO> AffichageNoteDTO = notes.Select(note => NoteToAffichageDTO(note, collaborateurs)); IEnumerable<AffichageNoteDTO> AffichageNoteDTO = notes.Select(note => transformDTO.NoteToAffichageDTO(note, collaborateurs));
if (texte != null) if (texte != null)
{ {
@ -274,77 +280,5 @@ namespace EPAServeur.Services
} }
#endregion #endregion
#region ObjectToDTO
/// <summary>
/// Transformer un objet note en objet pour afficher un note dans dans un tableau
/// </summary>
/// <param name="note">Note à transformer</param>
/// <param name="collaborateurService">Service collaborateur pour récupérer les informations des collaborateurs</param>
/// <returns>La note transformée pour être affichée</returns>
private AffichageNoteDTO NoteToAffichageDTO(Note note, IEnumerable<Collaborateur> 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;
}
/// <summary>
/// Transformatino d'une note en DetailsNoteDTO de manière asynchrone
/// </summary>
/// <param name="note">Note à transformer</param>
/// <returns>Note transformer en DetailsNoteDTO</returns>
private 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;
}
#endregion
#region DTOToObject
/// <summary>
/// Transformer l'objet DTO d'une note en note
/// </summary>
/// <remarks>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à</remarks>
/// <param name="detailsNoteDTO">Objet DTO à transformer en note</param>
/// <returns>L'objet DTO transformé en note</returns>
private 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;
}
#endregion
} }
} }

@ -28,6 +28,11 @@ namespace EPAServeur.Services
/// </summary> /// </summary>
private readonly ICollaborateurService collaborateurService; private readonly ICollaborateurService collaborateurService;
/// <summary>
/// Accès au service permettant de transformer un modèle en dto
/// </summary>
private readonly ITransformDTO transformDTO;
#endregion #endregion
#region Contructeurs #region Contructeurs
@ -36,10 +41,11 @@ namespace EPAServeur.Services
/// Constructeur de la classe FormationService /// Constructeur de la classe FormationService
/// </summary> /// </summary>
/// <param name="_epContext"></param> /// <param name="_epContext"></param>
public ParticipationFormationService(EpContext _epContext, ICollaborateurService _collaborateurService) public ParticipationFormationService(EpContext _epContext, ICollaborateurService _collaborateurService, ITransformDTO _transformDTO)
{ {
epContext = _epContext; epContext = _epContext;
collaborateurService = _collaborateurService; collaborateurService = _collaborateurService;
transformDTO = _transformDTO;
} }
#endregion #endregion
@ -63,7 +69,7 @@ namespace EPAServeur.Services
if (participationFormation == null) if (participationFormation == null)
throw new ParticipationFormationNotFoundException(string.Format("Aucune participation formation trouvée avec l'id suivant: {0}.", idParticipationFormation)); throw new ParticipationFormationNotFoundException(string.Format("Aucune participation formation trouvée avec l'id suivant: {0}.", idParticipationFormation));
return GetEvaluationDTO(participationFormation); return transformDTO.GetEvaluationDTO(participationFormation);
} }
/// <summary> /// <summary>
@ -87,9 +93,9 @@ namespace EPAServeur.Services
participationFormations = await query.ToListAsync(); participationFormations = await query.ToListAsync();
IEnumerable<CollaborateurDTO> collaborateurDTOs = await GetCollaborateurDTOs(participationFormations); IEnumerable<CollaborateurDTO> collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(participationFormations);
participationFormationDTOs = participationFormations.Select(participationFormation => GetParticipationFormationDTO(participationFormation, collaborateurDTOs)); participationFormationDTOs = participationFormations.Select(participationFormation => transformDTO.GetParticipationFormationDTO(participationFormation, collaborateurDTOs));
return participationFormationDTOs; return participationFormationDTOs;
} }
@ -116,12 +122,12 @@ namespace EPAServeur.Services
if (participationFormation == null) if (participationFormation == null)
throw new ParticipationFormationNotFoundException(string.Format("Aucune participation formation trouvée avec l'id suivant: {0}.", idParticipationFormation)); throw new ParticipationFormationNotFoundException(string.Format("Aucune participation formation trouvée avec l'id suivant: {0}.", idParticipationFormation));
participationFormation.Evaluation = evaluationDTO.Saisies.Select(s => GetSaisie(s)).ToList(); participationFormation.Evaluation = evaluationDTO.Saisies.Select(s => transformDTO.GetSaisie(s)).ToList();
participationFormation.EstEvaluee = true; participationFormation.EstEvaluee = true;
await epContext.SaveChangesAsync(); await epContext.SaveChangesAsync();
return GetEvaluationDTO(participationFormation); return transformDTO.GetEvaluationDTO(participationFormation);
} }
#endregion #endregion
@ -163,238 +169,6 @@ namespace EPAServeur.Services
throw new ParticipationFormationInvalidException("Toutes les saisies de type compétence ou notation doivent posséder une note."); throw new ParticipationFormationInvalidException("Toutes les saisies de type compétence ou notation doivent posséder une note.");
} }
#region Object to DTO
/// <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)
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)
};
return participationFormationDTO;
}
/// <summary>
/// Récuperer un objet EvaluationDTO en fonction d'un objet ParticipationFormation
/// </summary>
/// <param name="participationFormation"></param>
/// <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,
EstCertifiee = participationFormation.Formation.EstCertifiee,
Saisies = participationFormation.Evaluation.Select(s => GetSaisieDTO(s)).ToList()
};
return evaluationDTO;
}
/// <summary>
/// Récuperer un objet SaisieDTO en fonction d'un objet Saisie
/// </summary>
/// <param name="saisie"></param>
/// <returns></returns>
private 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;
}
/// <summary>
/// Récuperer un objet ChampDTO en fonction d'un objet Champ
/// </summary>
/// <param name="champ"></param>
/// <returns></returns>
private 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;
}
/// <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 une liste de CollaborateurDTO contenant les collaborateurs et les référents. Retourne null s'il n'y a aucune participation.
/// </summary>
/// <param name="participationsFormation"></param>
/// <returns></returns>
private async Task<IEnumerable<CollaborateurDTO>> GetCollaborateurDTOs(IEnumerable<ParticipationFormation> participationsFormation)
{
if (participationsFormation == null || !participationsFormation.Any())
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é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)
return null;
if (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)
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);
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>
/// Récuperer un objet Saisie en fonction d'un objet SaisieDTO
/// </summary>
/// <param name="saisieDTO"></param>
/// <returns></returns>
private 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;
}
/// <summary>
/// Récuperer un objet Champ en fonction d'un objet ChampDTO
/// </summary>
/// <param name="champDTO"></param>
/// <returns></returns>
private 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;
}
#endregion
#endregion #endregion
} }

Loading…
Cancel
Save