delete_cascade_collabs à faire en 2ème #16

Merged
Clement.Ferrere merged 4 commits from delete_cascade_collabs into develop 2 years ago
  1. 2
      Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/BaseController.cs
  2. 11
      Collaborateur_Epa_Back/espacecollab.backend.api/Controllers/CollaborateursController.cs
  3. 4
      Collaborateur_Epa_Back/espacecollab.backend.appservices.dtos/Mappers/PeriodeEssaiMapper.cs
  4. 39
      Collaborateur_Epa_Back/espacecollab.backend.appservices/CollaborateursService.cs

@ -42,7 +42,7 @@ namespace espacecollab.backend.api.Controllers
} }
[HttpDelete("{id:int:min(1)}")] [HttpDelete("{id:int:min(1)}")]
public ActionResult Delete(uint id) public virtual ActionResult Delete(uint id)
{ {
bool isDeleted = Services.Delete(id); bool isDeleted = Services.Delete(id);
if (!isDeleted) if (!isDeleted)

@ -61,6 +61,17 @@ public class CollaborateursController : BaseController<CollaborateurApiDto>
return Ok(updatedApiDto); return Ok(updatedApiDto);
} }
[HttpDelete("{id:int:min(1)}")]
public override ActionResult Delete(uint id)
Clement.Ferrere marked this conversation as resolved
Review

Pourquoi override la méthode alors que c'est la même ?

Pourquoi override la méthode alors que c'est la même ?

Dans l'override on utilise le CollaborateursServices, si on override pas on utilise un GenericServices de Collaborateur. Pour supprimer en cascade, j'ai modifié le CollaborateursServices pour essayer de rester cohérent dans les dépendances, et le fait d'override permet de forcer l'utilisation de ce service.

Dans l'override on utilise le CollaborateursServices, si on override pas on utilise un GenericServices de Collaborateur. Pour supprimer en cascade, j'ai modifié le CollaborateursServices pour essayer de rester cohérent dans les dépendances, et le fait d'override permet de forcer l'utilisation de ce service.
{
bool isDeleted = CollaborateursServices.Delete(id);
if (!isDeleted)
return Problem();
return Ok();
}
[HttpGet("businessunit/{businessUnitId:int:min(1)}")] [HttpGet("businessunit/{businessUnitId:int:min(1)}")]
public ActionResult<IEnumerable<CollaborateurApiDto>> GetCollaborateursByBusinessUnit(uint businessUnitId) public ActionResult<IEnumerable<CollaborateurApiDto>> GetCollaborateursByBusinessUnit(uint businessUnitId)
{ {

@ -10,13 +10,13 @@ public static class PeriodeEssaiMapper
{ {
return new PeriodeEssaiApiDto((uint)periodeEssaiSqlDto.Id, periodeEssaiSqlDto.StartingDate, return new PeriodeEssaiApiDto((uint)periodeEssaiSqlDto.Id, periodeEssaiSqlDto.StartingDate,
periodeEssaiSqlDto.PlannedEndingDate, periodeEssaiSqlDto.RealEndingDate, periodeEssaiSqlDto.Comment, periodeEssaiSqlDto.PlannedEndingDate, periodeEssaiSqlDto.RealEndingDate, periodeEssaiSqlDto.Comment,
(EnumIssueApi)periodeEssaiSqlDto.Issue, (uint)periodeEssaiSqlDto.CollaborateurId); (EnumIssueApi?)periodeEssaiSqlDto.Issue, (uint)periodeEssaiSqlDto.CollaborateurId);
} }
public static PeriodeEssaiSqlDto ToSql(this PeriodeEssaiApiDto periodeEssaiApiDto) public static PeriodeEssaiSqlDto ToSql(this PeriodeEssaiApiDto periodeEssaiApiDto)
{ {
return new PeriodeEssaiSqlDto((int)periodeEssaiApiDto.Id, periodeEssaiApiDto.StartingDate, return new PeriodeEssaiSqlDto((int)periodeEssaiApiDto.Id, periodeEssaiApiDto.StartingDate,
periodeEssaiApiDto.PlannedEndingDate, periodeEssaiApiDto.RealEndingDate, periodeEssaiApiDto.Comment, periodeEssaiApiDto.PlannedEndingDate, periodeEssaiApiDto.RealEndingDate, periodeEssaiApiDto.Comment,
(EnumIssueSql)periodeEssaiApiDto.Issue, (int)periodeEssaiApiDto.CollaborateurId); (EnumIssueSql?)periodeEssaiApiDto.Issue, (int)periodeEssaiApiDto.CollaborateurId);
} }
} }

