|
|
|
@ -57,182 +57,6 @@ namespace EPAServeur.Services |
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Services Sync |
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer un collaborateur en fonction d'un id |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="id">Identifiant du collaborateur à renvoyer</param> |
|
|
|
|
/// <returns>Le collaborateur corresponant à l'id en paramètre</returns> |
|
|
|
|
public CollaborateurDTO GetCollaborateurById(Guid? id) |
|
|
|
|
{ |
|
|
|
|
Collaborateur collaborateur = collaborateurApi.ChercherCollabId(id); |
|
|
|
|
if (collaborateur == null) |
|
|
|
|
throw new CollaborateurNotFoundException("Le collaborateur recherché n'a pas été trouvé"); |
|
|
|
|
return GetCollaborateurDTO(collaborateur, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer un collaborateur en fonction d'un mail |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="mail">Mail du collaborateur à renvoyer</param> |
|
|
|
|
/// <returns>Le collaborateur correspondant au mail en paramètre</returns> |
|
|
|
|
public CollaborateurDTO GetCollaborateurByMail(string mail) |
|
|
|
|
{ |
|
|
|
|
Collaborateur collaborateur = collaborateurApi.ChercherCollabMail(mail); |
|
|
|
|
if (collaborateur == null) |
|
|
|
|
throw new CollaborateurNotFoundException("Le collaborateur recherché n'a pas été trouvé"); |
|
|
|
|
return GetCollaborateurDTO(collaborateur, true); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer la liste de tous les collaborateurs |
|
|
|
|
/// </summary> |
|
|
|
|
/// |
|
|
|
|
/// <param name="roles">Liste des rôles auxquels les collaborateurs à récupérer appartiennent</param> |
|
|
|
|
/// <param name="idBUs">Liste des business units auxquelles sont rattachés les collaborateurs à récupérer</param> |
|
|
|
|
/// <param name="asc">Précise si la liste est trié dans l'ordre croissant ou décroissant</param> |
|
|
|
|
/// <param name="numPage">Numéro de la page qui est affiché du côté front</param> |
|
|
|
|
/// <param name="parPage">Nombre de collaborateurs à renvoyer</param> |
|
|
|
|
/// <param name="idAgence">id de l'agence à laquelle appartient les collaborateurs à récupérer</param> |
|
|
|
|
/// <param name="idBU"></param> |
|
|
|
|
/// <param name="texte">permet de récupérer les collaborateurs dont le nom + prénom ou le prénom + nom contient le texte</param> |
|
|
|
|
/// <param name="tri">Choisir l'attribut par lequel est trié la liste</param> |
|
|
|
|
/// <param name="dateDebut">Date à partir de laquelle les collaborateurs sont arrivés</param> |
|
|
|
|
/// <param name="dateFin">Date jusqu'à laquelle les collaborateurs sont arrivés</param> |
|
|
|
|
/// <returns>Renvoie la liste des collaborateurs en fonction des paramètres</returns> |
|
|
|
|
public IEnumerable<CollaborateurDTO> GetCollaborateurs(List<string> roles, List<long?> idBUs, bool? asc, int? numPage, int? parPage, string texte, string tri, DateTime? dateDebut, DateTime? dateFin) |
|
|
|
|
{ |
|
|
|
|
|
|
|
|
|
IEnumerable<Collaborateur> collaborateurs; |
|
|
|
|
IEnumerable<CollaborateurDTO> collaborateursDTO; |
|
|
|
|
|
|
|
|
|
collaborateurs = collaborateurApi.ChercherCollab(ancienCollaborateur: false, roles: roles, buIds: idBUs); |
|
|
|
|
collaborateursDTO = from c in collaborateurs |
|
|
|
|
select GetCollaborateurDTO(c, true); |
|
|
|
|
|
|
|
|
|
if (parPage.Value < minParPage || parPage.Value > maxParPage) |
|
|
|
|
parPage = defaultParPage; |
|
|
|
|
if (numPage.Value <= 0) |
|
|
|
|
numPage = 1; |
|
|
|
|
|
|
|
|
|
int skip = (numPage.Value - 1) * parPage.Value; |
|
|
|
|
int take = parPage.Value; |
|
|
|
|
if (texte != null) |
|
|
|
|
collaborateursDTO = TriTexte(collaborateursDTO, texte.ToLower()); |
|
|
|
|
|
|
|
|
|
//collaborateursDTO = TriAttribut(collaborateursDTO, tri, asc.Value); |
|
|
|
|
|
|
|
|
|
collaborateursDTO = TriDates(collaborateursDTO, dateDebut, dateFin); |
|
|
|
|
|
|
|
|
|
return collaborateursDTO.Skip(skip).Take(take); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer le nombre de collaborateurs correspondant aux paramètres de la requête |
|
|
|
|
/// </summary> |
|
|
|
|
/// |
|
|
|
|
/// <param name="roles">Liste des rôles auxquels les collaborateurs à récupérer appartiennent</param> |
|
|
|
|
/// <param name="idBUs">Liste des business units auxquelles sont rattachés les collaborateurs à récupérer</param> |
|
|
|
|
/// <param name="texte">permet de récupérer les collaborateurs dont le nom + prénom ou le prénom + nom contient le texte</param> |
|
|
|
|
/// <param name="dateDebut">Date à partir de laquelle les collaborateurs sont arrivés</param> |
|
|
|
|
/// <param name="dateFin">Date jusqu'à laquelle les collaborateurs sont arrivés</param> |
|
|
|
|
/// <returns>Renvoie la liste des collaborateurs en fonction des paramètres</returns> |
|
|
|
|
/// <returns>Le nombre de collaborateur</returns> |
|
|
|
|
public int GetCollaborateursCount(List<string> roles, List<long?> idBUs, string texte, DateTime? dateDebut, DateTime? dateFin) |
|
|
|
|
{ |
|
|
|
|
IEnumerable<Collaborateur> collaborateurs; |
|
|
|
|
IEnumerable<CollaborateurDTO> collaborateursDTO; |
|
|
|
|
|
|
|
|
|
collaborateurs = collaborateurApi.ChercherCollab(ancienCollaborateur: false, roles: roles, buIds: idBUs); |
|
|
|
|
collaborateursDTO = from c in collaborateurs |
|
|
|
|
select GetCollaborateurDTO(c, false); |
|
|
|
|
|
|
|
|
|
if (texte != null) |
|
|
|
|
collaborateursDTO = TriTexte(collaborateursDTO, texte.ToLower()); |
|
|
|
|
|
|
|
|
|
collaborateursDTO = TriDates(collaborateursDTO, dateDebut, dateFin); |
|
|
|
|
|
|
|
|
|
return collaborateursDTO.Count(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer les collaborateurs d'un référent |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idReferent">id du référent des collaborateurs à récupérer</param> |
|
|
|
|
/// <param name="asc">Précise si la liste est trié dans l'ordre croissant ou décroissant</param> |
|
|
|
|
/// <param name="numPage">Numéro de la page qui est affiché du côté front</param> |
|
|
|
|
/// <param name="parPage">Nombre de collaborateurs à renvoyer</param> |
|
|
|
|
/// <param name="texte">permet de récupérer les collaborateurs dont le nom + prénom ou le prénom + nom contient le texte</param> |
|
|
|
|
/// <param name="tri">Choisir l'attribut par lequel est trié la liste</param> |
|
|
|
|
/// <returns>Renvoyer les collaborateurs du référent dont l'id est passé en paramètre</returns> |
|
|
|
|
public IEnumerable<CollaborateurDTO> GetCollaborateursByReferent(Guid? idReferent, bool? asc, int? numPage, int? parPage, string texte, string tri) |
|
|
|
|
{ |
|
|
|
|
/* |
|
|
|
|
Stopwatch stopwatch = new Stopwatch(); |
|
|
|
|
stopwatch.Start(); |
|
|
|
|
stopwatch.Stop(); |
|
|
|
|
Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds); |
|
|
|
|
stopwatch.Restart(); |
|
|
|
|
stopwatch.Stop(); |
|
|
|
|
Console.WriteLine("Durée d'exécution numéro 1: {0}", stopwatch.Elapsed.TotalSeconds); |
|
|
|
|
*/ |
|
|
|
|
Collaborateur referent = collaborateurApi.ChercherCollabId(idReferent); |
|
|
|
|
if (referent == null) |
|
|
|
|
throw new ReferentNotFoundException("Le référent recherché n'a pas été trouvé"); |
|
|
|
|
|
|
|
|
|
List<Guid?> collaborateursIds = (from referentEP in context.ReferentEP |
|
|
|
|
where referentEP.IdReferent.Value.Equals(idReferent) |
|
|
|
|
select (Guid?)referentEP.IdCollaborateur).ToList(); |
|
|
|
|
IEnumerable<Collaborateur> collaborateurs = collaborateurApi.ChercherCollab(collabsId: collaborateursIds); |
|
|
|
|
|
|
|
|
|
int skip = (numPage.Value - 1) * parPage.Value; |
|
|
|
|
int take = parPage.Value; |
|
|
|
|
IEnumerable<CollaborateurDTO> collaborateursDTO = from c in collaborateurs |
|
|
|
|
select GetCollaborateurDTO(c, false); |
|
|
|
|
if (texte != null) |
|
|
|
|
collaborateursDTO = TriTexte(collaborateursDTO, texte.ToLower()); |
|
|
|
|
collaborateursDTO = TriAttribut(collaborateursDTO, tri, asc.Value); |
|
|
|
|
return collaborateursDTO.Skip(skip).Take(take); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer le nombre de collaborateurs d'un référent en fonction des paramètres |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idReferent">id du référent des collaborateurs à récupérer</param> |
|
|
|
|
/// <param name="texte">permet de récupérer les collaborateurs dont le nom + prénom ou le prénom + nom contient le texte</param> |
|
|
|
|
/// <returns>Renvoyer le nombre collaborateurs du référent en fonction des paramètres</returns> |
|
|
|
|
public int GetCollaborateursCountByReferent(Guid? idReferent, string texte) |
|
|
|
|
{ |
|
|
|
|
Collaborateur referent = collaborateurApi.ChercherCollabId(idReferent); |
|
|
|
|
if (referent == null) |
|
|
|
|
throw new ReferentNotFoundException("Le référent recherché n'a pas été trouvé"); |
|
|
|
|
|
|
|
|
|
List<Guid?> collaborateursIds = (from referentEP in context.ReferentEP |
|
|
|
|
where referentEP.IdReferent.Value.Equals(idReferent) |
|
|
|
|
select (Guid?)referentEP.IdCollaborateur).ToList(); |
|
|
|
|
IEnumerable<Collaborateur> collaborateurs = collaborateurApi.ChercherCollab(collabsId: collaborateursIds); |
|
|
|
|
|
|
|
|
|
IEnumerable<CollaborateurDTO> collaborateursDTO = from c in collaborateurs |
|
|
|
|
select GetCollaborateurDTO(c, false); |
|
|
|
|
if (texte != null) |
|
|
|
|
collaborateursDTO = TriTexte(collaborateursDTO, texte.ToLower()); |
|
|
|
|
return collaborateursDTO.Count(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer la liste référents ayant fait passer des EP au collaborateur |
|
|
|
|
/// </summary> |
|
|
|
|
/// <param name="idCollaborateur">id du collaborateur concerné</param> |
|
|
|
|
/// <returns>Liste des référents</returns> |
|
|
|
|
public IEnumerable<CollaborateurDTO> GetReferentsPrecedentsEP(Guid? idCollaborateur) |
|
|
|
|
{ |
|
|
|
|
throw new NotImplementedException(); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#endregion |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
#region Services Async |
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer un collaborateur en fonction d'un id de manière asynchrone |
|
|
|
@ -283,8 +107,11 @@ namespace EPAServeur.Services |
|
|
|
|
IEnumerable<CollaborateurDTO> collaborateursDTO; |
|
|
|
|
|
|
|
|
|
collaborateurs = await collaborateurApi.ChercherCollabAsync(ancienCollaborateur: false, roles: roles, buIds: idBUs); |
|
|
|
|
collaborateursDTO = (from c in collaborateurs |
|
|
|
|
select GetCollaborateurDTO(c, false)); |
|
|
|
|
/*collaborateursDTO = (from c in collaborateurs |
|
|
|
|
select GetCollaborateurDTO(c, false));*/ |
|
|
|
|
|
|
|
|
|
var task = collaborateurs.Select(c => GetCollaborateurDTOAsync(c, true)); |
|
|
|
|
collaborateursDTO = await Task.WhenAll(task); |
|
|
|
|
|
|
|
|
|
if (parPage.Value < minParPage || parPage.Value > maxParPage) |
|
|
|
|
parPage = defaultParPage; |
|
|
|
@ -379,10 +206,7 @@ namespace EPAServeur.Services |
|
|
|
|
where r.IdReferent.Value.Equals(idReferent) |
|
|
|
|
select (Guid?)r.IdCollaborateur).ToList(); |
|
|
|
|
IEnumerable<Collaborateur> collaborateurs = await collaborateurApi.ChercherCollabAsync(collabsId: collaborateursIds); |
|
|
|
|
/*IEnumerable<CollaborateurDTO> collaborateursDTO = (from c in collaborateurs |
|
|
|
|
where (c.Nom + " " + c.Prenom).ToLower().Contains(texte) || (c.Prenom + " " + c.Nom).ToLower().Contains(texte) |
|
|
|
|
select GetCollaborateurDTO(c)).Skip(skip).Take(take); |
|
|
|
|
*/ |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
var tasks = collaborateurs.Select(c => GetCollaborateurDTOAsync(c, false)); |
|
|
|
|
IEnumerable<CollaborateurDTO> collaborateursDTO = await Task.WhenAll(tasks); |
|
|
|
@ -509,29 +333,6 @@ namespace EPAServeur.Services |
|
|
|
|
return businessUnitDTO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Transforme un collaborateur en collaborateurDTO |
|
|
|
|
/// </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 CollaborateurDTO GetCollaborateurDTO(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 = GetReferent(collaborateurDTO); |
|
|
|
|
return collaborateurDTO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Transforme un collaborateur en collaborateurDTO de manière asynchrone |
|
|
|
@ -557,23 +358,7 @@ namespace EPAServeur.Services |
|
|
|
|
return collaborateurDTO; |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer le référent EP d'un collaborateur 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 CollaborateurDTO GetReferent(CollaborateurDTO collaborateur) |
|
|
|
|
{ |
|
|
|
|
ReferentEP referentEP = context.ReferentEP.Find(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 = collaborateurApi.ChercherCollabId(referentEP.IdReferent); |
|
|
|
|
if (referent == null) |
|
|
|
|
return null; |
|
|
|
|
//throw new ReferentNotFoundException("Le référent EP recherché n'a pas été trouvé"); |
|
|
|
|
return GetCollaborateurDTO(referent, false); |
|
|
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
/// <summary> |
|
|
|
|
/// Récupérer le référent EP d'un collaborateur de manière asynchrone si il existe |
|
|
|
@ -589,7 +374,7 @@ namespace EPAServeur.Services |
|
|
|
|
Collaborateur referent = await collaborateurApi.ChercherCollabIdAsync(referentEP.IdReferent); |
|
|
|
|
if (referent == null) |
|
|
|
|
return null; |
|
|
|
|
return GetCollaborateurDTO(referent, false); |
|
|
|
|
return await GetCollaborateurDTOAsync(referent, false); |
|
|
|
|
} |
|
|
|
|
#endregion |
|
|
|
|
} |
|
|
|
|