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()