diff --git a/Controllers/ReferentsApi.cs b/Controllers/ReferentsApi.cs
index f4adbb0..af8dc61 100644
--- a/Controllers/ReferentsApi.cs
+++ b/Controllers/ReferentsApi.cs
@@ -11,53 +11,90 @@ using System;
using System.Collections.Generic;
using Microsoft.AspNetCore.Mvc;
using Swashbuckle.AspNetCore.Annotations;
-using Swashbuckle.AspNetCore.SwaggerGen;
using Newtonsoft.Json;
using System.ComponentModel.DataAnnotations;
using IO.Swagger.Attributes;
-using IO.Swagger.Security;
-using Microsoft.AspNetCore.Authorization;
using IO.Swagger.DTO;
+using EPAServeur.IServices;
+using System.Net;
+using Microsoft.AspNetCore.Authorization;
+using IO.Swagger.Security;
+using System.Linq;
namespace IO.Swagger.Controllers
-{
+{
///
///
///
[ApiController]
public class ReferentsApiController : ControllerBase
- {
+ {
+ private readonly IReferentService referentService;
+
+ public ReferentsApiController(IReferentService _referentService)
+ {
+ referentService = _referentService;
+ }
+
///
///
///
- /// Récupérer la liste des référents d'un collaborateur
+ /// Récupérer un referent par son id
+ /// id referent
+ /// OK
+ /// Acces interdit
+ /// Ressource n'a pas été trouvée
+ [HttpGet]
+ [Route("/api/referents/{idReferent}")]
+ ////[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
+ [ValidateModelState]
+ [SwaggerOperation("GetReferentById")]
+ [SwaggerResponse(statusCode: 200, type: typeof(ReferentDTO), description: "OK")]
+ [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
+ [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
+ public virtual IActionResult GetReferentById([FromRoute][Required]Guid? idReferent)
+ {
+ ReferentDTO referentDTO = referentService.GetReferentById(idReferent);
+ if (referentDTO == null)
+ {
+ ErreurDTO erreurDTO = new ErreurDTO()
+ {
+ Code = "404",
+ Message = "Le référent n'existe pas",
+ };
+ return NotFound(erreurDTO);
+ }
+ return Ok(referentDTO);
+ }
+
+ ///
+ ///
+ ///
+ /// Récupérer la liste de tous les referents
/// Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false)
- /// id collaborateur
/// Numéro de la page du tableau qui affiche les données
/// Nombre d'éléments affiché sur chaque page du tableau
+ /// Liste des fonctions des collaborateurs que l'on veut récupérer
+ /// id de l'agence à laquelle sont rattachées les données à récupérer
+ /// id de la business unit à laquelle sont rattachées les données à récupérer
/// Texte permettant d'identifier l'objet rechercher
/// Colonne du tableau sur lequel le tri s'effectue
/// OK
/// Acces interdit
- /// Ressource n'a pas été trouvée
[HttpGet]
- [Route("/api/referents/collaborateur/{idCollaborateur}")]
- [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
+ [Route("/api/referents")]
+ //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
[ValidateModelState]
- [SwaggerOperation("GetReferentByCollaborateur")]
+ [SwaggerOperation("GetReferents")]
[SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
- [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
- public virtual IActionResult GetReferentByCollaborateur([FromQuery][Required()]bool? asc, [FromRoute][Required]Guid? idCollaborateur, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]string texte, [FromQuery]string tri)
+ public virtual IActionResult GetReferents([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]List fonctions, [FromQuery]long? idAgence, [FromQuery]long? idBU, [FromQuery]string texte, [FromQuery]string tri)
{
//TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(200, default(List));
//TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
// return StatusCode(403, default(ErreurDTO));
-
- //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
- // return StatusCode(404, default(ErreurDTO));
string exampleJson = null;
exampleJson = "[ {\n \"mailApside\" : \"\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\",\n \"collaborateurs\" : [ null, null ]\n}, {\n \"mailApside\" : \"\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\",\n \"collaborateurs\" : [ null, null ]\n} ]";
@@ -70,73 +107,68 @@ namespace IO.Swagger.Controllers
///
///
///
- /// Récupérer un referent par son id
- /// id referent
+ /// Récupérer le référent actuel d'un collaborateur
+ /// id collaborateur
/// OK
/// Acces interdit
/// Ressource n'a pas été trouvée
[HttpGet]
- [Route("/api/referents/{idReferent}")]
- [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
+ [Route("/api/referents/actuel/collaborateur/{idCollaborateur}")]
+ //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
[ValidateModelState]
- [SwaggerOperation("GetReferentById")]
+ [SwaggerOperation("GetReferentActuelCollaborateur")]
[SwaggerResponse(statusCode: 200, type: typeof(ReferentDTO), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
[SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
- public virtual IActionResult GetReferentById([FromRoute][Required]Guid? idReferent)
- {
- //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
- // return StatusCode(200, default(ReferentDTO));
-
- //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
- // return StatusCode(403, default(ErreurDTO));
-
- //TODO: Uncomment the next line to return response 404 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
- // return StatusCode(404, default(ErreurDTO));
- string exampleJson = null;
- exampleJson = "{\n \"mailApside\" : \"\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\",\n \"collaborateurs\" : [ null, null ]\n}";
-
- var example = exampleJson != null
- ? JsonConvert.DeserializeObject(exampleJson)
- : default(ReferentDTO); //TODO: Change the data returned
- return new ObjectResult(example);
+ public virtual IActionResult GetReferentActuelCollaborateur([FromRoute][Required] Guid? idCollaborateur)
+ {
+ ReferentDTO referentDTO = referentService.GetReferentActuelCollaborateur(idCollaborateur);
+ if (referentDTO == null)
+ {
+ ErreurDTO erreurDTO = new ErreurDTO()
+ {
+ Code = "404",
+ Message = "Aucun référent pour le collaborateur",
+ };
+ return NotFound(erreurDTO);
+ }
+ return Ok(referentDTO);
}
///
///
///
- /// Récupérer la liste de tous les referents
+ /// Récupérer la liste des référents d'un collaborateur
/// Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false)
+ /// id collaborateur
/// Numéro de la page du tableau qui affiche les données
/// Nombre d'éléments affiché sur chaque page du tableau
- /// Liste des fonctions des collaborateurs que l'on veut récupérer
- /// id de l'agence à laquelle sont rattachées les données à récupérer
- /// id de la business unit à laquelle sont rattachées les données à récupérer
/// Texte permettant d'identifier l'objet rechercher
/// Colonne du tableau sur lequel le tri s'effectue
/// OK
/// Acces interdit
+ /// Ressource n'a pas été trouvée
[HttpGet]
- [Route("/api/referents")]
- [Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
+ [Route("/api/referents/collaborateur/{idCollaborateur}")]
+ //[Authorize(AuthenticationSchemes = BearerAuthenticationHandler.SchemeName)]
[ValidateModelState]
- [SwaggerOperation("GetReferents")]
+ [SwaggerOperation("GetReferentByCollaborateur")]
[SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")]
[SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")]
- public virtual IActionResult GetReferents([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]List fonctions, [FromQuery]long? idAgence, [FromQuery]long? idBU, [FromQuery]string texte, [FromQuery]string tri)
- {
- //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
- // return StatusCode(200, default(List));
-
- //TODO: Uncomment the next line to return response 403 or use other options such as return this.NotFound(), return this.BadRequest(..), ...
- // return StatusCode(403, default(ErreurDTO));
- string exampleJson = null;
- exampleJson = "[ {\n \"mailApside\" : \"\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\",\n \"collaborateurs\" : [ null, null ]\n}, {\n \"mailApside\" : \"\",\n \"id\" : \"046b6c7f-0b8a-43b9-b35d-6489e6daee91\",\n \"nom\" : \"nom\",\n \"prenom\" : \"prenom\",\n \"collaborateurs\" : [ null, null ]\n} ]";
-
- var example = exampleJson != null
- ? JsonConvert.DeserializeObject>(exampleJson)
- : default(List); //TODO: Change the data returned
- return new ObjectResult(example);
+ [SwaggerResponse(statusCode: 404, type: typeof(ErreurDTO), description: "Ressource n'a pas été trouvée")]
+ public virtual IActionResult GetReferentsByCollaborateur([FromQuery][Required()] bool? asc, [FromRoute][Required] Guid? idCollaborateur, [FromQuery][Required()] int? numPage, [FromQuery][Required()] int? parPAge, [FromQuery] string texte, [FromQuery] string tri)
+ {
+ IEnumerable referentDTO = referentService.GetReferentsByCollaborateur(asc,idCollaborateur,numPage,parPAge,texte,tri);
+ if (referentDTO.Count() == 0)
+ {
+ ErreurDTO erreurDTO = new ErreurDTO()
+ {
+ Code = "404",
+ Message = "Aucun référent pour le collaborateur",
+ };
+ return NotFound(erreurDTO);
+ }
+ return Ok(referentDTO);
}
}
}
diff --git a/IServices/IReferentService.cs b/IServices/IReferentService.cs
new file mode 100644
index 0000000..fe24257
--- /dev/null
+++ b/IServices/IReferentService.cs
@@ -0,0 +1,20 @@
+using EPAServeur.Context;
+using IO.Swagger.DTO;
+using IO.Swagger.ModelCollaborateur;
+using System;
+using System.Collections.Generic;
+using System.Linq;
+using System.Threading.Tasks;
+
+namespace EPAServeur.IServices
+{
+ public interface IReferentService
+ {
+ ReferentDTO GetReferentById(Guid? id);
+ ReferentDTO GetReferentActuelCollaborateur(Guid? idCollaborateur);
+ IEnumerable GetReferents(bool? asc, int? numPage, int? parPAge, List fonctions, long? idAgence, long? idBU, string texte, string tri);
+
+ IEnumerable GetReferentsByCollaborateur(bool? asc, Guid? idCollaborateur, int? numPage, int? parPAge, string texte, string tri);
+
+ }
+}
diff --git a/Services/ReferentService.cs b/Services/ReferentService.cs
new file mode 100644
index 0000000..68b9892
--- /dev/null
+++ b/Services/ReferentService.cs
@@ -0,0 +1,253 @@
+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
+
+
+
+
+ }
+}
diff --git a/Startup.cs b/Startup.cs
index 7290f43..28e0eea 100644
--- a/Startup.cs
+++ b/Startup.cs
@@ -58,6 +58,7 @@ namespace EPAServeur
services.AddScoped();
services.AddScoped();
services.AddScoped();
+ services.AddScoped();
}