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(); }