diff --git a/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/AgenceController.cs b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/AgencesController.cs similarity index 100% rename from Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/AgenceController.cs rename to Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/AgencesController.cs diff --git a/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/BusinessUnitsController.cs b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/BusinessUnitsController.cs new file mode 100644 index 0000000..60fa49b --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/BusinessUnitsController.cs @@ -0,0 +1,28 @@ +using espacecollab.backend.appservices; +using espacecollab.backend.appservices.dtos; +using Microsoft.AspNetCore.Mvc; + +namespace espacecollab.backend.api.Controllers +{ + //[Route("api/[controller]")] + //[ApiController] + public class BusinessUnitsController : BaseController + { + private BusinessUnitServices BusinessUnitServices { get; } + + public BusinessUnitsController(BusinessUnitServices businessUnitServices) : base(businessUnitServices) + { + BusinessUnitServices = businessUnitServices; + } + + [HttpGet("agence/{agenceId:int:min(1)}")] + public ActionResult> GetBusinessUnitsByAgence(uint agenceId) + { + IEnumerable businessUnits = BusinessUnitServices.GetBusinessUnitsByAgence(agenceId); + if (!businessUnits.Any()) + return NotFound(); + + return Ok(businessUnits); + } + } +} diff --git a/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/FonctionsController.cs b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/FonctionsController.cs new file mode 100644 index 0000000..431862a --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/FonctionsController.cs @@ -0,0 +1,12 @@ +using espacecollab.backend.appservices; +using espacecollab.backend.appservices.dtos; + +namespace espacecollab.backend.api.Controllers +{ + public class FonctionsController : BaseController + { + public FonctionsController(FonctionServices fonctionService) : base(fonctionService) + { + } + } +} diff --git a/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/TechnologiesController.cs b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/TechnologiesController.cs new file mode 100644 index 0000000..cfd482e --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/TechnologiesController.cs @@ -0,0 +1,12 @@ +using espacecollab.backend.appservices; +using espacecollab.backend.appservices.dtos; + +namespace espacecollab.backend.api.Controllers +{ + public class TechnologiesController : BaseController + { + public TechnologiesController(TechnologieServices technologieServices) : base(technologieServices) + { + } + } +} diff --git a/Collaborateur_Epa_Back/espacecollab.backend.api/Register.cs b/Collaborateur_Epa_Back/espacecollab.backend.api/Register.cs index 22b1458..088cd8e 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.api/Register.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.api/Register.cs @@ -33,6 +33,7 @@ internal static class Register services.AddScoped(); services.AddScoped(); services.AddScoped(); + services.AddScoped(); services.AddScoped(); } } diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/FonctionApiDto.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/FonctionApiDto.cs index 06f0e76..a839b9e 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/FonctionApiDto.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/FonctionApiDto.cs @@ -2,7 +2,7 @@ namespace espacecollab.backend.appservices.dtos; -public record FonctionApiDto(uint Id, string Name) : IGenericIdApiDto +public record FonctionApiDto(uint Id, string Intitule) : IGenericIdApiDto { public uint Id { get; set; } = Id; } \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/FonctionMapper.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/FonctionMapper.cs index 88fe1e5..1084d60 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/FonctionMapper.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/FonctionMapper.cs @@ -6,10 +6,10 @@ public static class FonctionMapper { public static FonctionApiDto ToApi(this FonctionSqlDto fonctionSqlDto) { - return new FonctionApiDto((uint)fonctionSqlDto.Id, fonctionSqlDto.Name); + return new FonctionApiDto((uint)fonctionSqlDto.Id, fonctionSqlDto.Intitule); } public static FonctionSqlDto ToSql(this FonctionApiDto fonctionApiDto) { - return new FonctionSqlDto((int)fonctionApiDto.Id, fonctionApiDto.Name); + return new FonctionSqlDto((int)fonctionApiDto.Id, fonctionApiDto.Intitule); } } \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/TechnologieMapper.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/TechnologieMapper.cs new file mode 100644 index 0000000..333fbdf --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/TechnologieMapper.cs @@ -0,0 +1,15 @@ +using espacecollab.backend.infrastructure.sql.dtos; + +namespace espacecollab.backend.appservices.dtos.Mappers; + +public static class TechnologieMapper +{ + public static TechnologieApiDto ToApi(this TechnologieSqlDto technologieSqlDto) + { + return new TechnologieApiDto((uint)technologieSqlDto.Id, technologieSqlDto.Name); + } + public static TechnologieSqlDto ToSql(this TechnologieApiDto technologieApiDto) + { + return new TechnologieSqlDto((int)technologieApiDto.Id, technologieApiDto.Name); + } +} \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/TechnologieApiDto.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/TechnologieApiDto.cs new file mode 100644 index 0000000..812cfe2 --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/TechnologieApiDto.cs @@ -0,0 +1,8 @@ +using espacecollab.backend.appservices.dtos.Interfaces; + +namespace espacecollab.backend.appservices.dtos; + +public record TechnologieApiDto(uint Id, string Name) : IGenericIdApiDto +{ + public uint Id { get; set; } = Id; +} \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices/AgenceService.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices/AgenceServices.cs similarity index 84% rename from Collaborateur_Epa_Back/espacecollab.backend.appservices/AgenceService.cs rename to Collaborateur_Epa_Back/espacecollab.backend.appservices/AgenceServices.cs index e081882..3a72ae6 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.appservices/AgenceService.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices/AgenceServices.cs @@ -5,7 +5,7 @@ using espacecollab.backend.infrastructure.sql.dtos; namespace espacecollab.backend.appservices; -public class AgenceService : GenericsServices +public class AgenceServices : GenericsServices { public AgenceService(IAgenceRepository agenceRepository) : base(agenceRepository, AgenceMapper.ToApi, AgenceMapper.ToSql) diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices/BusinessUnitServices.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices/BusinessUnitServices.cs new file mode 100644 index 0000000..10e4df5 --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices/BusinessUnitServices.cs @@ -0,0 +1,19 @@ +using espacecollab.backend.appservices.dtos; +using espacecollab.backend.appservices.dtos.Mappers; +using espacecollab.backend.infrastructure.interfaces; +using espacecollab.backend.infrastructure.sql.dtos; + +namespace espacecollab.backend.appservices; + +public class BusinessUnitServices : GenericsServices +{ + private IBusinessUnitRepository BusinessUnitRepository { get; } + public BusinessUnitServices(IBusinessUnitRepository businessUnitRepository) + :base(businessUnitRepository, BusinessUnitMapper.ToApi, BusinessUnitMapper.ToSql) + {} + + public IEnumerable GetBusinessUnitsByAgence(uint agenceId) + { + return BusinessUnitRepository.GetBusinessUnitsByAgence((int)agenceId).Select(bu => bu.ToApi()); + } +} \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices/FonctionServices.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices/FonctionServices.cs new file mode 100644 index 0000000..ad02b9a --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices/FonctionServices.cs @@ -0,0 +1,14 @@ +using espacecollab.backend.appservices.dtos; +using espacecollab.backend.appservices.dtos.Mappers; +using espacecollab.backend.infrastructure.interfaces; +using espacecollab.backend.infrastructure.sql.dtos; + +namespace espacecollab.backend.appservices; + +public class FonctionServices : GenericsServices +{ + public FonctionServices(IFonctionRepository fonctionRepository) + :base(fonctionRepository, FonctionMapper.ToApi, FonctionMapper.ToSql) + { + } +} \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.appservices/TechnologieServices.cs b/Collaborateur_Epa_Back/espacecollab.backend.appservices/TechnologieServices.cs new file mode 100644 index 0000000..4c32415 --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.appservices/TechnologieServices.cs @@ -0,0 +1,14 @@ +using espacecollab.backend.appservices.dtos; +using espacecollab.backend.appservices.dtos.Mappers; +using espacecollab.backend.infrastructure.interfaces; +using espacecollab.backend.infrastructure.sql.dtos; + +namespace espacecollab.backend.appservices; + +public class TechnologieServices : GenericsServices +{ + public TechnologieServices(ITechnologieRepository technologieRepository) + :base(technologieRepository, TechnologieMapper.ToApi, TechnologieMapper.ToSql) + { + } +} \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IBusinessUnitRepository.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IBusinessUnitRepository.cs index 5ef62a0..b098768 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IBusinessUnitRepository.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IBusinessUnitRepository.cs @@ -1,7 +1,8 @@ using espacecollab.backend.infrastructure.sql.dtos; -namespace espacecollab.backend.infrastructure.interfaces; +namespace espacecollab.backend.infrastructure.interfaces public interface IBusinessUnitRepository : IGenericRepository { + public IList GetBusinessUnitsByAgence(int agenceId); } \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IFonctionRepository.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IFonctionRepository.cs index 6c51e0f..0c87258 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IFonctionRepository.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/IFonctionRepository.cs @@ -2,7 +2,7 @@ namespace espacecollab.backend.infrastructure.interfaces; -public interface IFonctionRepository : IGenericRepository -{ + public interface IFonctionRepository : IGenericRepository + { } \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/ITechnologieRepository.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/ITechnologieRepository.cs new file mode 100644 index 0000000..1424cce --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.interfaces/ITechnologieRepository.cs @@ -0,0 +1,8 @@ +using espacecollab.backend.infrastructure.sql.dtos; + +namespace espacecollab.backend.infrastructure.interfaces +{ + public interface ITechnologieRepository : IGenericRepository + { + } +} \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql.dtos/FonctionSqlDto.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql.dtos/FonctionSqlDto.cs index 5bb3bff..0246266 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql.dtos/FonctionSqlDto.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql.dtos/FonctionSqlDto.cs @@ -1,21 +1,24 @@ using System.Diagnostics.CodeAnalysis; using espacecollab.backend.infrastructure.sql.dtos.Interfaces; -namespace espacecollab.backend.infrastructure.sql.dtos; - -public class FonctionSqlDto : IGenericIdSqlDto +namespace espacecollab.backend.infrastructure.sql.dtos { - public int Id { get; set; } - public string Name { get; set; } + public class FonctionSqlDto : IGenericIdSqlDto + { + public int Id { get; set; } + public string Intitule { get; set; } [ExcludeFromCodeCoverage] private FonctionSqlDto() { } - public FonctionSqlDto(int id, string name) - { - Id = id; - Name = name; + public FonctionSqlDto(int id, string intitule) + { + Id = id; + Intitule = intitule; + } + + } -} \ No newline at end of file +} diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/MainDbContext.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/MainDbContext.cs index e05acb9..37f983a 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/MainDbContext.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/MainDbContext.cs @@ -21,16 +21,21 @@ public class MainDbContext : DbContext .EnableSensitiveDataLogging(); } - protected override void OnModelCreating(ModelBuilder modelBuilder) - { - modelBuilder.Entity().Property(p => p.Id).UseMySqlIdentityColumn(); - modelBuilder - .Entity() - .Property(e => e.Gender) - .HasConversion(); - modelBuilder - .Entity() - .Property(e => e.Status) - .HasConversion(); + protected override void OnModelCreating(ModelBuilder modelBuilder) + { + modelBuilder.Entity().Property(p => p.Id).UseMySqlIdentityColumn(); + modelBuilder.Entity().Property(p => p.Id).UseMySqlIdentityColumn(); + modelBuilder.Entity().Property(p => p.Id).UseMySqlIdentityColumn(); + modelBuilder.Entity().Property(p => p.Id).UseMySqlIdentityColumn(); + modelBuilder.Entity().Property(p=> p.Id).UseMySqlIdentityColumn(); + modelBuilder + .Entity() + .Property(e => e.Gender) + .HasConversion(); + modelBuilder + .Entity() + .Property(e => e.Status) + .HasConversion(); + } } -} \ No newline at end of file +} diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/BusinessUnitSqlRepository.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/BusinessUnitSqlRepository.cs index eebf77b..85e47c0 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/BusinessUnitSqlRepository.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/BusinessUnitSqlRepository.cs @@ -8,4 +8,7 @@ public class BusinessUnitSqlRepository : GenericSqlRepository GetBusinessUnitsByAgence(int agenceId) + => Context.Set().Where(bu => bu.AgenceId == agenceId).ToList(); } \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/FonctionSqlRepository.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/FonctionSqlRepository.cs index b800102..5f79650 100644 --- a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/FonctionSqlRepository.cs +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/FonctionSqlRepository.cs @@ -6,6 +6,6 @@ namespace espacecollab.backend.infrastructure.sql.Repository; public class FonctionSqlRepository : GenericSqlRepository, IFonctionRepository { public FonctionSqlRepository(MainDbContext context) : base(context) - { + { } } \ No newline at end of file diff --git a/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/TechnologieSqlRepository.cs b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/TechnologieSqlRepository.cs new file mode 100644 index 0000000..3a48499 --- /dev/null +++ b/Collaborateur_Epa_Back/espacecollab.backend.infrastructure.sql/Repository/TechnologieSqlRepository.cs @@ -0,0 +1,11 @@ +using espacecollab.backend.infrastructure.interfaces; +using espacecollab.backend.infrastructure.sql.dtos; + +namespace espacecollab.backend.infrastructure.sql.Repository; + +public class TechnologieSqlRepository : GenericSqlRepository, ITechnologieRepository +{ + public TechnologieSqlRepository(MainDbContext context) : base(context) + { + } +} \ No newline at end of file