From 8f3aed1f24866e157f985d9b87b59309e5fb1209 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Wed, 10 Mar 2021 10:30:06 +0100 Subject: [PATCH 01/10] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20des=20d=C3=A9tails=20d'un=20EP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 115 ++++++++++++++++++ EPAServeur/Context/DataSeeder.cs | 1 + EPAServeur/Exceptions/EpNotFoundException.cs | 31 +++++ EPAServeur/Services/EpDetailsService.cs | 32 ++++- EPAServeur/Services/TransformDTO.cs | 16 ++- 5 files changed, 191 insertions(+), 4 deletions(-) create mode 100644 EPAServeur.Tests/Services/EpDetailsServiceTests.cs create mode 100644 EPAServeur/Exceptions/EpNotFoundException.cs diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs new file mode 100644 index 0000000..da7e86b --- /dev/null +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -0,0 +1,115 @@ +using EPAServeur.Context; +using EPAServeur.IServices; +using EPAServeur.Models.EP; +using EPAServeur.Services; +using IO.Swagger.ApiCollaborateur; +using IO.Swagger.DTO; +using IO.Swagger.Enum; +using Microsoft.EntityFrameworkCore; +using NUnit.Framework; +using System; +using System.Collections.Generic; +using System.Text; +using System.Threading.Tasks; + +namespace EPAServeur.Tests.Services +{ + public class EpDetailsServiceTests + { + #region variables + private EpContext context; + private ICollaborateurService collaborateurService; + private ITransformDTO transformDTO; + #endregion + + #region Setup + [SetUp] + public void Setup() + { + // Utilisation d'une base de données en mémoire + var optionBuider = new DbContextOptionsBuilder() + .UseInMemoryDatabase("server_ep_test") + .Options; + + context = new EpContext(optionBuider); + + context.Database.EnsureDeleted(); + context.Database.EnsureCreated(); + context.SaveChanges(); + + DataSeeder.AddEp(context); + + foreach (var entity in context.ChangeTracker.Entries()) + { + entity.State = EntityState.Detached; + } + transformDTO = new TransformDTO(); + collaborateurService = new CollaborateurService(new CollaborateurApi(), context, transformDTO); + } + #endregion + + #region Récupérer EP simple + [TestCase(1, "301ba7f3-095e-4912-8998-a7c942dc5f23", StatutEp.Disponible)] + [TestCase(2, "e7820f92-eab1-42f5-ae96-5c16e71ff1e6", StatutEp.DatesProposees)] + [TestCase(5, "17b87130-0e9d-4b78-b0e3-a11e5f70318d", StatutEp.AttenteEntretien)] + [TestCase(14, "a0f40e2a-cc03-4032-a627-5389e1281c64", StatutEp.Signe)] + public async Task GetEpById(long idEP, Guid? idCollaborateur, StatutEp statutEp) + { + Ep ep = await context.Ep.FindAsync(idEP); + Assert.IsNotNull(ep); + Assert.AreEqual(idEP, ep.IdEP); + Assert.AreEqual(idCollaborateur, ep.IdCollaborateur); + Assert.AreEqual(statutEp, ep.Statut); + + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + + EpDTO epDTO = await epDetailsService.GetEp(ep.IdEP); + Assert.IsNotNull(epDTO); + Assert.AreEqual(epDTO.Collaborateur.Id, ep.IdCollaborateur); + Assert.AreEqual(epDTO.Statut, ep.Statut); + Assert.AreEqual(epDTO.Id, ep.IdEP); + } + #endregion + + #region Récupérer EP exceptions + #endregion + + #region Récupérer EP avec Engagements + #endregion + + #region Récupérer EP avec participant EP + #endregion + + #region Récupérer EP avec RDV entretiens + #endregion + + #region Récupérer EP avec type entretien + #endregion + + #region Récupérer EP avec CommentaireAssistant + #endregion + + #region Récupérer EP avec demandes de délégation + #endregion + + #region Récupérer EP avec demandes de formation + #endregion + + + + + + + #region + #endregion + + #region + #endregion + + #region + #endregion + + #region + #endregion + } +} diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index 752ad9b..a8bd56d 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -2005,5 +2005,6 @@ namespace EPAServeur.Context context.SaveChanges(); } + } } diff --git a/EPAServeur/Exceptions/EpNotFoundException.cs b/EPAServeur/Exceptions/EpNotFoundException.cs new file mode 100644 index 0000000..4684fac --- /dev/null +++ b/EPAServeur/Exceptions/EpNotFoundException.cs @@ -0,0 +1,31 @@ +using System; +using System.Collections.Generic; +using System.Linq; +using System.Runtime.Serialization; +using System.Threading.Tasks; + +namespace EPAServeur.Exceptions +{ + + /// + /// Exceptin pour gérer les EP non trouvé + /// + public class EpNotFoundException : Exception + { + public EpNotFoundException() + { + } + + public EpNotFoundException(string message) : base(message) + { + } + + public EpNotFoundException(string message, Exception innerException) : base(message, innerException) + { + } + + protected EpNotFoundException(SerializationInfo info, StreamingContext context) : base(info, context) + { + } + } +} diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 8da37fa..91d7446 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -1,4 +1,8 @@ -using EPAServeur.IServices; +using EPAServeur.Context; +using EPAServeur.Exceptions; +using EPAServeur.IServices; +using EPAServeur.Models.EP; +using IO.Swagger.ApiCollaborateur; using IO.Swagger.DTO; using System; using System.Collections.Generic; @@ -9,10 +13,32 @@ namespace EPAServeur.Services { public class EpDetailsService : IEpDetailsService { + private EpContext context; + private ITransformDTO transformDTO; + private ICollaborateurService collaborateurService; - public Task GetEp(long id) + public EpDetailsService(EpContext context, ITransformDTO transformDTO, ICollaborateurService collaborateurService) { - throw new NotImplementedException(); + this.context = context; + this.transformDTO = transformDTO; + this.collaborateurService = collaborateurService; + } + + public async Task GetEp(long id) + { + Ep ep = await context.Ep.FindAsync(id); + if (ep == null) + throw new EpNotFoundException(); + List guids = new List(); + guids.Add(ep.IdCollaborateur); + if (ep.IdReferent.HasValue) + guids.Add(ep.IdCollaborateur); + + IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids) ; + + EpDTO epDTO = transformDTO.EpToEpDetails(ep, collaborateurDTOs); + + return epDTO; } public void RappelSignature(long idEp) diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index 0385d70..8f6d55c 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -47,7 +47,21 @@ namespace EPAServeur.Services /// L'EP transformé en DTO public EpDTO EpToEpDetails(Ep ep, IEnumerable collaborateurDTOs) { - throw new NotImplementedException(); + return new EpDTO() + { + Id = ep.IdEP, + Collaborateur = collaborateurDTOs.FirstOrDefault(c => c.Id.Equals(ep.IdCollaborateur)), + Referent = collaborateurDTOs.FirstOrDefault(c => c.Id.Equals(ep.IdCollaborateur)), + DateDisponibilite = ep.DateDisponibilite, + DatePrevisionnelle = ep.DatePrevisionnelle, + DateSaisie = ep.DateSaisie, + DateSignatureCollaborateur = ep.DateSignatureCollaborateur, + DateSignatureReferent = ep.DateSignatureReferent, + Obligatoire = ep.Obligatoire, + Statut = ep.Statut, + Type = ep.TypeEP, + Cv = ep.CV + }; } /// From daab188c86d0788e4531d74b3499a33feecff03a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Wed, 10 Mar 2021 14:41:41 +0100 Subject: [PATCH 02/10] =?UTF-8?q?R=C3=A9cup=C3=A9ration=20des=20engagement?= =?UTF-8?q?s=20avec=20les=20d=C3=A9tails=20EP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 30 ++++++++++++ EPAServeur/Context/DataSeeder.cs | 46 ++++++++++++++++++- EPAServeur/IServices/ITransformDTO.cs | 3 +- EPAServeur/Services/EpDetailsService.cs | 9 +++- EPAServeur/Services/TransformDTO.cs | 18 ++++++-- 5 files changed, 97 insertions(+), 9 deletions(-) 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(); From b48458e2d050b3638f575aeca84abcd377f8d4fb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Wed, 10 Mar 2021 15:45:12 +0100 Subject: [PATCH 03/10] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20des=20participants=20=C3=A0=20un=20EP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 18 +++++++ EPAServeur/Context/DataSeeder.cs | 39 ++++++++++++++- EPAServeur/IServices/ITransformDTO.cs | 3 +- EPAServeur/Models/EP/ParticipationEP.cs | 2 +- EPAServeur/Services/EpDetailsService.cs | 9 ++-- EPAServeur/Services/TransformDTO.cs | 49 ++++++++++++++----- 6 files changed, 102 insertions(+), 18 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index 086498f..8bbb295 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -108,6 +108,24 @@ namespace EPAServeur.Tests.Services #endregion #region Récupérer EP avec participant EP + [TestCase(1,0)] + [TestCase(3,2)] + [TestCase(5,1)] + [TestCase(11,2)] + public async Task GetEpById_GetParticipantEP(long idEP, int count) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEP); + if (count == 0) + { + Assert.IsNull(epDTO.Participants); + } + else + { + Assert.IsNotNull(epDTO.Participants); + Assert.AreEqual(count, epDTO.Participants.Count); + } + } #endregion #region Récupérer EP avec RDV entretiens diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index 8b7902d..4b2bf6f 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -85,9 +85,12 @@ namespace EPAServeur.Context public static void AddEp(EpContext epContext) { Engagement eg1, eg2, eg3, eg4; + ParticipationEP p1, p2, p3, p4, p5; + + //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; - //Tours + epEnCours1 = new Ep() { @@ -130,6 +133,20 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("b5254c6c-7caa-435f-a4bb-e0cf92559832"), Obligatoire = false, }; + p1 = new ParticipationEP() + { + Ep = epEnCours3, + IdParticipant = new Guid("eb8b0f33-f529-4985-861e-1207f3312bb5"), + EstPermanente = false + }; + p2 = new ParticipationEP() + { + Ep = epEnCours3, + IdParticipant = new Guid("d4fc247b-015a-44d6-8f3e-a52f0902d2bf"), + EstPermanente = false + }; + epEnCours3.Participants = new List(new[] { p1, p2 }); + epContext.Ep.Add(epEnCours3); epEnCours4 = new Ep() @@ -158,6 +175,13 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("17b87130-0e9d-4b78-b0e3-a11e5f70318d"), Obligatoire = true, }; + p3 = new ParticipationEP() + { + Ep = epEnCours5, + IdParticipant = new Guid("d4fc247b-015a-44d6-8f3e-a52f0902d2bf"), + EstPermanente = false + }; + epEnCours5.Participants = new List(new[] { p3 }); epContext.Ep.Add(epEnCours5); epEnCours6 = new Ep() @@ -289,6 +313,19 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("e7820f92-eab1-42f5-ae96-5c16e71ff1e6"), Obligatoire = false, }; + p4 = new ParticipationEP() + { + Ep = epSigne2, + IdParticipant = new Guid("01ee85ff-d7f3-494b-b1de-26ced8fbfa0d"), + EstPermanente = false + }; + p5 = new ParticipationEP() + { + Ep = epSigne2, + IdParticipant = new Guid("eb8b0f33-f529-4985-861e-1207f3312bb5"), + EstPermanente = false + }; + epSigne2.Participants = new List(new[] { p4, p5 }); epContext.Ep.Add(epSigne2); diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs index af5770c..1a410b9 100644 --- a/EPAServeur/IServices/ITransformDTO.cs +++ b/EPAServeur/IServices/ITransformDTO.cs @@ -72,7 +72,8 @@ namespace EPAServeur.IServices // Récupération DetailsEP EpDTO EpToEpDetails(Ep ep, IEnumerable collaborateurDTOs); - List GetEngagementDTOs(Ep ep); + List GetEngagementDTOs(List engagements); + List GetParticipantsDTO(List participants, IEnumerable collaborateurDTOs); DemandeEPIDTO GetDemandeEPIDTO(DemandeEPI demande, IEnumerable collaborateurDTOs); AugmentationSalaireDTO GetAugmentationSalaireDTO(AugmentationSalaire augmentation); DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demandeDelegation, IEnumerable collaborateurDTOs); diff --git a/EPAServeur/Models/EP/ParticipationEP.cs b/EPAServeur/Models/EP/ParticipationEP.cs index 2f1b960..64e3eb8 100644 --- a/EPAServeur/Models/EP/ParticipationEP.cs +++ b/EPAServeur/Models/EP/ParticipationEP.cs @@ -18,7 +18,7 @@ namespace EPAServeur.Models.EP /// /// Id du collaborateur participant à l’EP /// - public string IdParticipant { get; set; } + public Guid IdParticipant { get; set; } /// /// Indique si la participation est juste une participation d’un EP en cours ou des prochains EP en plus diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 914636d..f8ae2e1 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -2,7 +2,6 @@ using EPAServeur.Exceptions; using EPAServeur.IServices; using EPAServeur.Models.EP; -using IO.Swagger.ApiCollaborateur; using IO.Swagger.DTO; using Microsoft.EntityFrameworkCore; using System; @@ -27,7 +26,10 @@ namespace EPAServeur.Services public async Task GetEp(long id) { - Ep ep = await context.Ep.Include(ep => ep.Engagements).FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); + Ep ep = await context.Ep + .Include(ep => ep.Engagements) + .Include(ep => ep.Participants) + .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); @@ -36,7 +38,8 @@ namespace EPAServeur.Services guids.Add(ep.IdCollaborateur); if (ep.IdReferent.HasValue) guids.Add(ep.IdCollaborateur); - + if (ep.Participants != null && ep.Participants.Any()) + guids.AddRange(ep.Participants.SelectMany(p => new[] { (Guid?)p.IdParticipant })); IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index 2e86254..b291f73 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -61,7 +61,8 @@ namespace EPAServeur.Services Statut = ep.Statut, Type = ep.TypeEP, Cv = ep.CV, - Engagements = GetEngagementDTOs(ep) + Engagements = GetEngagementDTOs(ep.Engagements), + Participants = GetParticipantsDTO(ep.Participants, collaborateurDTOs) }; } @@ -295,11 +296,11 @@ namespace EPAServeur.Services return engagementDTO; } - public List GetEngagementDTOs(Ep ep) + public List GetEngagementDTOs(List engagements) { - if (ep.Engagements == null || ep.Engagements.Count == 0) + if (engagements == null || engagements.Count == 0) return null; - return ep.Engagements.Select(engagment => GetEngagementDTO(engagment, null, false)).ToList(); + return engagements.Select(engagment => GetEngagementDTO(engagment, null, false)).ToList(); } public TypeEntretienDTO GetEntretienDTO(ChoixTypeEntretien choixTypeEntretien) @@ -540,14 +541,38 @@ namespace EPAServeur.Services return origineFormationDTO; } - /// - /// Transformer un objet ParticipationFormation en objet ParticipationFormationDTO. - /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Ep de l'objet FormationDTO. - /// - /// - /// - /// - public ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable collaborateurDTOs) + public List GetParticipantsDTO(List participants, IEnumerable collaborateurDTOs) + { + if (participants == null || !participants.Any()) + return null; + List participantsDTO = new List(); + foreach(ParticipationEP p in participants) + { + CollaborateurDTO c = collaborateurDTOs.FirstOrDefault( c => c.Id.Equals(p.IdParticipant)); + if(c != null) + { + participantsDTO.Add(new ParticipationEPDTO() + { + Id = p.IdParticipationEP, + EstPermanente = p.EstPermanente, + IdParticipant = c.Id, + Participant = c.Nom + " " + c.Prenom + }); + } + } + if (participantsDTO.Any()) + return participantsDTO; + return null; + } + + /// + /// Transformer un objet ParticipationFormation en objet ParticipationFormationDTO. + /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Ep de l'objet FormationDTO. + /// + /// + /// + /// + public ParticipationFormationDTO GetParticipationFormationDTO(ParticipationFormation participationFormation, IEnumerable collaborateurDTOs) { if (participationFormation == null || collaborateurDTOs == null || !collaborateurDTOs.Any()) return null; From 2fbd2076cde96736dc0872771df49497c8d24c26 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Wed, 10 Mar 2021 16:26:00 +0100 Subject: [PATCH 04/10] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20des=20commentaires=20assistants=20(sans=20le=20?= =?UTF-8?q?nom=20et=20le=20pr=C3=A9nom=20de=20l'assistant=20encore)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 22 ++++++++++++++-- EPAServeur/Context/DataSeeder.cs | 25 ++++++++++++++++++- EPAServeur/IServices/ITransformDTO.cs | 2 +- EPAServeur/Services/EpDetailsService.cs | 3 +++ EPAServeur/Services/TransformDTO.cs | 25 ++++++++++++++++--- 5 files changed, 69 insertions(+), 8 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index 8bbb295..2621269 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -128,14 +128,32 @@ namespace EPAServeur.Tests.Services } #endregion + #region Récupérer EP avec CommentaireAssistant + [TestCase(2, 2)] + [TestCase(4, 0)] + [TestCase(16, 1)] + public async Task GetEpById_GetCommentairesAssistant(long idEP, int count) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEP); + if (count == 0) + { + Assert.IsNull(epDTO.CommentairesAssistant); + } + else + { + Assert.IsNotNull(epDTO.CommentairesAssistant); + Assert.AreEqual(count, epDTO.CommentairesAssistant.Count); + } + } + #endregion + #region Récupérer EP avec RDV entretiens #endregion #region Récupérer EP avec type entretien #endregion - #region Récupérer EP avec CommentaireAssistant - #endregion #region Récupérer EP avec demandes de délégation #endregion diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index 4b2bf6f..ba32f35 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -86,7 +86,7 @@ namespace EPAServeur.Context { Engagement eg1, eg2, eg3, eg4; ParticipationEP p1, p2, p3, p4, p5; - + CommentaireAssistant ca1, ca2, ca3; //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; @@ -118,6 +118,19 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("e7820f92-eab1-42f5-ae96-5c16e71ff1e6"), Obligatoire = false, }; + ca1 = new CommentaireAssistant() + { + Commentaire = "Commentaire assistant", + IdAssistant = new Guid("a43b6f4f-f199-4dd0-93b6-a1cb2c0a0d14"), + Ep = epEnCours2 + }; + ca2 = new CommentaireAssistant() + { + Commentaire = "Commentaire assistant", + IdAssistant = new Guid("a29d707c-5d82-4c48-bed1-a6d1c1710047"), + Ep = epEnCours2 + }; + epEnCours2.CommentairesAssistant = new List(new[] { ca1, ca2 }); epContext.Ep.Add(epEnCours2); @@ -133,6 +146,7 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("b5254c6c-7caa-435f-a4bb-e0cf92559832"), Obligatoire = false, }; + p1 = new ParticipationEP() { Ep = epEnCours3, @@ -269,6 +283,7 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("13fbe621-1bc9-4f04-afde-b54ca076e239"), Obligatoire = true, }; + epContext.Ep.Add(epEnCours9); @@ -398,6 +413,14 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("13fbe621-1bc9-4f04-afde-b54ca076e239"), Obligatoire = false, }; + ca3 = new CommentaireAssistant() + { + Commentaire = "Commentaire assistant", + IdAssistant = new Guid("e6255f16-bcaf-48ac-b00b-97de83677ad8"), + Ep = epSigne7 + }; + epSigne7.CommentairesAssistant = new List(); + epSigne7.CommentairesAssistant.Add(ca3); epContext.Ep.Add(epSigne7); epSigne8 = new Ep() diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs index 1a410b9..ed7dffe 100644 --- a/EPAServeur/IServices/ITransformDTO.cs +++ b/EPAServeur/IServices/ITransformDTO.cs @@ -74,6 +74,7 @@ namespace EPAServeur.IServices EpDTO EpToEpDetails(Ep ep, IEnumerable collaborateurDTOs); List GetEngagementDTOs(List engagements); List GetParticipantsDTO(List participants, IEnumerable collaborateurDTOs); + List GetCommentaireAssistant(List commentaireAssistant, IEnumerable collaborateurDTOs); DemandeEPIDTO GetDemandeEPIDTO(DemandeEPI demande, IEnumerable collaborateurDTOs); AugmentationSalaireDTO GetAugmentationSalaireDTO(AugmentationSalaire augmentation); DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demandeDelegation, IEnumerable collaborateurDTOs); @@ -83,7 +84,6 @@ namespace EPAServeur.IServices DocumentDTO GetDocumentDTO(Document document); ObjectifDTO GetObjectifDTO(Objectif objectif); ObjectifPrecedentDTO GetObjectifPrecedentDTO(ObjectifPrecedent objectifPrecedent); - CommentaireAssistant GetCommentaireAssistant(CommentaireAssistant commentaireAssistant); diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index f8ae2e1..18c9efa 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -29,6 +29,7 @@ namespace EPAServeur.Services Ep ep = await context.Ep .Include(ep => ep.Engagements) .Include(ep => ep.Participants) + .Include(ep => ep.CommentairesAssistant) .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); @@ -40,6 +41,8 @@ namespace EPAServeur.Services guids.Add(ep.IdCollaborateur); if (ep.Participants != null && ep.Participants.Any()) guids.AddRange(ep.Participants.SelectMany(p => new[] { (Guid?)p.IdParticipant })); + if (ep.CommentairesAssistant != null && ep.CommentairesAssistant.Any()) + guids.AddRange(ep.CommentairesAssistant.SelectMany(p => new[] { (Guid?)p.IdAssistant })); IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index b291f73..3f43355 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -62,7 +62,8 @@ namespace EPAServeur.Services Type = ep.TypeEP, Cv = ep.CV, Engagements = GetEngagementDTOs(ep.Engagements), - Participants = GetParticipantsDTO(ep.Participants, collaborateurDTOs) + Participants = GetParticipantsDTO(ep.Participants, collaborateurDTOs), + CommentairesAssistant = GetCommentaireAssistant(ep.CommentairesAssistant, collaborateurDTOs) }; } @@ -205,11 +206,27 @@ namespace EPAServeur.Services /// /// Transformer un commentaire assistante en objet DTO /// - /// Le commentaire a transformé en DTO + /// Les commentaire a transformé en DTO /// Le commentaire assistant transformé en DTO - public CommentaireAssistant GetCommentaireAssistant(CommentaireAssistant commentaireAssistant) + public List GetCommentaireAssistant(List commentairesAssistant, IEnumerable collaborateurDTOs) { - throw new NotImplementedException(); + if (commentairesAssistant == null || !commentairesAssistant.Any()) + return null; + List commentaireAssistantDTO = new List(); + foreach(CommentaireAssistant ca in commentairesAssistant) + { + CollaborateurDTO c = collaborateurDTOs.FirstOrDefault(collaborateur => collaborateur.Id.Equals(ca.IdAssistant)); + if(c != null) + { + commentaireAssistantDTO.Add(new CommentaireAssistantDTO() + { + Commentaire = ca.Commentaire, + Id = ca.IdCommentaireAssistant, + IdAssistante = ca.IdAssistant + }); + } + } + return commentaireAssistantDTO.Any() ? commentaireAssistantDTO : null; } From 72153decaff524aca3c4532aa5dcccde91319a6f Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Wed, 10 Mar 2021 16:57:55 +0100 Subject: [PATCH 05/10] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20d'une=20demande=20de=20d=C3=A9l=C3=A9gation=20a?= =?UTF-8?q?vec=20un=20EP?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 20 +++++++++++-- EPAServeur/Context/DataSeeder.cs | 30 ++++++++++++++++++- EPAServeur/DTO/EpDTO.cs | 4 +-- EPAServeur/IServices/ITransformDTO.cs | 2 +- EPAServeur/Services/EpDetailsService.cs | 4 ++- EPAServeur/Services/TransformDTO.cs | 21 +++++++++---- 6 files changed, 69 insertions(+), 12 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index 2621269..0058240 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -148,6 +148,24 @@ namespace EPAServeur.Tests.Services } #endregion + #region Récupérer EP avec demandes de délégation + [TestCase(1, false)] + [TestCase(2, true)] + [TestCase(4, true)] + [TestCase(8, true)] + [TestCase(9, false)] + [TestCase(12, false)] + public async Task GetEpById_GetDemandeDelegation(long idEp, bool possedeDemandeDelegation) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEp); + if(possedeDemandeDelegation) + Assert.IsNotNull(epDTO.DemandesDelegation); + else + Assert.IsNull(epDTO.DemandesDelegation); + } + #endregion + #region Récupérer EP avec RDV entretiens #endregion @@ -155,8 +173,6 @@ namespace EPAServeur.Tests.Services #endregion - #region Récupérer EP avec demandes de délégation - #endregion #region Récupérer EP avec demandes de formation #endregion diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index ba32f35..d957ce7 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -87,6 +87,7 @@ namespace EPAServeur.Context Engagement eg1, eg2, eg3, eg4; ParticipationEP p1, p2, p3, p4, p5; CommentaireAssistant ca1, ca2, ca3; + DemandeDelegation dm1, dm2, dm3; //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; @@ -131,6 +132,15 @@ namespace EPAServeur.Context Ep = epEnCours2 }; epEnCours2.CommentairesAssistant = new List(new[] { ca1, ca2 }); + dm1 = new DemandeDelegation() + { + DateDemande = DateTime.Now, + Ep = epEnCours1, + IdReferent = new Guid("01ee85ff-d7f3-494b-b1de-26ced8fbfa0d"), + EtatDemande = EtatDemande.EnAttente, + RaisonDemande = "Raison quelconque 1" + }; + epEnCours2.DemandeDelegation = dm1; epContext.Ep.Add(epEnCours2); @@ -175,6 +185,15 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("a0f40e2a-cc03-4032-a627-5389e1281c64"), Obligatoire = false, }; + dm2 = new DemandeDelegation() + { + DateDemande = DateTime.Now, + Ep = epEnCours4, + IdReferent = new Guid("d4fc247b-015a-44d6-8f3e-a52f0902d2bf"), + EtatDemande = EtatDemande.EnAttente, + RaisonDemande = "Raison quelconque 2" + }; + epEnCours4.DemandeDelegation = dm2; epContext.Ep.Add(epEnCours4); epEnCours5 = new Ep() @@ -270,6 +289,15 @@ namespace EPAServeur.Context Obligatoire = true, }; epContext.Ep.Add(epEnCours8); + dm3 = new DemandeDelegation() + { + DateDemande = DateTime.Now, + Ep = epEnCours8, + IdReferent = new Guid("01ee85ff-d7f3-494b-b1de-26ced8fbfa0d"), + EtatDemande = EtatDemande.EnAttente, + RaisonDemande = "Raison quelconque 3" + }; + epEnCours8.DemandeDelegation = dm3; epEnCours9 = new Ep() { @@ -422,7 +450,7 @@ namespace EPAServeur.Context epSigne7.CommentairesAssistant = new List(); epSigne7.CommentairesAssistant.Add(ca3); epContext.Ep.Add(epSigne7); - + epSigne8 = new Ep() { DateDisponibilite = new DateTime(2020, 2, 13), diff --git a/EPAServeur/DTO/EpDTO.cs b/EPAServeur/DTO/EpDTO.cs index 8d7c904..9ab13b3 100644 --- a/EPAServeur/DTO/EpDTO.cs +++ b/EPAServeur/DTO/EpDTO.cs @@ -173,7 +173,7 @@ namespace IO.Swagger.DTO /// Gets or Sets DemandesDelegation /// [DataMember(Name="demandesDelegation")] - public List DemandesDelegation { get; set; } + public DemandeDelegationDTO DemandesDelegation { get; set; } /// /// Gets or Sets DemandeEPI @@ -371,7 +371,7 @@ namespace IO.Swagger.DTO ( DemandesDelegation == other.DemandesDelegation || DemandesDelegation != null && - DemandesDelegation.SequenceEqual(other.DemandesDelegation) + DemandesDelegation.Equals(other.DemandesDelegation) ) && ( DemandeEPI == other.DemandeEPI || diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs index ed7dffe..3b6e841 100644 --- a/EPAServeur/IServices/ITransformDTO.cs +++ b/EPAServeur/IServices/ITransformDTO.cs @@ -75,9 +75,9 @@ namespace EPAServeur.IServices List GetEngagementDTOs(List engagements); List GetParticipantsDTO(List participants, IEnumerable collaborateurDTOs); List GetCommentaireAssistant(List commentaireAssistant, IEnumerable collaborateurDTOs); + DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demandeDelegation, IEnumerable collaborateurDTOs); DemandeEPIDTO GetDemandeEPIDTO(DemandeEPI demande, IEnumerable collaborateurDTOs); AugmentationSalaireDTO GetAugmentationSalaireDTO(AugmentationSalaire augmentation); - DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demandeDelegation, IEnumerable collaborateurDTOs); RDVEntretienDTO GetRDVEntretienDTO(RdvEntretien rdvEntretien); TypeEntretienDTO GetEntretienDTO(ChoixTypeEntretien choixTypeEntretien); DemandeFormationDTO GetDemandeFormationDTOEP(DemandeFormation demandeFormation); diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 18c9efa..e49b8f4 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -30,6 +30,7 @@ namespace EPAServeur.Services .Include(ep => ep.Engagements) .Include(ep => ep.Participants) .Include(ep => ep.CommentairesAssistant) + .Include(ep => ep.DemandeDelegation) .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); @@ -43,7 +44,8 @@ namespace EPAServeur.Services guids.AddRange(ep.Participants.SelectMany(p => new[] { (Guid?)p.IdParticipant })); if (ep.CommentairesAssistant != null && ep.CommentairesAssistant.Any()) guids.AddRange(ep.CommentairesAssistant.SelectMany(p => new[] { (Guid?)p.IdAssistant })); - + if (ep.DemandeDelegation != null) + guids.Add(ep.DemandeDelegation.IdReferent); IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index 3f43355..9d4be93 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -63,7 +63,8 @@ namespace EPAServeur.Services Cv = ep.CV, Engagements = GetEngagementDTOs(ep.Engagements), Participants = GetParticipantsDTO(ep.Participants, collaborateurDTOs), - CommentairesAssistant = GetCommentaireAssistant(ep.CommentairesAssistant, collaborateurDTOs) + CommentairesAssistant = GetCommentaireAssistant(ep.CommentairesAssistant, collaborateurDTOs), + DemandesDelegation = GetDemandeDelegationDTO(ep.DemandeDelegation, collaborateurDTOs), }; } @@ -260,7 +261,19 @@ namespace EPAServeur.Services /// La demande de délégation transformé en DTO public DemandeDelegationDTO GetDemandeDelegationDTO(DemandeDelegation demandeDelegation, IEnumerable collaborateurDTOs) { - throw new NotImplementedException(); + if (demandeDelegation == null) + return null; + DemandeDelegationDTO demandeDelegationDTO = new DemandeDelegationDTO() + { + DateDemande = demandeDelegation.DateDemande, + DateReponse = demandeDelegation.DateReponse, + EtatDemande = demandeDelegation.EtatDemande, + Id = demandeDelegation.IdDemandeDelegation, + RaisonDemande = demandeDelegation.RaisonDemande, + RaisonRefus = demandeDelegation.RaisonRefus, + Referent = collaborateurDTOs.FirstOrDefault(c => c.Id.Equals(demandeDelegation.IdReferent)) + }; + return demandeDelegationDTO.Referent != null ? demandeDelegationDTO : null; } /// @@ -577,9 +590,7 @@ namespace EPAServeur.Services }); } } - if (participantsDTO.Any()) - return participantsDTO; - return null; + return participantsDTO.Any() ? participantsDTO : null; } /// From 5af948d0eadd313e6cf14338e39000e3eaf69cbe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Mon, 15 Mar 2021 10:47:01 +0100 Subject: [PATCH 06/10] =?UTF-8?q?Impl=C3=A9mantation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20du=20choix=20du=20rdventretien=20et=20des=20pro?= =?UTF-8?q?positions?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 41 ++++++++- EPAServeur/Context/DataSeeder.cs | 89 +++++++++++++++++-- EPAServeur/DTO/TypeEntretienDTO.cs | 2 +- EPAServeur/IServices/ITransformDTO.cs | 2 + EPAServeur/Services/EpDetailsService.cs | 2 + EPAServeur/Services/TransformDTO.cs | 43 +++++++-- 6 files changed, 160 insertions(+), 19 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index 0058240..fba6ccb 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -37,7 +37,7 @@ namespace EPAServeur.Tests.Services context.Database.EnsureDeleted(); context.Database.EnsureCreated(); context.SaveChanges(); - + DataSeeder.AddTypesEntretien(context); DataSeeder.AddEp(context); foreach (var entity in context.ChangeTracker.Entries()) @@ -166,10 +166,45 @@ namespace EPAServeur.Tests.Services } #endregion - #region Récupérer EP avec RDV entretiens + #region Récupérer EP avec RDV entretiens + [TestCase(2)] + [TestCase(5)] + [TestCase(12)] + public async Task GetEp_GetRDVEntretien(long idEp) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEp); + Assert.IsNotNull(epDTO); + Assert.IsNotNull(epDTO.RdvEntretien); + Assert.IsNotNull(epDTO.RdvEntretien.DateEntretien); + } + + [TestCase(1, 0)] + [TestCase(2, 3)] + [TestCase(5, 2)] + [TestCase(11, 0)] + [TestCase(13, 0)] + public async Task GetEp_GetPropositionRDVEntretien(long idEp, int count) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEp); + Assert.IsNotNull(epDTO); + if( count == 0) + { + Assert.IsNull(epDTO.PropositionsEntretien); + } + else + { + Assert.IsNotNull(epDTO.PropositionsEntretien); + Assert.AreEqual(epDTO.PropositionsEntretien.Count, count); + Assert.IsTrue(epDTO.PropositionsEntretien.Count <= 3); + Assert.IsTrue(epDTO.PropositionsEntretien.Count > 0); + Assert.Less(epDTO.Statut, StatutEp.Effectue); + } + } #endregion - #region Récupérer EP avec type entretien + #region Récupérer EP avec choix type entretien #endregion diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index d957ce7..65d3556 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -63,16 +63,16 @@ namespace EPAServeur.Context //TypeEntretien TypeEntretien typeSite, typeClient, typeVisio, typeTelephone; - typeSite = new TypeEntretien { Libelle = "Sur site" }; + typeSite = new TypeEntretien { IdTypeEntretien = 1, Libelle = "Sur site" }; epContext.TypeEntretien.Add(typeSite); - typeClient = new TypeEntretien { Libelle = "Chez le client" }; + typeClient = new TypeEntretien { IdTypeEntretien = 2, Libelle = "Chez le client" }; epContext.TypeEntretien.Add(typeClient); - typeVisio = new TypeEntretien { Libelle = "Visioconférence" }; + typeVisio = new TypeEntretien { IdTypeEntretien = 3, Libelle = "Visioconférence" }; epContext.TypeEntretien.Add(typeVisio); - typeTelephone = new TypeEntretien { Libelle = "Téléphonique" }; + typeTelephone = new TypeEntretien { IdTypeEntretien = 4, Libelle = "Téléphonique" }; epContext.TypeEntretien.Add(typeTelephone); epContext.SaveChanges(); @@ -84,11 +84,21 @@ namespace EPAServeur.Context /// public static void AddEp(EpContext epContext) { + TypeEntretien typeSite, typeClient, typeVisio, typeTelephone; + typeSite = epContext.TypeEntretien.Find((long)1); + typeClient = epContext.TypeEntretien.Find((long)2); + typeVisio = epContext.TypeEntretien.Find((long)3); + typeTelephone = epContext.TypeEntretien.Find((long)4); + Engagement eg1, eg2, eg3, eg4; ParticipationEP p1, p2, p3, p4, p5; CommentaireAssistant ca1, ca2, ca3; DemandeDelegation dm1, dm2, dm3; - + RdvEntretien rdv1, rdv2, rdv3; + + RdvEntretien proposition1, proposition2, proposition3; + + //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; @@ -141,6 +151,32 @@ namespace EPAServeur.Context RaisonDemande = "Raison quelconque 1" }; epEnCours2.DemandeDelegation = dm1; + + rdv1 = new RdvEntretien() + { + IdRdvEntretien = 1, + DateEntretien = new DateTime(), + EpChoixRDV = epEnCours2, + TypeEntretien = typeClient, + EpProposition = epEnCours2 + }; + + epEnCours2.RdvEntretien = rdv1; + proposition1 = new RdvEntretien() + { + DateEntretien = new DateTime(), + EpProposition = epEnCours2, + IdRdvEntretien = 2, + TypeEntretien = typeSite + }; + proposition2 = new RdvEntretien() + { + DateEntretien = new DateTime(), + EpProposition = epEnCours2, + IdRdvEntretien = 3, + TypeEntretien = typeVisio + }; + epEnCours2.PropositionsRDV = new List(new[] { rdv1, proposition1, proposition2 }); epContext.Ep.Add(epEnCours2); @@ -170,7 +206,10 @@ namespace EPAServeur.Context EstPermanente = false }; epEnCours3.Participants = new List(new[] { p1, p2 }); - + + + + epContext.Ep.Add(epEnCours3); epEnCours4 = new Ep() @@ -208,6 +247,8 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("17b87130-0e9d-4b78-b0e3-a11e5f70318d"), Obligatoire = true, }; + + p3 = new ParticipationEP() { Ep = epEnCours5, @@ -215,6 +256,29 @@ namespace EPAServeur.Context EstPermanente = false }; epEnCours5.Participants = new List(new[] { p3 }); + + rdv2 = new RdvEntretien() + { + DateEntretien = new DateTime(), + EpProposition = epEnCours5, + IdRdvEntretien = 4, + TypeEntretien = typeSite, + EpChoixRDV = epEnCours5 + }; + + proposition3 = new RdvEntretien() + { + DateEntretien = new DateTime(), + EpProposition = epEnCours5, + IdRdvEntretien = 5, + TypeEntretien = typeSite + }; + + + + epEnCours5.PropositionsRDV = new List(new[] { rdv2, proposition3 }); + epEnCours5.RdvEntretien = rdv2; + epContext.Ep.Add(epEnCours5); epEnCours6 = new Ep() @@ -384,8 +448,21 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("b5254c6c-7caa-435f-a4bb-e0cf92559832"), Obligatoire = false, }; + + rdv3 = new RdvEntretien() + { + IdRdvEntretien = 6, + TypeEntretien = typeVisio, + DateEntretien = new DateTime(), + EpChoixRDV = epSigne3 + }; + + epSigne3.RdvEntretien = rdv3; epContext.Ep.Add(epSigne3); + + + epSigne4 = new Ep() { DateDisponibilite = new DateTime(2017, 1, 20), diff --git a/EPAServeur/DTO/TypeEntretienDTO.cs b/EPAServeur/DTO/TypeEntretienDTO.cs index d7cda37..6f1ece4 100644 --- a/EPAServeur/DTO/TypeEntretienDTO.cs +++ b/EPAServeur/DTO/TypeEntretienDTO.cs @@ -32,7 +32,7 @@ namespace IO.Swagger.DTO /// Id du type de l'entretien [Required] [DataMember(Name="id")] - public int? Id { get; set; } + public long? Id { get; set; } /// /// Texte du type de l'entretien diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs index 3b6e841..0f1249d 100644 --- a/EPAServeur/IServices/ITransformDTO.cs +++ b/EPAServeur/IServices/ITransformDTO.cs @@ -80,6 +80,8 @@ namespace EPAServeur.IServices AugmentationSalaireDTO GetAugmentationSalaireDTO(AugmentationSalaire augmentation); RDVEntretienDTO GetRDVEntretienDTO(RdvEntretien rdvEntretien); TypeEntretienDTO GetEntretienDTO(ChoixTypeEntretien choixTypeEntretien); + TypeEntretienDTO GetEntretienDTO(TypeEntretien typeEntretien); + List GetRDVEntretienDTOs(List rdvEntretiens); DemandeFormationDTO GetDemandeFormationDTOEP(DemandeFormation demandeFormation); DocumentDTO GetDocumentDTO(Document document); ObjectifDTO GetObjectifDTO(Objectif objectif); diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index e49b8f4..28babed 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -31,6 +31,8 @@ namespace EPAServeur.Services .Include(ep => ep.Participants) .Include(ep => ep.CommentairesAssistant) .Include(ep => ep.DemandeDelegation) + .Include(ep => ep.RdvEntretien).ThenInclude(rdv => rdv.TypeEntretien) + .Include(ep => ep.PropositionsRDV).ThenInclude(rdv => rdv.TypeEntretien) .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index 9d4be93..cac4444 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -65,6 +65,8 @@ namespace EPAServeur.Services Participants = GetParticipantsDTO(ep.Participants, collaborateurDTOs), CommentairesAssistant = GetCommentaireAssistant(ep.CommentairesAssistant, collaborateurDTOs), DemandesDelegation = GetDemandeDelegationDTO(ep.DemandeDelegation, collaborateurDTOs), + RdvEntretien = GetRDVEntretienDTO(ep.RdvEntretien), + PropositionsEntretien = GetRDVEntretienDTOs(ep.PropositionsRDV) }; } @@ -338,14 +340,23 @@ namespace EPAServeur.Services throw new NotImplementedException(); } - /// - /// Transformer un objet Ep en objet EpInformationDTO. - /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Referent de l'objet EpInformationDTO. - /// - /// - /// - /// - public EpInformationDTO GetEpInformationDTO(Ep ep, IEnumerable collaborateurs) + public TypeEntretienDTO GetEntretienDTO(TypeEntretien typeEntretien) + { + return new TypeEntretienDTO() + { + Id = typeEntretien.IdTypeEntretien, + Libelle = typeEntretien.Libelle + }; + } + + /// + /// Transformer un objet Ep en objet EpInformationDTO. + /// La liste de collaborateurs est utilisé pour alimenter la propriété Collaborateur et la propriété Referent de l'objet EpInformationDTO. + /// + /// + /// + /// + public EpInformationDTO GetEpInformationDTO(Ep ep, IEnumerable collaborateurs) { CollaborateurDTO collaborateur; CollaborateurDTO referent; @@ -643,7 +654,21 @@ namespace EPAServeur.Services public RDVEntretienDTO GetRDVEntretienDTO(RdvEntretien rdvEntretien) { - throw new NotImplementedException(); + if (rdvEntretien == null) + return null; + return new RDVEntretienDTO() + { + Id = rdvEntretien.IdRdvEntretien, + DateEntretien = rdvEntretien.DateEntretien, + TypeEntretien = GetEntretienDTO(rdvEntretien.TypeEntretien) + }; + } + + public List GetRDVEntretienDTOs(List rdvEntretiens) + { + if (rdvEntretiens == null || !rdvEntretiens.Any()) + return null; + return rdvEntretiens.Select(rdv => GetRDVEntretienDTO(rdv)).ToList(); } From 6197d6d0a6df267d70fe3f8a81972a91bb8d1309 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Mon, 15 Mar 2021 11:38:13 +0100 Subject: [PATCH 07/10] =?UTF-8?q?R=C3=A9cup=C3=A9ration=20du=20nom=20et=20?= =?UTF-8?q?du=20pr=C3=A9nom=20de=20l'assistant=20qui=20a=20=C3=A9crit=20la?= =?UTF-8?q?=20note?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- EPAServeur/DTO/CommentaireAssistantDTO.cs | 55 ++++++++++++++--------- EPAServeur/Services/EpDetailsService.cs | 6 ++- EPAServeur/Services/TransformDTO.cs | 3 +- 3 files changed, 41 insertions(+), 23 deletions(-) diff --git a/EPAServeur/DTO/CommentaireAssistantDTO.cs b/EPAServeur/DTO/CommentaireAssistantDTO.cs index b3f3568..4f9427a 100644 --- a/EPAServeur/DTO/CommentaireAssistantDTO.cs +++ b/EPAServeur/DTO/CommentaireAssistantDTO.cs @@ -3,7 +3,7 @@ * * API qui sra utilisée afin de faire communiquer le client et le serveur ainsi que le serveur et la boîte noire. * - * OpenAPI spec version: 1.3.6 + * OpenAPI spec version: 1.3.7 * * Generated by: https://github.com/swagger-api/swagger-codegen.git */ @@ -19,33 +19,40 @@ using System.Runtime.Serialization; using Newtonsoft.Json; namespace IO.Swagger.DTO -{ +{ /// /// DTO contenant le commentaire d'un assistant sur l'EP. /// [DataContract] public partial class CommentaireAssistantDTO : IEquatable - { + { /// /// Id du commentaire assistant /// /// Id du commentaire assistant - [DataMember(Name="id")] + [DataMember(Name = "id")] public long? Id { get; set; } /// /// Id de l'assistant qui a écrit le commentaire /// /// Id de l'assistant qui a écrit le commentaire - [DataMember(Name="idAssistante")] - public Guid? IdAssistante { get; set; } + [Required] + [DataMember(Name = "idAssistant")] + public Guid? IdAssistant { get; set; } + + /// + /// Gets or Sets Assistant + /// + [DataMember(Name = "assistant")] + public string Assistant { get; set; } /// /// Le commentaire de l’assistant /// /// Le commentaire de l’assistant [Required] - [DataMember(Name="commentaire")] + [DataMember(Name = "commentaire")] public string Commentaire { get; set; } /// @@ -57,7 +64,8 @@ namespace IO.Swagger.DTO var sb = new StringBuilder(); sb.Append("class CommentaireAssistantDTO {\n"); sb.Append(" Id: ").Append(Id).Append("\n"); - sb.Append(" IdAssistante: ").Append(IdAssistante).Append("\n"); + sb.Append(" IdAssistant: ").Append(IdAssistant).Append("\n"); + sb.Append(" Assistant: ").Append(Assistant).Append("\n"); sb.Append(" Commentaire: ").Append(Commentaire).Append("\n"); sb.Append("}\n"); return sb.ToString(); @@ -94,17 +102,22 @@ namespace IO.Swagger.DTO if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; - return + return ( Id == other.Id || Id != null && Id.Equals(other.Id) - ) && + ) && + ( + IdAssistant == other.IdAssistant || + IdAssistant != null && + IdAssistant.Equals(other.IdAssistant) + ) && ( - IdAssistante == other.IdAssistante || - IdAssistante != null && - IdAssistante.Equals(other.IdAssistante) - ) && + Assistant == other.Assistant || + Assistant != null && + Assistant.Equals(other.Assistant) + ) && ( Commentaire == other.Commentaire || Commentaire != null && @@ -122,18 +135,20 @@ namespace IO.Swagger.DTO { var hashCode = 41; // Suitable nullity checks etc, of course :) - if (Id != null) + if (Id != null) hashCode = hashCode * 59 + Id.GetHashCode(); - if (IdAssistante != null) - hashCode = hashCode * 59 + IdAssistante.GetHashCode(); - if (Commentaire != null) + if (IdAssistant != null) + hashCode = hashCode * 59 + IdAssistant.GetHashCode(); + if (Assistant != null) + hashCode = hashCode * 59 + Assistant.GetHashCode(); + if (Commentaire != null) hashCode = hashCode * 59 + Commentaire.GetHashCode(); return hashCode; } } #region Operators - #pragma warning disable 1591 +#pragma warning disable 1591 public static bool operator ==(CommentaireAssistantDTO left, CommentaireAssistantDTO right) { @@ -145,7 +160,7 @@ namespace IO.Swagger.DTO return !Equals(left, right); } - #pragma warning restore 1591 +#pragma warning restore 1591 #endregion Operators } } diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 28babed..232804b 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -38,8 +38,10 @@ namespace EPAServeur.Services 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); + List guids = new List + { + ep.IdCollaborateur + }; if (ep.IdReferent.HasValue) guids.Add(ep.IdCollaborateur); if (ep.Participants != null && ep.Participants.Any()) diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index cac4444..b01c7ce 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -225,7 +225,8 @@ namespace EPAServeur.Services { Commentaire = ca.Commentaire, Id = ca.IdCommentaireAssistant, - IdAssistante = ca.IdAssistant + IdAssistant = ca.IdAssistant, + Assistant = c.Nom + " " + c.Prenom }); } } From b59e2d9617c5b91a95e262d29b2a38eb9e514b45 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Mon, 15 Mar 2021 14:30:49 +0100 Subject: [PATCH 08/10] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20des=20choix=20de=20type=20d'entretien?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 24 ++- EPAServeur/Context/DataSeeder.cs | 58 ++++++- EPAServeur/Context/EpContext.cs | 4 +- EPAServeur/DTO/EpDTO.cs | 164 +++++++++--------- EPAServeur/IServices/ITransformDTO.cs | 5 +- EPAServeur/Models/EP/ChoixTypeEntretien.cs | 4 + EPAServeur/Services/EpDetailsService.cs | 1 + EPAServeur/Services/TransformDTO.cs | 32 ++-- 8 files changed, 190 insertions(+), 102 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index fba6ccb..ad182cf 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -205,6 +205,28 @@ namespace EPAServeur.Tests.Services #endregion #region Récupérer EP avec choix type entretien + [TestCase(1, 0)] + [TestCase(2, 4)] + [TestCase(4, 1)] + [TestCase(5, 2)] + [TestCase(10, 0)] + [TestCase(12, 0)] + public async Task GetEp_GetChoixTypeEntretien(long idEp, int count) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEp); + Assert.IsNotNull(epDTO); + if (count == 0) + { + Assert.IsNull(epDTO.ChoixTypeEntretien); + } + else + { + Assert.IsNotNull(epDTO.ChoixTypeEntretien); + Assert.AreEqual(epDTO.ChoixTypeEntretien.Count, count); + Assert.Less(epDTO.Statut, StatutEp.Effectue); + } + } #endregion @@ -217,7 +239,7 @@ namespace EPAServeur.Tests.Services - #region + #region Demande EPI #endregion #region diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index 65d3556..442cc2e 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -98,6 +98,8 @@ namespace EPAServeur.Context RdvEntretien proposition1, proposition2, proposition3; + ChoixTypeEntretien choix1, choix2, choix3, choix4, choix5, choix6, choix7; + //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; @@ -177,6 +179,34 @@ namespace EPAServeur.Context TypeEntretien = typeVisio }; epEnCours2.PropositionsRDV = new List(new[] { rdv1, proposition1, proposition2 }); + + choix1 = new ChoixTypeEntretien() + { + Ep = epEnCours2, + Ordre = 0, + TypeEntretien = typeClient + }; + + choix2 = new ChoixTypeEntretien() + { + Ep = epEnCours2, + Ordre = 1, + TypeEntretien = typeSite + }; + + choix3 = new ChoixTypeEntretien() + { + Ep = epEnCours2, + Ordre = 2, + TypeEntretien = typeVisio + }; + choix4 = new ChoixTypeEntretien() + { + Ep = epEnCours2, + Ordre = 3, + TypeEntretien = typeTelephone + }; + epEnCours2.ChoixTypeEntretien = new List() { choix1, choix2, choix3, choix4 }; epContext.Ep.Add(epEnCours2); @@ -233,6 +263,16 @@ namespace EPAServeur.Context RaisonDemande = "Raison quelconque 2" }; epEnCours4.DemandeDelegation = dm2; + + choix5 = new ChoixTypeEntretien() + { + Ep = epEnCours4, + Ordre = 0, + TypeEntretien = typeSite + }; + + epEnCours4.ChoixTypeEntretien = new List() { choix5 }; + epContext.Ep.Add(epEnCours4); epEnCours5 = new Ep() @@ -271,7 +311,7 @@ namespace EPAServeur.Context DateEntretien = new DateTime(), EpProposition = epEnCours5, IdRdvEntretien = 5, - TypeEntretien = typeSite + TypeEntretien = typeVisio }; @@ -279,6 +319,22 @@ namespace EPAServeur.Context epEnCours5.PropositionsRDV = new List(new[] { rdv2, proposition3 }); epEnCours5.RdvEntretien = rdv2; + choix6 = new ChoixTypeEntretien() + { + Ep = epEnCours5, + Ordre = 0, + TypeEntretien = typeSite + }; + + + choix7 = new ChoixTypeEntretien() + { + Ep = epEnCours5, + Ordre = 1, + TypeEntretien = typeVisio + }; + + epEnCours5.ChoixTypeEntretien = new List() { choix6, choix7 }; epContext.Ep.Add(epEnCours5); epEnCours6 = new Ep() diff --git a/EPAServeur/Context/EpContext.cs b/EPAServeur/Context/EpContext.cs index 104fdde..f8614a1 100644 --- a/EPAServeur/Context/EpContext.cs +++ b/EPAServeur/Context/EpContext.cs @@ -107,6 +107,7 @@ namespace EPAServeur.Context { entity.HasKey(e => e.IdRdvEntretien); entity.Property(e => e.IdRdvEntretien).ValueGeneratedOnAdd(); + entity.HasOne(e => e.TypeEntretien).WithMany(t => t.RdvEntretiens); }); modelBuilder.Entity(entity => @@ -116,7 +117,7 @@ namespace EPAServeur.Context modelBuilder.Entity(entity => { - entity.HasKey(e => e.Ordre); + entity.HasKey(e => e.IdChoixTypeEntretien); }); @@ -141,6 +142,7 @@ namespace EPAServeur.Context { entity.HasKey(e => e.IdTypeEntretien); entity.HasIndex(e => e.Libelle).IsUnique(); + entity.HasMany(e => e.ChoixTypeEntretien).WithOne(c => c.TypeEntretien); }); modelBuilder.Entity(entity => diff --git a/EPAServeur/DTO/EpDTO.cs b/EPAServeur/DTO/EpDTO.cs index 9ab13b3..d498ffc 100644 --- a/EPAServeur/DTO/EpDTO.cs +++ b/EPAServeur/DTO/EpDTO.cs @@ -3,7 +3,7 @@ * * API qui sra utilisée afin de faire communiquer le client et le serveur ainsi que le serveur et la boîte noire. * - * OpenAPI spec version: 1.3.6 + * OpenAPI spec version: 1.3.7 * * Generated by: https://github.com/swagger-api/swagger-codegen.git */ @@ -20,26 +20,26 @@ using Newtonsoft.Json; using IO.Swagger.Enum; namespace IO.Swagger.DTO -{ +{ /// /// DTO contenant l'ensemble des informations d'un EP. /// [DataContract] public partial class EpDTO : IEquatable - { + { /// /// Id de l’EP /// /// Id de l’EP [Required] - [DataMember(Name="id")] + [DataMember(Name = "id")] public long? Id { get; set; } /// /// Gets or Sets Type /// [Required] - [DataMember(Name="type")] + [DataMember(Name = "type")] public TypeEp Type { get; set; } /// @@ -47,7 +47,7 @@ namespace IO.Swagger.DTO /// /// Date à partir de laquelle l'EP peut être saisi [Required] - [DataMember(Name="dateDisponibilite")] + [DataMember(Name = "dateDisponibilite")] public DateTime? DateDisponibilite { get; set; } /// @@ -55,35 +55,35 @@ namespace IO.Swagger.DTO /// /// Date à laquelle l'EP est prévu, la date par défaut est celle de l'anniversaire du collaborateur (+6 mois pour EPS) [Required] - [DataMember(Name="datePrevisionnelle")] + [DataMember(Name = "datePrevisionnelle")] public DateTime? DatePrevisionnelle { get; set; } /// /// Date à laquelle le collaborateur a signé l'EP /// /// Date à laquelle le collaborateur a signé l'EP - [DataMember(Name="dateSignatureCollaborateur")] + [DataMember(Name = "dateSignatureCollaborateur")] public DateTime? DateSignatureCollaborateur { get; set; } /// /// Date à laquelle le référent a signé l'EP /// /// Date à laquelle le référent a signé l'EP - [DataMember(Name="dateSignatureReferent")] + [DataMember(Name = "dateSignatureReferent")] public DateTime? DateSignatureReferent { get; set; } /// /// Date à laquelle l’EP a été saisi par le collaborateur /// /// Date à laquelle l’EP a été saisi par le collaborateur - [DataMember(Name="dateSaisie")] + [DataMember(Name = "dateSaisie")] public DateTime? DateSaisie { get; set; } /// /// Gets or Sets Statut /// [Required] - [DataMember(Name="statut")] + [DataMember(Name = "statut")] public StatutEp Statut { get; set; } /// @@ -91,107 +91,107 @@ namespace IO.Swagger.DTO /// /// Nom du CV Apside du collaborateur [Required] - [DataMember(Name="cv")] + [DataMember(Name = "cv")] public string Cv { get; set; } /// /// Gets or Sets PropositionsEntretien /// - [DataMember(Name="propositionsEntretien")] + [DataMember(Name = "propositionsEntretien")] public List PropositionsEntretien { get; set; } /// /// Gets or Sets RdvEntretien /// - [DataMember(Name="rdvEntretien")] + [DataMember(Name = "rdvEntretien")] public RDVEntretienDTO RdvEntretien { get; set; } /// /// Gets or Sets ChoixTypeEntretien /// - [DataMember(Name="choixTypeEntretien")] - public TypeEntretienDTO ChoixTypeEntretien { get; set; } + [DataMember(Name = "choixTypeEntretien")] + public List ChoixTypeEntretien { get; set; } /// /// Indique si oui ou non l'EP doit obligatoirement être effectué /// /// Indique si oui ou non l'EP doit obligatoirement être effectué [Required] - [DataMember(Name="obligatoire")] + [DataMember(Name = "obligatoire")] public bool? Obligatoire { get; set; } /// /// Gets or Sets Objectifs /// [Required] - [DataMember(Name="objectifs")] + [DataMember(Name = "objectifs")] public List Objectifs { get; set; } /// /// Gets or Sets ObjectifsPrecedent /// - [DataMember(Name="objectifsPrecedent")] + [DataMember(Name = "objectifsPrecedent")] public List ObjectifsPrecedent { get; set; } /// /// Gets or Sets Collaborateur /// - [DataMember(Name="collaborateur")] + [DataMember(Name = "collaborateur")] public CollaborateurDTO Collaborateur { get; set; } /// /// Gets or Sets Referent /// - [DataMember(Name="referent")] + [DataMember(Name = "referent")] public CollaborateurDTO Referent { get; set; } /// /// Gets or Sets DemandesFormation /// - [DataMember(Name="demandesFormation")] + [DataMember(Name = "demandesFormation")] public List DemandesFormation { get; set; } /// /// Gets or Sets Participants /// - [DataMember(Name="participants")] + [DataMember(Name = "participants")] public List Participants { get; set; } /// /// Gets or Sets Engagements /// - [DataMember(Name="engagements")] + [DataMember(Name = "engagements")] public List Engagements { get; set; } /// /// Gets or Sets AugmentationSalaire /// - [DataMember(Name="augmentationSalaire")] + [DataMember(Name = "augmentationSalaire")] public AugmentationSalaireDTO AugmentationSalaire { get; set; } /// /// Gets or Sets DemandesDelegation /// - [DataMember(Name="demandesDelegation")] + [DataMember(Name = "demandesDelegation")] public DemandeDelegationDTO DemandesDelegation { get; set; } /// /// Gets or Sets DemandeEPI /// - [DataMember(Name="demandeEPI")] + [DataMember(Name = "demandeEPI")] public DemandeEPIDTO DemandeEPI { get; set; } /// /// Gets or Sets Documents /// [Required] - [DataMember(Name="documents")] + [DataMember(Name = "documents")] public List Documents { get; set; } /// /// Gets or Sets CommentairesAssistant /// - [DataMember(Name="commentairesAssistant")] + [DataMember(Name = "commentairesAssistant")] public List CommentairesAssistant { get; set; } /// @@ -262,127 +262,127 @@ namespace IO.Swagger.DTO if (ReferenceEquals(null, other)) return false; if (ReferenceEquals(this, other)) return true; - return + return ( Id == other.Id || Id != null && Id.Equals(other.Id) - ) && + ) && ( Type == other.Type || Type != null && Type.Equals(other.Type) - ) && + ) && ( DateDisponibilite == other.DateDisponibilite || DateDisponibilite != null && DateDisponibilite.Equals(other.DateDisponibilite) - ) && + ) && ( DatePrevisionnelle == other.DatePrevisionnelle || DatePrevisionnelle != null && DatePrevisionnelle.Equals(other.DatePrevisionnelle) - ) && + ) && ( DateSignatureCollaborateur == other.DateSignatureCollaborateur || DateSignatureCollaborateur != null && DateSignatureCollaborateur.Equals(other.DateSignatureCollaborateur) - ) && + ) && ( DateSignatureReferent == other.DateSignatureReferent || DateSignatureReferent != null && DateSignatureReferent.Equals(other.DateSignatureReferent) - ) && + ) && ( DateSaisie == other.DateSaisie || DateSaisie != null && DateSaisie.Equals(other.DateSaisie) - ) && + ) && ( Statut == other.Statut || Statut != null && Statut.Equals(other.Statut) - ) && + ) && ( Cv == other.Cv || Cv != null && Cv.Equals(other.Cv) - ) && + ) && ( PropositionsEntretien == other.PropositionsEntretien || PropositionsEntretien != null && PropositionsEntretien.SequenceEqual(other.PropositionsEntretien) - ) && + ) && ( RdvEntretien == other.RdvEntretien || RdvEntretien != null && RdvEntretien.Equals(other.RdvEntretien) - ) && + ) && ( ChoixTypeEntretien == other.ChoixTypeEntretien || ChoixTypeEntretien != null && - ChoixTypeEntretien.Equals(other.ChoixTypeEntretien) - ) && + ChoixTypeEntretien.SequenceEqual(other.ChoixTypeEntretien) + ) && ( Obligatoire == other.Obligatoire || Obligatoire != null && Obligatoire.Equals(other.Obligatoire) - ) && + ) && ( Objectifs == other.Objectifs || Objectifs != null && Objectifs.SequenceEqual(other.Objectifs) - ) && + ) && ( ObjectifsPrecedent == other.ObjectifsPrecedent || ObjectifsPrecedent != null && ObjectifsPrecedent.SequenceEqual(other.ObjectifsPrecedent) - ) && + ) && ( Collaborateur == other.Collaborateur || Collaborateur != null && Collaborateur.Equals(other.Collaborateur) - ) && + ) && ( Referent == other.Referent || Referent != null && Referent.Equals(other.Referent) - ) && + ) && ( DemandesFormation == other.DemandesFormation || DemandesFormation != null && DemandesFormation.SequenceEqual(other.DemandesFormation) - ) && + ) && ( Participants == other.Participants || Participants != null && Participants.SequenceEqual(other.Participants) - ) && + ) && ( Engagements == other.Engagements || Engagements != null && Engagements.SequenceEqual(other.Engagements) - ) && + ) && ( AugmentationSalaire == other.AugmentationSalaire || AugmentationSalaire != null && AugmentationSalaire.Equals(other.AugmentationSalaire) - ) && + ) && ( DemandesDelegation == other.DemandesDelegation || DemandesDelegation != null && DemandesDelegation.Equals(other.DemandesDelegation) - ) && + ) && ( DemandeEPI == other.DemandeEPI || DemandeEPI != null && DemandeEPI.Equals(other.DemandeEPI) - ) && + ) && ( Documents == other.Documents || Documents != null && Documents.SequenceEqual(other.Documents) - ) && + ) && ( CommentairesAssistant == other.CommentairesAssistant || CommentairesAssistant != null && @@ -400,62 +400,62 @@ namespace IO.Swagger.DTO { var hashCode = 41; // Suitable nullity checks etc, of course :) - if (Id != null) + if (Id != null) hashCode = hashCode * 59 + Id.GetHashCode(); - if (Type != null) + if (Type != null) hashCode = hashCode * 59 + Type.GetHashCode(); - if (DateDisponibilite != null) + if (DateDisponibilite != null) hashCode = hashCode * 59 + DateDisponibilite.GetHashCode(); - if (DatePrevisionnelle != null) + if (DatePrevisionnelle != null) hashCode = hashCode * 59 + DatePrevisionnelle.GetHashCode(); - if (DateSignatureCollaborateur != null) + if (DateSignatureCollaborateur != null) hashCode = hashCode * 59 + DateSignatureCollaborateur.GetHashCode(); - if (DateSignatureReferent != null) + if (DateSignatureReferent != null) hashCode = hashCode * 59 + DateSignatureReferent.GetHashCode(); - if (DateSaisie != null) + if (DateSaisie != null) hashCode = hashCode * 59 + DateSaisie.GetHashCode(); - if (Statut != null) + if (Statut != null) hashCode = hashCode * 59 + Statut.GetHashCode(); - if (Cv != null) + if (Cv != null) hashCode = hashCode * 59 + Cv.GetHashCode(); - if (PropositionsEntretien != null) + if (PropositionsEntretien != null) hashCode = hashCode * 59 + PropositionsEntretien.GetHashCode(); - if (RdvEntretien != null) + if (RdvEntretien != null) hashCode = hashCode * 59 + RdvEntretien.GetHashCode(); - if (ChoixTypeEntretien != null) + if (ChoixTypeEntretien != null) hashCode = hashCode * 59 + ChoixTypeEntretien.GetHashCode(); - if (Obligatoire != null) + if (Obligatoire != null) hashCode = hashCode * 59 + Obligatoire.GetHashCode(); - if (Objectifs != null) + if (Objectifs != null) hashCode = hashCode * 59 + Objectifs.GetHashCode(); - if (ObjectifsPrecedent != null) + if (ObjectifsPrecedent != null) hashCode = hashCode * 59 + ObjectifsPrecedent.GetHashCode(); - if (Collaborateur != null) + if (Collaborateur != null) hashCode = hashCode * 59 + Collaborateur.GetHashCode(); - if (Referent != null) + if (Referent != null) hashCode = hashCode * 59 + Referent.GetHashCode(); - if (DemandesFormation != null) + if (DemandesFormation != null) hashCode = hashCode * 59 + DemandesFormation.GetHashCode(); - if (Participants != null) + if (Participants != null) hashCode = hashCode * 59 + Participants.GetHashCode(); - if (Engagements != null) + if (Engagements != null) hashCode = hashCode * 59 + Engagements.GetHashCode(); - if (AugmentationSalaire != null) + if (AugmentationSalaire != null) hashCode = hashCode * 59 + AugmentationSalaire.GetHashCode(); - if (DemandesDelegation != null) + if (DemandesDelegation != null) hashCode = hashCode * 59 + DemandesDelegation.GetHashCode(); - if (DemandeEPI != null) + if (DemandeEPI != null) hashCode = hashCode * 59 + DemandeEPI.GetHashCode(); - if (Documents != null) + if (Documents != null) hashCode = hashCode * 59 + Documents.GetHashCode(); - if (CommentairesAssistant != null) + if (CommentairesAssistant != null) hashCode = hashCode * 59 + CommentairesAssistant.GetHashCode(); return hashCode; } } #region Operators - #pragma warning disable 1591 +#pragma warning disable 1591 public static bool operator ==(EpDTO left, EpDTO right) { @@ -467,7 +467,7 @@ namespace IO.Swagger.DTO return !Equals(left, right); } - #pragma warning restore 1591 +#pragma warning restore 1591 #endregion Operators } } diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs index 0f1249d..00be403 100644 --- a/EPAServeur/IServices/ITransformDTO.cs +++ b/EPAServeur/IServices/ITransformDTO.cs @@ -79,10 +79,9 @@ namespace EPAServeur.IServices DemandeEPIDTO GetDemandeEPIDTO(DemandeEPI demande, IEnumerable collaborateurDTOs); AugmentationSalaireDTO GetAugmentationSalaireDTO(AugmentationSalaire augmentation); RDVEntretienDTO GetRDVEntretienDTO(RdvEntretien rdvEntretien); - TypeEntretienDTO GetEntretienDTO(ChoixTypeEntretien choixTypeEntretien); - TypeEntretienDTO GetEntretienDTO(TypeEntretien typeEntretien); + TypeEntretienDTO GetTypeEntretienDTO(TypeEntretien typeEntretien); List GetRDVEntretienDTOs(List rdvEntretiens); - DemandeFormationDTO GetDemandeFormationDTOEP(DemandeFormation demandeFormation); + List GetTypeEntretienDTOs(List choixTypeEntretiens); DocumentDTO GetDocumentDTO(Document document); ObjectifDTO GetObjectifDTO(Objectif objectif); ObjectifPrecedentDTO GetObjectifPrecedentDTO(ObjectifPrecedent objectifPrecedent); diff --git a/EPAServeur/Models/EP/ChoixTypeEntretien.cs b/EPAServeur/Models/EP/ChoixTypeEntretien.cs index 5acdda4..ed215fa 100644 --- a/EPAServeur/Models/EP/ChoixTypeEntretien.cs +++ b/EPAServeur/Models/EP/ChoixTypeEntretien.cs @@ -10,6 +10,10 @@ namespace EPAServeur.Models.EP /// public class ChoixTypeEntretien { + /// + /// Id + /// + public long IdChoixTypeEntretien { get; internal set; } /// /// Numéro d’ordre de préférence /// diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 232804b..313aa62 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -33,6 +33,7 @@ namespace EPAServeur.Services .Include(ep => ep.DemandeDelegation) .Include(ep => ep.RdvEntretien).ThenInclude(rdv => rdv.TypeEntretien) .Include(ep => ep.PropositionsRDV).ThenInclude(rdv => rdv.TypeEntretien) + .Include(ep => ep.ChoixTypeEntretien).ThenInclude( c => c.TypeEntretien) .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index b01c7ce..99cf8db 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -66,7 +66,8 @@ namespace EPAServeur.Services CommentairesAssistant = GetCommentaireAssistant(ep.CommentairesAssistant, collaborateurDTOs), DemandesDelegation = GetDemandeDelegationDTO(ep.DemandeDelegation, collaborateurDTOs), RdvEntretien = GetRDVEntretienDTO(ep.RdvEntretien), - PropositionsEntretien = GetRDVEntretienDTOs(ep.PropositionsRDV) + PropositionsEntretien = GetRDVEntretienDTOs(ep.PropositionsRDV), + ChoixTypeEntretien = GetTypeEntretienDTOs(ep.ChoixTypeEntretien) }; } @@ -336,12 +337,7 @@ namespace EPAServeur.Services return engagements.Select(engagment => GetEngagementDTO(engagment, null, false)).ToList(); } - public TypeEntretienDTO GetEntretienDTO(ChoixTypeEntretien choixTypeEntretien) - { - throw new NotImplementedException(); - } - - public TypeEntretienDTO GetEntretienDTO(TypeEntretien typeEntretien) + public TypeEntretienDTO GetTypeEntretienDTO(TypeEntretien typeEntretien) { return new TypeEntretienDTO() { @@ -661,7 +657,7 @@ namespace EPAServeur.Services { Id = rdvEntretien.IdRdvEntretien, DateEntretien = rdvEntretien.DateEntretien, - TypeEntretien = GetEntretienDTO(rdvEntretien.TypeEntretien) + TypeEntretien = GetTypeEntretienDTO(rdvEntretien.TypeEntretien) }; } @@ -754,12 +750,20 @@ namespace EPAServeur.Services return statutFormationDTO; } - /// - /// Transformer un objet TypeFormationDTO en objet TypeFormation. - /// - /// - /// - public TypeFormation GetTypeFormation(TypeFormationDTO typeFormationDTO) + public List GetTypeEntretienDTOs(List choixTypeEntretiens) + { + if (choixTypeEntretiens == null || !choixTypeEntretiens.Any()) + return null; + return choixTypeEntretiens.OrderBy(c => c.Ordre).Select(c => GetTypeEntretienDTO(c.TypeEntretien)).ToList(); + + } + + /// + /// Transformer un objet TypeFormationDTO en objet TypeFormation. + /// + /// + /// + public TypeFormation GetTypeFormation(TypeFormationDTO typeFormationDTO) { if (typeFormationDTO == null) return null; From c54d9fc48b927a0f0ada8ffa4c567f21ebe4392c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Mon, 15 Mar 2021 15:06:57 +0100 Subject: [PATCH 09/10] =?UTF-8?q?Impl=C3=A9mentation=20de=20la=20r=C3=A9cu?= =?UTF-8?q?p=C3=A9ration=20des=20objectifs=20et=20objectifs=20pr=C3=A9c?= =?UTF-8?q?=C3=A9dents?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 26 +++++++++++-- EPAServeur/Context/DataSeeder.cs | 30 ++++++++++++++ EPAServeur/IServices/ITransformDTO.cs | 4 +- EPAServeur/Services/EpDetailsService.cs | 2 + EPAServeur/Services/TransformDTO.cs | 39 +++++++++++++------ 5 files changed, 85 insertions(+), 16 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index ad182cf..423a97c 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -230,6 +230,29 @@ namespace EPAServeur.Tests.Services #endregion + #region Objectifs + [TestCase(3, true)] + [TestCase(7, false)] + [TestCase(10, true)] + public async Task GetEp_Objectifs_ObjectifsPrecedents(long idEp, bool possedeObjectifsPref) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEp); + Assert.IsNotNull(epDTO); + Assert.IsNotNull(epDTO.Objectifs); + Assert.AreEqual(3, epDTO.Objectifs.Count); + if (possedeObjectifsPref) + { + Assert.IsNotNull(epDTO.ObjectifsPrecedent); + Assert.AreEqual(3, epDTO.ObjectifsPrecedent.Count); + }else + { + Assert.IsNull(epDTO.ObjectifsPrecedent); + } + + } + #endregion + #region Récupérer EP avec demandes de formation #endregion @@ -247,8 +270,5 @@ namespace EPAServeur.Tests.Services #region #endregion - - #region - #endregion } } diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index 442cc2e..925e088 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -100,6 +100,10 @@ namespace EPAServeur.Context ChoixTypeEntretien choix1, choix2, choix3, choix4, choix5, choix6, choix7; + Objectif objectif1, objectif2, objectif3, objectif4, objectif5, objectif6, objectif7, objectif8, objectif9; + + ObjectifPrecedent objectifPrecedent1, objectifPrecedent2, objectifPrecedent3, objectifPrecedent4, objectifPrecedent5, objectifPrecedent6; + //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; @@ -237,6 +241,16 @@ namespace EPAServeur.Context }; epEnCours3.Participants = new List(new[] { p1, p2 }); + objectif1 = new Objectif() { Ep = epEnCours3, Libelle = "Objectif1" }; + objectif2 = new Objectif() { Ep = epEnCours3, Libelle = "Objectif2" }; + objectif3 = new Objectif() { Ep = epEnCours3, Libelle = "Objectif3" }; + + objectifPrecedent1 = new ObjectifPrecedent() { Ep = epEnCours3, Libelle = "ObjectifPrec1", Commentaire = "Commentaire", StatutObjectif = StatutObjectif.Atteint }; + objectifPrecedent2 = new ObjectifPrecedent() { Ep = epEnCours3, Libelle = "ObjectifPrec2", Commentaire = "Commentaire", StatutObjectif = StatutObjectif.Partiel }; + objectifPrecedent3 = new ObjectifPrecedent() { Ep = epEnCours3, Libelle = "ObjectifPrec3", Commentaire = "Commentaire", StatutObjectif = StatutObjectif.Partiel }; + epEnCours3.Objectifs = new List() { objectif1, objectif2, objectif3 }; + epEnCours3.ObjectifsPrecedents = new List() { objectifPrecedent1, objectifPrecedent2, objectifPrecedent3 }; + @@ -394,6 +408,11 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("4f3fcd23-a1e4-4c9e-afa2-d06ca9216491"), Obligatoire = false, }; + objectif4 = new Objectif() { Ep = epEnCours7, Libelle = "Objectif4" }; + objectif5 = new Objectif() { Ep = epEnCours7, Libelle = "Objectif5" }; + objectif6 = new Objectif() { Ep = epEnCours7, Libelle = "Objectif6" }; + + epEnCours7.Objectifs = new List() { objectif4, objectif5, objectif6 }; epContext.Ep.Add(epEnCours7); epEnCours8 = new Ep() @@ -462,6 +481,17 @@ namespace EPAServeur.Context }; epSigne1.Engagements = new List(); epSigne1.Engagements.Add(eg4); + + objectif7 = new Objectif() { Ep = epSigne1, Libelle = "Objectif7" }; + objectif8 = new Objectif() { Ep = epSigne1, Libelle = "Objectif8" }; + objectif9 = new Objectif() { Ep = epSigne1, Libelle = "Objectif9" }; + + objectifPrecedent4 = new ObjectifPrecedent() { Ep = epSigne1, Libelle = "ObjectifPrec4", Commentaire = "Commentaire", StatutObjectif = StatutObjectif.NonAtteint }; + objectifPrecedent5 = new ObjectifPrecedent() { Ep = epSigne1, Libelle = "ObjectifPrec5", Commentaire = "Commentaire", StatutObjectif = StatutObjectif.NonAtteint }; + objectifPrecedent6 = new ObjectifPrecedent() { Ep = epSigne1, Libelle = "ObjectifPrec6", Commentaire = "Commentaire", StatutObjectif = StatutObjectif.Atteint }; + epSigne1.Objectifs = new List() { objectif7, objectif8, objectif9 }; + epSigne1.ObjectifsPrecedents = new List() { objectifPrecedent4, objectifPrecedent6, objectifPrecedent5 }; + epContext.Ep.Add(epSigne1); epSigne2 = new Ep() diff --git a/EPAServeur/IServices/ITransformDTO.cs b/EPAServeur/IServices/ITransformDTO.cs index 00be403..0e7ff86 100644 --- a/EPAServeur/IServices/ITransformDTO.cs +++ b/EPAServeur/IServices/ITransformDTO.cs @@ -83,8 +83,8 @@ namespace EPAServeur.IServices List GetRDVEntretienDTOs(List rdvEntretiens); List GetTypeEntretienDTOs(List choixTypeEntretiens); DocumentDTO GetDocumentDTO(Document document); - ObjectifDTO GetObjectifDTO(Objectif objectif); - ObjectifPrecedentDTO GetObjectifPrecedentDTO(ObjectifPrecedent objectifPrecedent); + List GetObjectifDTOs(List objectifs); + List GetObjectifPrecedentDTO(List objectifsPrecedents); diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 313aa62..91abdb3 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -34,6 +34,8 @@ namespace EPAServeur.Services .Include(ep => ep.RdvEntretien).ThenInclude(rdv => rdv.TypeEntretien) .Include(ep => ep.PropositionsRDV).ThenInclude(rdv => rdv.TypeEntretien) .Include(ep => ep.ChoixTypeEntretien).ThenInclude( c => c.TypeEntretien) + .Include(ep => ep.Objectifs) + .Include(ep => ep.ObjectifsPrecedents) .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index 99cf8db..f29d3cd 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -67,7 +67,9 @@ namespace EPAServeur.Services DemandesDelegation = GetDemandeDelegationDTO(ep.DemandeDelegation, collaborateurDTOs), RdvEntretien = GetRDVEntretienDTO(ep.RdvEntretien), PropositionsEntretien = GetRDVEntretienDTOs(ep.PropositionsRDV), - ChoixTypeEntretien = GetTypeEntretienDTOs(ep.ChoixTypeEntretien) + ChoixTypeEntretien = GetTypeEntretienDTOs(ep.ChoixTypeEntretien), + Objectifs = GetObjectifDTOs(ep.Objectifs), + ObjectifsPrecedent = GetObjectifPrecedentDTO(ep.ObjectifsPrecedents) }; } @@ -530,15 +532,6 @@ namespace EPAServeur.Services return modeFormationDTO; } - public ObjectifDTO GetObjectifDTO(Objectif objectif) - { - throw new NotImplementedException(); - } - - public ObjectifPrecedentDTO GetObjectifPrecedentDTO(ObjectifPrecedent objectifPrecedent) - { - throw new NotImplementedException(); - } /// /// Transformer un objet OrigineFormationDTO en objet OrigineFormation. @@ -900,5 +893,29 @@ namespace EPAServeur.Services return engagement; } - } + + public List GetObjectifDTOs(List objectifs) + { + if (objectifs == null || !objectifs.Any()) + return null; + return objectifs.Select(o => new ObjectifDTO() + { + Id = o.IdObjectif, + Libelle = o.Libelle + }).ToList(); + } + + public List GetObjectifPrecedentDTO(List objectifsPrecedents) + { + if (objectifsPrecedents == null || !objectifsPrecedents.Any()) + return null; + return objectifsPrecedents.Select(o => new ObjectifPrecedentDTO() + { + Id = o.IdObjectif, + Libelle = o.Libelle, + StatutObjectif = o.StatutObjectif, + Commentaire = o.Commentaire + }).ToList(); + } + } } From 73e9a0315cfd1879a93da0ea9cc2d61ef3218d30 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Yana=C3=ABl=20GRETTE?= Date: Mon, 15 Mar 2021 15:38:39 +0100 Subject: [PATCH 10/10] =?UTF-8?q?Impl=C3=A9mentatin=20de=20la=20r=C3=A9cup?= =?UTF-8?q?=C3=A9ration=20de=20la=20demande=20d'EPI?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Services/EpDetailsServiceTests.cs | 16 +++++++-- EPAServeur/Context/DataSeeder.cs | 35 +++++++++++++++++++ EPAServeur/Services/EpDetailsService.cs | 3 ++ EPAServeur/Services/TransformDTO.cs | 16 +++++++-- 4 files changed, 66 insertions(+), 4 deletions(-) diff --git a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs index 423a97c..16a3628 100644 --- a/EPAServeur.Tests/Services/EpDetailsServiceTests.cs +++ b/EPAServeur.Tests/Services/EpDetailsServiceTests.cs @@ -253,6 +253,20 @@ namespace EPAServeur.Tests.Services } #endregion + #region Demande EPI + [TestCase(4)] + [TestCase(8)] + [TestCase(13)] + public async Task GetEp_GetDemandeEPI(long idEp) + { + IEpDetailsService epDetailsService = new EpDetailsService(context, transformDTO, collaborateurService); + EpDTO epDTO = await epDetailsService.GetEp(idEp); + Assert.IsNotNull(epDTO); + Assert.IsNotNull(epDTO.DemandeEPI); + Assert.IsTrue(epDTO.Collaborateur.Id.Equals(epDTO.DemandeEPI.Collaborateur.Id)); + Assert.AreEqual(epDTO.DemandeEPI.EtatDemande, EtatDemande.Validee); + } + #endregion #region Récupérer EP avec demandes de formation #endregion @@ -262,8 +276,6 @@ namespace EPAServeur.Tests.Services - #region Demande EPI - #endregion #region #endregion diff --git a/EPAServeur/Context/DataSeeder.cs b/EPAServeur/Context/DataSeeder.cs index 925e088..de40699 100644 --- a/EPAServeur/Context/DataSeeder.cs +++ b/EPAServeur/Context/DataSeeder.cs @@ -104,6 +104,8 @@ namespace EPAServeur.Context ObjectifPrecedent objectifPrecedent1, objectifPrecedent2, objectifPrecedent3, objectifPrecedent4, objectifPrecedent5, objectifPrecedent6; + DemandeEPI demandeEPI1, demandeEPI2, demandeEPI3; + //Ep en cours Ep epEnCours1, epEnCours2, epEnCours3, epEnCours4, epEnCours5, epEnCours6, epEnCours7, epEnCours8, epEnCours9; @@ -276,6 +278,17 @@ namespace EPAServeur.Context EtatDemande = EtatDemande.EnAttente, RaisonDemande = "Raison quelconque 2" }; + + demandeEPI1 = new DemandeEPI() + { + IdReferent = new Guid("eb8b0f33-f529-4985-861e-1207f3312bb5"), + Ep = epEnCours4, + DateDemande = new DateTime(), + DateReponse = new DateTime(), + EtatDemande = EtatDemande.Validee, + IdCollaborateur = new Guid("a0f40e2a-cc03-4032-a627-5389e1281c64") + }; + epEnCours4.DemandeEPI = demandeEPI1; epEnCours4.DemandeDelegation = dm2; choix5 = new ChoixTypeEntretien() @@ -437,6 +450,17 @@ namespace EPAServeur.Context RaisonDemande = "Raison quelconque 3" }; epEnCours8.DemandeDelegation = dm3; + + demandeEPI2 = new DemandeEPI() + { + IdReferent = new Guid("ea027734-ff0f-4308-8879-133a09fb3c46"), + Ep = epEnCours8, + DateDemande = new DateTime(), + DateReponse = new DateTime(), + EtatDemande = EtatDemande.Validee, + IdCollaborateur = new Guid("0968ccd3-1ef5-4041-83f3-1c76afb02bbf"), + }; + epEnCours8.DemandeEPI = demandeEPI2; epEnCours9 = new Ep() { @@ -561,6 +585,17 @@ namespace EPAServeur.Context IdCollaborateur = new Guid("a0f40e2a-cc03-4032-a627-5389e1281c64"), Obligatoire = false, }; + demandeEPI3 = new DemandeEPI() + { + IdReferent = new Guid("eb8b0f33-f529-4985-861e-1207f3312bb5"), + IdCollaborateur = new Guid("a0f40e2a-cc03-4032-a627-5389e1281c64"), + DateDemande = new DateTime(), + EtatDemande = EtatDemande.Validee, + DateReponse = new DateTime(), + Ep = epSigne4 + }; + epSigne4.DemandeEPI = demandeEPI3; + epContext.Ep.Add(epSigne4); epSigne5 = new Ep() diff --git a/EPAServeur/Services/EpDetailsService.cs b/EPAServeur/Services/EpDetailsService.cs index 91abdb3..55663f7 100644 --- a/EPAServeur/Services/EpDetailsService.cs +++ b/EPAServeur/Services/EpDetailsService.cs @@ -36,6 +36,7 @@ namespace EPAServeur.Services .Include(ep => ep.ChoixTypeEntretien).ThenInclude( c => c.TypeEntretien) .Include(ep => ep.Objectifs) .Include(ep => ep.ObjectifsPrecedents) + .Include(ep => ep.DemandeEPI) .FirstOrDefaultAsync(ep => ep.IdEP.Equals(id)); if (ep == null) throw new EpNotFoundException(); @@ -53,6 +54,8 @@ namespace EPAServeur.Services guids.AddRange(ep.CommentairesAssistant.SelectMany(p => new[] { (Guid?)p.IdAssistant })); if (ep.DemandeDelegation != null) guids.Add(ep.DemandeDelegation.IdReferent); + if (ep.DemandeEPI != null && ep.DemandeEPI.IdReferent != null) + guids.Add(ep.DemandeEPI.IdReferent); IEnumerable collaborateurDTOs = await collaborateurService.GetCollaborateurDTOsAsync(guids); diff --git a/EPAServeur/Services/TransformDTO.cs b/EPAServeur/Services/TransformDTO.cs index f29d3cd..935137c 100644 --- a/EPAServeur/Services/TransformDTO.cs +++ b/EPAServeur/Services/TransformDTO.cs @@ -69,7 +69,8 @@ namespace EPAServeur.Services PropositionsEntretien = GetRDVEntretienDTOs(ep.PropositionsRDV), ChoixTypeEntretien = GetTypeEntretienDTOs(ep.ChoixTypeEntretien), Objectifs = GetObjectifDTOs(ep.Objectifs), - ObjectifsPrecedent = GetObjectifPrecedentDTO(ep.ObjectifsPrecedents) + ObjectifsPrecedent = GetObjectifPrecedentDTO(ep.ObjectifsPrecedents), + DemandeEPI = GetDemandeEPIDTO(ep.DemandeEPI, collaborateurDTOs) }; } @@ -290,7 +291,18 @@ namespace EPAServeur.Services /// public DemandeEPIDTO GetDemandeEPIDTO(DemandeEPI demande, IEnumerable collaborateurDTOs) { - throw new NotImplementedException(); + if (demande == null) + return null; + return new DemandeEPIDTO() + { + Collaborateur = collaborateurDTOs.FirstOrDefault(c => c.Id.Equals(demande.IdCollaborateur)), + Id = demande.IdDemandeEPI, + DateDemande = demande.DateDemande, + DateReponse = demande.DateReponse, + EtatDemande = demande.EtatDemande, + RaisonRefus = demande.RaisonRefus, + Referent = collaborateurDTOs.FirstOrDefault(c => c.Id.Equals(demande.IdReferent)) + }; }