diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs
index da7e86b..086498f 100644
--- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs
+++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs
@@ -1,4 +1,5 @@
using EPAServeur.Context;
+using EPAServeur.Exceptions;
using EPAServeur.IServices;
using EPAServeur.Models.EP;
using EPAServeur.Services;
@@ -72,9 +73,38 @@ namespace EPAServeur.Tests.Services
#endregion
#region Récupérer EP exceptions
+ [TestCase(-999)]
+ [TestCase(20)]
+ [TestCase(100)]
+ [TestCase(0)]
+ public void GetEPById_NotFoundException(long idEp)
+ {
+ IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService);
+ AsyncTestDelegate exception = () => epDetailsService.GetEp(idEp);
+ Assert.ThrowsAsync(typeof(EpNotFoundException), exception);
+ }
#endregion
#region Récupérer EP avec Engagements
+ [TestCase(6, 3)]
+ [TestCase(8, 0)]
+ [TestCase(10, 1)]
+ public async Task GetEPById_GetEngagement(long idEP, int count)
+ {
+ IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService);
+
+ EpDTO epDTO = await epDetailsService.GetEp(idEP);
+ if(count == 0)
+ {
+ Assert.IsNull(epDTO.Engagements);
+ }
+ else
+ {
+ Assert.IsNotNull(epDTO.Engagements);
+ Assert.AreEqual(count, epDTO.Engagements.Count);
+ }
+
+ }
#endregion
#region Récupérer EP avec participant EP
diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs
index a8bd56d..8b7902d 100644
--- a/EPAServeur/Context/DataSeeder.cs
+++ b/EPAServeur/Context/DataSeeder.cs
@@ -84,6 +84,7 @@ namespace EPAServeur.Context
///
public static void AddEp(EpContext epContext)
{
+ Engagement eg1, eg2, eg3, eg4;
//Ep en cours
Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9;
//Tours
@@ -171,6 +172,37 @@ namespace EPAServeur.Context
IdCollaborateur = new Guid("de98a866-736f-4295-a669-92a8694e2ee3"),
Obligatoire = false,
};
+ eg1 = new Engagement()
+ {
+ Action = "action",
+ DateLimite = DateTime.Now,
+ Dispositif = "dispositif",
+ EtatEngagement = EtatEngagement.EnAttente,
+ Modalite = "modalite",
+ Ep = epEnCours6
+ };
+ eg2 = new Engagement()
+ {
+ Action = "action",
+ DateLimite = DateTime.Now,
+ Dispositif = "dispositif",
+ EtatEngagement = EtatEngagement.EnAttente,
+ Modalite = "modalite",
+ Ep = epEnCours6
+ };
+ eg3 = new Engagement()
+ {
+ Action = "action",
+ DateLimite = DateTime.Now,
+ Dispositif = "dispositif",
+ EtatEngagement = EtatEngagement.EnAttente,
+ Modalite = "modalite",
+ Ep = epEnCours6
+ };
+ epEnCours6.Engagements = new List();
+ epEnCours6.Engagements.Add(eg1);
+ epEnCours6.Engagements.Add(eg2);
+ epEnCours6.Engagements.Add(eg3);
epContext.Ep.Add(epEnCours6);
epEnCours7 = new Ep()
@@ -219,7 +251,7 @@ namespace EPAServeur.Context
//Ep signés
- Ep epSigne1, epSigne2, epSigne3, epSigne4, epSigne5, epSigne6, epSigne7, epSigne8, epSigne9;//, epSigne10, epSigne11, epSigne12, epSigne13, epSigne14;
+ Ep epSigne1, epSigne2, epSigne3, epSigne4, epSigne5, epSigne6, epSigne7, epSigne8, epSigne9;
epSigne1 = new Ep()
{
DateDisponibilite = new DateTime(2017, 1, 15),
@@ -232,6 +264,17 @@ namespace EPAServeur.Context
IdCollaborateur = new Guid("301ba7f3-095e-4912-8998-a7c942dc5f23"),
Obligatoire = true,
};
+ eg4 = new Engagement()
+ {
+ Action = "action",
+ DateLimite = DateTime.Now,
+ Dispositif = "dispositif",
+ EtatEngagement = EtatEngagement.EnAttente,
+ Modalite = "modalite",
+ Ep = epSigne1
+ };
+ epSigne1.Engagements = new List();
+ epSigne1.Engagements.Add(eg4);
epContext.Ep.Add(epSigne1);
epSigne2 = new Ep()
@@ -303,6 +346,7 @@ namespace EPAServeur.Context
IdCollaborateur = new Guid("a0f40e2a-cc03-4032-a627-5389e1281c64"),
Obligatoire = false,
};
+
epContext.Ep.Add(epSigne6);
epSigne7 = new Ep()
diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs
index 5a6b7c6..af5770c 100644
--- a/EPAServeur/IServices/ITransformDTO.cs
+++ b/EPAServeur/IServices/ITransformDTO.cs
@@ -26,7 +26,7 @@ namespace EPAServeur.IServices
#region Engagement
// Engagement
- EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable collaborateurDTOs);
+ EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable collaborateurDTOs, bool recupEpInformation = true);
Engagement SetReponseEngagement(Engagement engagement, EngagementDTO engagementDTO);
#endregion
@@ -72,6 +72,7 @@ namespace EPAServeur.IServices
// Récupération DetailsEP
EpDTO EpToEpDetails(Ep ep, IEnumerable collaborateurDTOs);
+ List GetEngagementDTOs(Ep ep);
DemandeEPIDTO GetDemandeEPIDTO(DemandeEPI demande, IEnumerable collaborateurDTOs);
AugmentationSalaireDTO GetAugmentationSalaireDTO(AugmentationSalaire augmentation);
DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demandeDelegation, IEnumerable collaborateurDTOs);
diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs
index 91d7446..914636d 100644
--- a/EPAServeur/Services/EpDetailsService.cs
+++ b/EPAServeur/Services/EpDetailsService.cs
@@ -4,6 +4,7 @@ using EPAServeur.IServices;
using EPAServeur.Models.EP;
using IO.Swagger.ApiCollaborateur;
using IO.Swagger.DTO;
+using Microsoft.EntityFrameworkCore;
using System;
using System.Collections.Generic;
using System.Linq;
@@ -26,15 +27,19 @@ namespace EPAServeur.Services
public async Task GetEp(long id)
{
- Ep ep = await context.Ep.FindAsync(id);
+ Ep ep = await context.Ep.Include(ep => ep.Engagements).FirstOrDefaultAsync(ep => ep.IdEP.Equals(id));
if (ep == null)
throw new EpNotFoundException();
+
+ //ajouter tous les guids liés à l'EP et aux attributs de l'EP
List guids = new List();
guids.Add(ep.IdCollaborateur);
if (ep.IdReferent.HasValue)
guids.Add(ep.IdCollaborateur);
- IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids) ;
+
+
+ IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids);
EpDTO epDTO = transformDTO.EpToEpDetails(ep, collaborateurDTOs);
diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs
index 8f6d55c..2e86254 100644
--- a/EPAServeur/Services/TransformDTO.cs
+++ b/EPAServeur/Services/TransformDTO.cs
@@ -60,7 +60,8 @@ namespace EPAServeur.Services
Obligatoire = ep.Obligatoire,
Statut = ep.Statut,
Type = ep.TypeEP,
- Cv = ep.CV
+ Cv = ep.CV,
+ Engagements = GetEngagementDTOs(ep)
};
}
@@ -274,9 +275,9 @@ namespace EPAServeur.Services
///
///
///
- public EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable collaborateurDTOs)
+ public EngagementDTO GetEngagementDTO(Engagement engagement, IEnumerable collaborateurDTOs, bool recupEpInformation = true)
{
- if (engagement == null || collaborateurDTOs == null || !collaborateurDTOs.Any())
+ if ( engagement == null || recupEpInformation && ( collaborateurDTOs == null || !collaborateurDTOs.Any()))
return null;
EngagementDTO engagementDTO = new EngagementDTO()
@@ -288,12 +289,19 @@ namespace EPAServeur.Services
Modalite = engagement.Modalite,
RaisonNonRealisable = engagement.RaisonNonRealisable,
EtatEngagement = engagement.EtatEngagement,
- Ep = GetEpInformationDTO(engagement.Ep, collaborateurDTOs)
};
-
+ if (recupEpInformation)
+ engagementDTO.Ep = GetEpInformationDTO(engagement.Ep, collaborateurDTOs);
return engagementDTO;
}
+ public List GetEngagementDTOs(Ep ep)
+ {
+ if (ep.Engagements == null || ep.Engagements.Count == 0)
+ return null;
+ return ep.Engagements.Select(engagment => GetEngagementDTO(engagment, null, false)).ToList();
+ }
+
public TypeEntretienDTO GetEntretienDTO(ChoixTypeEntretien choixTypeEntretien)
{
throw new NotImplementedException();