using EPAServeur.IServices; using IO.Swagger.ApiCollaborateur; using IO.Swagger.DTO; using IO.Swagger.ModelCollaborateur; using System; using System.Collections.Generic; using System.Linq; namespace EPAServeur.Services { public class ReferentService : IReferentService { #region Variables private readonly IReferentApi referentApi; #endregion #region Contructeurs public ReferentService(IReferentApi _referentApi) { referentApi = _referentApi; } #endregion #region Méthodes Service /// /// Récupère un référent par son id /// /// /// public ReferentDTO GetReferentById(Guid? id) { Referent referent = referentApi.ChercherRefId(id); if (referent == null) return null; return GetReferentDTO(referent); } /// /// Récupère un référent en fonction d'un collaborateur /// /// /// public ReferentDTO GetReferentActuelCollaborateur(Guid? idCollaborateur) { Referent referent = referentApi.ChercherRefActuelCollabId(idCollaborateur); if (referent == null) return null; return GetReferentDTO(referent); } /// /// Récupère la liste des référents pour une agence /// /// /// /// /// /// /// /// /// /// public IEnumerable GetReferents(bool? asc, int? numPage, int? parPAge, List fonctions, long? idAgence, long? idBU, string texte, string tri) { IEnumerable referents = null ; // A changer IEnumerable referentDTOs = null; // A changer if (texte == null) texte = ""; else texte = texte.ToLower(); int skip = (numPage.Value - 1) * parPAge.Value; int take = parPAge.Value; if (idBU != null) { } else { } if (idAgence != null) { try { } catch (Exception ex) { throw; } } else { try { } catch (Exception ex) { throw; } } if (referents == null) return new List(); referentDTOs = referents.Where(referent => (referent.Nom + " " + referent.Prenom).ToLower().Contains(texte) || (referent.Prenom + " " + referent.Nom).ToLower().Contains(texte)).Select(referent => GetReferentDTO(referent)); return referentDTOs; } /// /// Récupère la liste des référents pour un collaborateur /// /// /// /// /// /// /// /// public IEnumerable GetReferentsByCollaborateur(bool? asc, Guid? idCollaborateur, int? numPage, int? parPAge, string texte, string tri) { IEnumerable referents; IEnumerable referentDTOs; if (texte == null) texte = ""; else texte = texte.ToLower(); int skip = (numPage.Value - 1) * parPAge.Value; int take = parPAge.Value; if (idCollaborateur == null) return new List(); referents = referentApi.ChercherRefCollabId(idCollaborateur); referentDTOs = referents.Where(referent => (referent.Nom + " " + referent.Prenom).ToLower().Contains(texte) || (referent.Prenom + " " + referent.Nom).ToLower().Contains(texte)).Select(referent => GetReferentDTO(referent)); return referentDTOs; } #endregion #region Méthodes Privées #region Object to DTO /// /// Récupère un objet AgenceDTO en fonction d'un objet Agence /// /// /// private 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; } /// /// Récupère un objet BusinessUnitDTO en fonction d'un objet BU /// /// /// 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; } /// /// Récupère un objet CollaborateurDTO en fonction d'un objet Collaborateur /// /// /// private CollaborateurDTO GetCollaborateurDTO(Collaborateur collaborateur) { CollaborateurDTO collaborateurDTO = new CollaborateurDTO() { Id = collaborateur.Id, Prenom = collaborateur.Prenom, Nom = collaborateur.Nom, MailApside = collaborateur.MailApside, DateArrivee = collaborateur.DateArrivee, }; collaborateurDTO.BusinessUnit = GetBusinessUnitDTO(collaborateur.BusinessUnit); collaborateurDTO.Referent = GetReferentDTO(collaborateur.Referent); return collaborateurDTO; } /// /// Récupère un objet ReferentDTO en fonction d'un objet Referent /// /// /// private ReferentDTO GetReferentDTO(Referent referent) { if (referent == null) return null; ReferentDTO referentDTO = new ReferentDTO() { Id = referent.Id, Prenom = referent.Prenom, Nom = referent.Nom, MailApside = referent.MailApside }; return referentDTO; } #endregion #region DTO to Object #endregion #endregion } }