diff --git a/ldap-cesi/Controllers/ServicesController.cs b/ldap-cesi/Controllers/ServicesController.cs
index 8f2ec66..bc7aa95 100644
--- a/ldap-cesi/Controllers/ServicesController.cs
+++ b/ldap-cesi/Controllers/ServicesController.cs
@@ -37,6 +37,18 @@ public class ServicesController : ControllerBase
{
var result = await _serviceService.GetById(id);
return result.Success ? Ok(result.Data) : BadRequest(result.Message);
+ }
+
+ ///
+ /// Endpoint qui retourne le service et ses salariés correspondant à l'id en paramètre.
+ ///
+ /// L'ID du service.
+ /// Le service correspondant à l'ID, avec ses salariés
+ [HttpGet("complete/{id}")]
+ public async Task GetServiceByIdWithSalaries(int id)
+ {
+ var result = await _serviceService.GetByIdWithRelations(id, s=>s.Salaries);
+ return result.Success ? Ok(result.Data) : BadRequest(result.Message);
}
///
diff --git a/ldap-cesi/Controllers/SiteController.cs b/ldap-cesi/Controllers/SiteController.cs
index 50664dc..722ad3f 100644
--- a/ldap-cesi/Controllers/SiteController.cs
+++ b/ldap-cesi/Controllers/SiteController.cs
@@ -41,6 +41,19 @@ public class SiteController : ControllerBase
{
var result = await _siteService.GetById(id);
return result.Success ? Ok(result) : BadRequest(result);
+ }
+
+ // GET: api/site/{id}
+ ///
+ /// Récupère un site et ses salariés spécifique par son identifiant.
+ ///
+ /// L'identifiant du site à récupérer.
+ /// Retourne le site et ses salariés
+ [HttpGet("/complete/{id}")]
+ public async Task GetSiteWithClient(int id)
+ {
+ var result = await _siteService.GetByIdWithRelations(id, s => s.Salaries);
+ return result.Success ? Ok(result) : BadRequest(result);
}
// POST: api/site
diff --git a/ldap-cesi/DTOs/Generic/ServiceDto.cs b/ldap-cesi/DTOs/Generic/ServiceDto.cs
index f786ae4..61f567b 100644
--- a/ldap-cesi/DTOs/Generic/ServiceDto.cs
+++ b/ldap-cesi/DTOs/Generic/ServiceDto.cs
@@ -1,3 +1,5 @@
+using ldap_cesi.DTOs.Outputs.Salarie;
+
namespace ldap_cesi.DTOs;
public class ServiceDto
@@ -5,4 +7,5 @@ public class ServiceDto
public int Id { get; set; }
public string Nom { get; set; }
+ public List Salaries { get; set; }
}
\ No newline at end of file
diff --git a/ldap-cesi/DTOs/Generic/SiteDto.cs b/ldap-cesi/DTOs/Generic/SiteDto.cs
index 82fa364..535f886 100644
--- a/ldap-cesi/DTOs/Generic/SiteDto.cs
+++ b/ldap-cesi/DTOs/Generic/SiteDto.cs
@@ -1,3 +1,5 @@
+using ldap_cesi.DTOs.Outputs.Salarie;
+
namespace ldap_cesi.DTOs;
public class SiteDto
@@ -5,4 +7,5 @@ public class SiteDto
public int Id { get; set; }
public string Ville { get; set; }
+ public ICollection Salaries { get; set; }
}
\ No newline at end of file
diff --git a/ldap-cesi/DTOs/Outputs/Salarie/SalarieMinimalDto.cs b/ldap-cesi/DTOs/Outputs/Salarie/SalarieMinimalDto.cs
new file mode 100644
index 0000000..bf4be29
--- /dev/null
+++ b/ldap-cesi/DTOs/Outputs/Salarie/SalarieMinimalDto.cs
@@ -0,0 +1,17 @@
+namespace ldap_cesi.DTOs.Outputs.Salarie;
+
+public class SalarieMinimalDto
+{
+ public int Id { get; set; }
+
+ public string Nom { get; set; } = null!;
+
+ public string Prenom { get; set; } = null!;
+
+ public string TelephoneFixe { get; set; } = null!;
+
+ public string TelephonePortable { get; set; } = null!;
+
+ public string Email { get; set; } = null!;
+
+}
\ No newline at end of file
diff --git a/ldap-cesi/Mapper/AutoMapperProfile.cs b/ldap-cesi/Mapper/AutoMapperProfile.cs
index 9d159bf..bc500ef 100644
--- a/ldap-cesi/Mapper/AutoMapperProfile.cs
+++ b/ldap-cesi/Mapper/AutoMapperProfile.cs
@@ -35,8 +35,10 @@ public class AutoMapperProfile : Profile
.ForMember(dest => dest.Service, opt => opt.MapFrom(src => src.IdServiceNavigation))
.ForMember(dest => dest.Site, opt => opt.MapFrom(src => src.IdSiteNavigation));
CreateMap();
- CreateMap();
+ CreateMap()
+ .ForMember(dest => dest.Salaries, opt => opt.MapFrom(src => src.Salaries));
CreateMap();
+ CreateMap();
CreateMap()
.ForMember(dest => dest.Service, opt => opt.MapFrom(src => src.IdServiceNavigation.Nom))
.ForMember(dest => dest.Site, opt => opt.MapFrom(src => src.IdSiteNavigation.Ville));
diff --git a/ldap-cesi/Services/Interfaces/ISiteService.cs b/ldap-cesi/Services/Interfaces/ISiteService.cs
index cdff833..521892e 100644
--- a/ldap-cesi/Services/Interfaces/ISiteService.cs
+++ b/ldap-cesi/Services/Interfaces/ISiteService.cs
@@ -1,11 +1,11 @@
-using ldap_cesi.DTOs.Inputs.Service;
+using ldap_cesi.DTOs;
using ldap_cesi.DTOs.Inputs.Site;
using ldap_cesi.Entities;
using ldap_cesi.Models;
namespace ldap_cesi.Services.Interfaces;
-public interface ISiteService
+public interface ISiteService : IServiceBase
{
Task>> GetAll();
Task> GetById(int id);
diff --git a/ldap-cesi/Services/SiteService.cs b/ldap-cesi/Services/SiteService.cs
index 5d5628d..4bf5e51 100644
--- a/ldap-cesi/Services/SiteService.cs
+++ b/ldap-cesi/Services/SiteService.cs
@@ -1,4 +1,5 @@
using AutoMapper;
+using ldap_cesi.DTOs;
using ldap_cesi.DTOs.Inputs.Site;
using ldap_cesi.Entities;
using ldap_cesi.Models;
@@ -8,16 +9,16 @@ using ldap_cesi.Validator.Site;
namespace ldap_cesi.Services;
-public class SiteService : ISiteService
+public class SiteService : ServiceBase, ISiteService
{
private readonly IRepositorySite _repositorySite;
- private readonly IMapper _mapper;
- public SiteService(IRepositorySite repositorySite, IMapper mapper)
+ public SiteService(IRepositorySite repositorySite, IMapper mapper,
+ ILogger logger, SiteCreateValidator siteCreateValidator, SiteUpdateValidator siteUpdateValidator)
+ : base(repositorySite, mapper, logger, siteCreateValidator, siteUpdateValidator )
{
_repositorySite = repositorySite;
- _mapper = mapper;
}
public async Task>> GetAll()