delete cascades des entités liées à un collaborateur

pull/16/head
Clement FERRERE 2 years ago
parent d202eac901
commit 7b8fd4fd54
  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)}")]
public ActionResult Delete(uint id)
public virtual ActionResult Delete(uint id)
{
bool isDeleted = Services.Delete(id);
if (!isDeleted)

@ -61,6 +61,17 @@ public class CollaborateursController : BaseController<CollaborateurApiDto>
return Ok(updatedApiDto);
}
[HttpDelete("{id:int:min(1)}")]
public override ActionResult Delete(uint id)
{
bool isDeleted = CollaborateursServices.Delete(id);
if (!isDeleted)
return Problem();
return Ok();
}
[HttpGet("businessunit/{businessUnitId:int:min(1)}")]
public ActionResult<IEnumerable<CollaborateurApiDto>> GetCollaborateursByBusinessUnit(uint businessUnitId)
{

@ -10,13 +10,13 @@ public static class PeriodeEssaiMapper
{
return new PeriodeEssaiApiDto((uint)periodeEssaiSqlDto.Id, periodeEssaiSqlDto.StartingDate,
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)
{
return new PeriodeEssaiSqlDto((int)periodeEssaiApiDto.Id, periodeEssaiApiDto.StartingDate,
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>
{
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)
{
CollaborateurRepository = collaborateurRepository;
PeriodeEssaiRepository = periodeEssaiRepository;
ReferencementRepository = referencementRepository;
}
public (CollaborateurApiDto?,int) Add(CollaborateurApiDto apiDto)
@ -41,8 +45,6 @@ public class CollaborateursService : GenericsServices<CollaborateurSqlDto, Colla
return (null,2);
}
CollaborateurSqlDto sqlDto = apiDto.ToSql();
CollaborateurSqlDto? sqlDtoValidation = CollaborateurRepository.Update(sqlDto);
@ -52,6 +54,37 @@ public class CollaborateursService : GenericsServices<CollaborateurSqlDto, Colla
return (sqlDtoValidation.ToApi(),0);
}
public new bool Delete(uint apiDtoId)
{
var referencements = ReferencementRepository.GetAll();
var 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)
{
return CollaborateurRepository.GetCollaborateursByBusinessUnit((int)businessUnitId).Select(collaborateurSql => collaborateurSql.ToApi());

Loading…
Cancel
Save