|
|
|
@ -38,7 +38,6 @@ namespace EPAServeur.Services |
|
|
|
|
throw new ReferentNotFoundException(); |
|
|
|
|
|
|
|
|
|
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) |
|
|
|
|
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) |
|
|
|
|
{ |
|
|
|
|
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 |
|
|
|
|
|
|
|
|
|
#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) |
|
|
|
|
{ |
|
|
|
|
return new CollaborateurDTO() |
|
|
|
|