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;