Implémentation de la mise à jour d'une demande de délégation et validation des tests

develop
Yanaël GRETTE 4 years ago
parent f924d3e40f
commit d6e34b2369
  1. 11
      EPAServeur.Tests/Services/DemandeDelegationServiceTests.cs
  2. 54
      EPAServeur/Services/DemandeDelegationService.cs

@ -104,8 +104,11 @@ namespace EPAServeur.Tests.Services
Id = id, Id = id,
DateDemande = demandeDelegation.DateDemande, DateDemande = demandeDelegation.DateDemande,
RaisonDemande = demandeDelegation.RaisonDemande, RaisonDemande = demandeDelegation.RaisonDemande,
DateReponse = DateTime.Now, EtatDemande = EtatDemande.Validee,
EtatDemande = EtatDemande.Validee Referent = new CollaborateurDTO()
{
Id = idReferent
}
}; };
DemandeDelegationDTO reponse = await demandeDelegationService.UpdateDemandeDelegation(id, demandeDTO); DemandeDelegationDTO reponse = await demandeDelegationService.UpdateDemandeDelegation(id, demandeDTO);
demandeDelegation = await context.DemandeDelegations.FindAsync(id); demandeDelegation = await context.DemandeDelegations.FindAsync(id);
@ -133,7 +136,6 @@ namespace EPAServeur.Tests.Services
Id = id, Id = id,
DateDemande = demandeDelegation.DateDemande, DateDemande = demandeDelegation.DateDemande,
RaisonDemande = demandeDelegation.RaisonDemande, RaisonDemande = demandeDelegation.RaisonDemande,
DateReponse = DateTime.Now,
EtatDemande = EtatDemande.Rejetee, EtatDemande = EtatDemande.Rejetee,
RaisonRefus = "exemple raison refus" RaisonRefus = "exemple raison refus"
}; };
@ -158,7 +160,6 @@ namespace EPAServeur.Tests.Services
Id = id, Id = id,
DateDemande = DateTime.Now, DateDemande = DateTime.Now,
RaisonDemande = "exemple raison demande", RaisonDemande = "exemple raison demande",
DateReponse = DateTime.Now,
EtatDemande = etatDemande, EtatDemande = etatDemande,
RaisonRefus = raisonRefus RaisonRefus = raisonRefus
}; };
@ -179,7 +180,6 @@ namespace EPAServeur.Tests.Services
Id = id, Id = id,
DateDemande = DateTime.Now, DateDemande = DateTime.Now,
RaisonDemande = "exemple raison demande", RaisonDemande = "exemple raison demande",
DateReponse = DateTime.Now,
EtatDemande = etatDemande, EtatDemande = etatDemande,
RaisonRefus = raisonRefus RaisonRefus = raisonRefus
}; };
@ -210,7 +210,6 @@ namespace EPAServeur.Tests.Services
Id = id, Id = id,
DateDemande = demandeDelegation.DateDemande, DateDemande = demandeDelegation.DateDemande,
RaisonDemande = demandeDelegation.RaisonDemande, RaisonDemande = demandeDelegation.RaisonDemande,
DateReponse = DateTime.Now,
EtatDemande = etatDemande, EtatDemande = etatDemande,
RaisonRefus = raisonRefus RaisonRefus = raisonRefus
}; };

@ -38,7 +38,6 @@ namespace EPAServeur.Services
throw new ReferentNotFoundException(); throw new ReferentNotFoundException();
CollaborateurDTO referentDTO = GetCollaborateurDTO(referent); CollaborateurDTO referentDTO = GetCollaborateurDTO(referent);
//var tasks = context.DemandeDelegations.Where( d => d.IdReferent.Equals(idReferent) && d.EtatDemande.Equals(EtatDemande.EnAttente)).Select()
var tasks = from demandeDelegation in context.DemandeDelegations.Include( d => d.Ep) var tasks = from demandeDelegation in context.DemandeDelegations.Include( d => d.Ep)
where demandeDelegation.IdReferent.Equals(idReferent) && demandeDelegation.EtatDemande.Equals(EtatDemande.EnAttente) where demandeDelegation.IdReferent.Equals(idReferent) && demandeDelegation.EtatDemande.Equals(EtatDemande.EnAttente)
@ -50,11 +49,60 @@ namespace EPAServeur.Services
public async Task<DemandeDelegationDTO> UpdateDemandeDelegation(long id, DemandeDelegationDTO demandeDelegationDTO) public async Task<DemandeDelegationDTO> UpdateDemandeDelegation(long id, DemandeDelegationDTO demandeDelegationDTO)
{ {
throw new NotImplementedException(); if (id != demandeDelegationDTO.Id)
throw new DemandeDelegationIncompatibleException("La demande de délégation ne correspond pas avec l'identifiant reçu");
if (demandeDelegationDTO == null || !demandeDelegationDTO.Id.HasValue || demandeDelegationDTO.Id == null)
throw new DemandeDelegationInvalidException("Aucune demande de délégation à mettre à jour n'a été reçu");
switch(demandeDelegationDTO.EtatDemande)
{
case EtatDemande.EnAttente:
throw new DemandeDelegationInvalidException("La demande ne peut pas être mise à jour si aucune réponse n'a été donnée");
case EtatDemande.Validee:
demandeDelegationDTO = await AccepterDemandeDelegation(demandeDelegationDTO);
break;
case EtatDemande.Rejetee:
demandeDelegationDTO = await RejeterDemandeDelegation(demandeDelegationDTO);
break;
}
return demandeDelegationDTO;
} }
#endregion #endregion
#region #region méthodes privées
private async Task<DemandeDelegationDTO> AccepterDemandeDelegation(DemandeDelegationDTO demandeDelegationDTO)
{
DemandeDelegation demandeDelegation = await context.DemandeDelegations.Where(d => d.IdDemandeDelegation.Equals(demandeDelegationDTO.Id.Value)).Include(d => d.Ep).FirstOrDefaultAsync();
if (demandeDelegation == null)
throw new DemandeDelegationNotFoundException("Aucune demande de délégation n'a été trouvée");
Guid ancienReferent = demandeDelegation.Ep.IdReferent.Value; // devra être utilisé pour notifier l'ancien référent
demandeDelegation.Ep.IdReferent = demandeDelegationDTO.Referent.Id;
context.Remove(demandeDelegation);
await context.SaveChangesAsync();
return null;
}
private async Task<DemandeDelegationDTO> RejeterDemandeDelegation(DemandeDelegationDTO demandeDelegationDTO)
{
if (demandeDelegationDTO.RaisonRefus == null || demandeDelegationDTO.RaisonRefus == "")
throw new DemandeDelegationInvalidException("Vous devez justifiez la raison du refus");
DemandeDelegation demandeDelegation = await context.DemandeDelegations.FindAsync(demandeDelegationDTO.Id);
if (demandeDelegation == null)
throw new DemandeDelegationNotFoundException("Aucune demande de délégation n'a été trouvée");
demandeDelegation.EtatDemande = demandeDelegationDTO.EtatDemande;
demandeDelegation.RaisonRefus= demandeDelegationDTO.RaisonRefus;
demandeDelegation.DateReponse = DateTime.Now;
await context.SaveChangesAsync();
return demandeDelegationDTO;
}
private static CollaborateurDTO GetCollaborateurDTO(Collaborateur collaborateur) private static CollaborateurDTO GetCollaborateurDTO(Collaborateur collaborateur)
{ {
return new CollaborateurDTO() return new CollaborateurDTO()

Loading…
Cancel
Save