@ -8,11 +8,15 @@ namespace espacecollab.backend.appservices;
public class CollaborateursService : GenericsServices<CollaborateurSqlDto, CollaborateurApiDto> public class CollaborateursService : GenericsServices<CollaborateurSqlDto, CollaborateurApiDto>
{ {
private ICollaborateurRepository CollaborateurRepository { get; } private ICollaborateurRepository CollaborateurRepository { get; }
private IPeriodeEssaiRepository PeriodeEssaiRepository { get; }
private IReferencementRepository ReferencementRepository { get; }
public CollaborateursService(ICollaborateurRepository collaborateurRepository) public CollaborateursService(ICollaborateurRepository collaborateurRepository, IPeriodeEssaiRepository periodeEssaiRepository, IReferencementRepository referencementRepository)
: base(collaborateurRepository, CollaborateurMapper.ToApi, CollaborateurMapper.ToSql) : base(collaborateurRepository, CollaborateurMapper.ToApi, CollaborateurMapper.ToSql)
{ {
CollaborateurRepository = collaborateurRepository; CollaborateurRepository = collaborateurRepository;
PeriodeEssaiRepository = periodeEssaiRepository;
ReferencementRepository = referencementRepository;
} }
public (CollaborateurApiDto?,int) Add(CollaborateurApiDto apiDto) public (CollaborateurApiDto?,int) Add(CollaborateurApiDto apiDto)
@ -41,8 +45,6 @@ public class CollaborateursService : GenericsServices<CollaborateurSqlDto, Colla
return (null,2); return (null,2);
} }
CollaborateurSqlDto sqlDto = apiDto.ToSql(); CollaborateurSqlDto sqlDto = apiDto.ToSql();
CollaborateurSqlDto? sqlDtoValidation = CollaborateurRepository.Update(sqlDto); CollaborateurSqlDto? sqlDtoValidation = CollaborateurRepository.Update(sqlDto);
@ -52,6 +54,37 @@ public class CollaborateursService : GenericsServices<CollaborateurSqlDto, Colla
return (sqlDtoValidation.ToApi(),0); return (sqlDtoValidation.ToApi(),0);
} }
public new bool Delete(uint apiDtoId)
{
IEnumerable<ReferencementSqlDto>? referencements = ReferencementRepository.GetAll();
IEnumerable<PeriodeEssaiSqlDto>? periodeEssais = PeriodeEssaiRepository.GetAll();
if (referencements.Any())
{
foreach (var referencement in referencements)
{
if (referencement.ReferredId == apiDtoId || referencement.ReferrerId == apiDtoId)
{
ReferencementRepository.Delete(referencement.Id);
}
}
}
if (periodeEssais.Any())
{
foreach (var periodeEssai in periodeEssais)
{
if (periodeEssai.CollaborateurId== apiDtoId)
{
PeriodeEssaiRepository.Delete(periodeEssai.Id);
}
}
}
return CollaborateurRepository.Delete((int)apiDtoId);
}
public IEnumerable<CollaborateurApiDto> GetCollaborateursByBusinessUnit(uint businessUnitId) public IEnumerable<CollaborateurApiDto> GetCollaborateursByBusinessUnit(uint businessUnitId)
{ {
return CollaborateurRepository.GetCollaborateursByBusinessUnit((int)businessUnitId).Select(collaborateurSql => collaborateurSql.ToApi()); return CollaborateurRepository.GetCollaborateursByBusinessUnit((int)businessUnitId).Select(collaborateurSql => collaborateurSql.ToApi());

Loading…
Cancel
Save