diff --git a/Controllers/EngagementsApi.cs b/Controllers/EngagementsApi.cs index 3d7e71f..46ce2ed 100644 --- a/Controllers/EngagementsApi.cs +++ b/Controllers/EngagementsApi.cs @@ -19,6 +19,7 @@ using IO.Swagger.Security; using Microsoft.AspNetCore.Authorization; using IO.Swagger.DTO; using EPAServeur.IServices; +using System.Threading.Tasks; namespace IO.Swagger.Controllers { @@ -125,10 +126,10 @@ namespace IO.Swagger.Controllers [SwaggerOperation("GetEngagementsRepondus")] [SwaggerResponse(statusCode: 200, type: typeof(List), description: "OK")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] - public virtual IActionResult GetEngagementsRepondus([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]long? idAgence, [FromQuery]string texte, [FromQuery]string tri) + public virtual async Task GetEngagementsRepondus([FromQuery][Required()]bool? asc, [FromQuery][Required()]int? numPage, [FromQuery][Required()]int? parPAge, [FromQuery]long? idAgence, [FromQuery]string texte, [FromQuery]string tri) { //TODO: Uncomment the next line to return response 200 or use other options such as return this.NotFound(), return this.BadRequest(..), ... - IEnumerable engagements = engagementService.GetEngagementsRepondus(asc, numPage, parPAge, idAgence, texte, tri); + IEnumerable engagements = await engagementService.GetEngagementsRepondus(asc, numPage, parPAge, idAgence, texte, tri); if (engagements == null) { ErreurDTO erreur = new ErreurDTO() @@ -156,12 +157,12 @@ namespace IO.Swagger.Controllers [ValidateModelState] [SwaggerOperation("RepondreEngagement")] [SwaggerResponse(statusCode: 403, type: typeof(ErreurDTO), description: "Acces interdit")] - public virtual IActionResult RepondreEngagement([FromBody]EngagementDTO body, [FromRoute][Required]long? idEngagement) + public virtual async Task RepondreEngagement([FromBody]EngagementDTO body, [FromRoute][Required]long? idEngagement) { //if (body != null && body.Realise == false && string.IsNullOrWhiteSpace(body.RaisonNonRealisable)) // return null; // A traiter ! Retourner une erreur - EngagementDTO engagement = engagementService.RepondreEngagement(body, idEngagement); + EngagementDTO engagement = await engagementService.RepondreEngagement(body, idEngagement); return Ok(engagement); } diff --git a/IServices/IEngagementService.cs b/IServices/IEngagementService.cs index 789ffd8..b47080c 100644 --- a/IServices/IEngagementService.cs +++ b/IServices/IEngagementService.cs @@ -11,10 +11,10 @@ namespace EPAServeur.IServices public interface IEngagementService { - IEnumerable GetEngagements(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri); - IEnumerable GetEngagementsEnAttente(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri); - IEnumerable GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri); - EngagementDTO RepondreEngagement(EngagementDTO engagement, long? idEngagement); + IEnumerable GetEngagements(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri); + IEnumerable GetEngagementsEnAttente(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri); + Task> GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri); + Task RepondreEngagement(EngagementDTO engagement, long? idEngagement); } } diff --git a/Services/EngagementService.cs b/Services/EngagementService.cs index 359ffeb..dfb645b 100644 --- a/Services/EngagementService.cs +++ b/Services/EngagementService.cs @@ -10,6 +10,7 @@ using System; using System.Collections.Generic; using System.Diagnostics; using System.Linq; +using System.Threading.Tasks; namespace EPAServeur.Services { @@ -98,7 +99,7 @@ namespace EPAServeur.Services { try { - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise == null); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise == null).ToList(); } catch (Exception ex) { @@ -109,7 +110,7 @@ namespace EPAServeur.Services { try { - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise == null); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise == null).ToList(); } catch (Exception ex) { @@ -125,10 +126,10 @@ namespace EPAServeur.Services return engagementDTOs; } - public IEnumerable GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri) + public async Task> GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri) { IEnumerable engagements; - IEnumerable engagementDTOs; + // engagementDTOs = new List(); if (texte == null) texte = ""; @@ -142,7 +143,7 @@ namespace EPAServeur.Services { try { - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Realise != null); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Ep.IdAgence == idAgence && engagement.Modalite.ToLower().Contains(texte)); } catch (Exception ex) { @@ -153,7 +154,7 @@ namespace EPAServeur.Services { try { - engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise != null); + engagements = epContext.Engagement.Include(engagement => engagement.Ep).Where(engagement => engagement.Realise != null && engagement.Modalite.ToLower().Contains(texte)); } catch (Exception ex) { @@ -165,8 +166,14 @@ namespace EPAServeur.Services if (engagements == null) return null; - engagementDTOs = engagements.Where(engagement => engagement.Modalite.ToLower().Contains(texte)).Select(engagement => GetEngagementDTO(engagement)); - return engagementDTOs; + var engagementDTOs = engagements.Where(engagement => engagement.Modalite.ToLower().Contains(texte)).Select(engagement => GetEngagementDTOAsync(engagement)); + var results = await Task.WhenAll(engagementDTOs); + //foreach (var engagement in engagements) + //{ + // engagementDTOs.Add(await GetEngagementDTOAsync(engagement)); + //} + + return results; } /// @@ -175,7 +182,7 @@ namespace EPAServeur.Services /// /// /// - public EngagementDTO RepondreEngagement(EngagementDTO engagementDTO, long? idEngagement) + public async Task RepondreEngagement(EngagementDTO engagementDTO, long? idEngagement) { if (!IsEngagementValide(engagementDTO)) @@ -202,7 +209,7 @@ namespace EPAServeur.Services epContext.SaveChanges(); - return GetEngagementDTO(engagement); + return await GetEngagementDTOAsync(engagement); } @@ -215,6 +222,7 @@ namespace EPAServeur.Services } #region Object to DTO + /// /// Récupère un objet EngagementDTO en fonction d'un objet Engagement /// @@ -238,12 +246,35 @@ namespace EPAServeur.Services return engagementDTO; } + /// + /// Récupère un objet EngagementDTO en fonction d'un objet Engagement + /// + /// + /// + private async Task GetEngagementDTOAsync(Engagement engagement) + { + EngagementDTO engagementDTO = new EngagementDTO() + { + Id = engagement.Id, + Action = engagement.Action, + DatePrevisionnelle = engagement.DateLimite, + Dispositif = engagement.Disposition, + Modalite = engagement.Modalite, + RaisonNonRealisable = engagement.RaisonNonRealisable, + Realisable = engagement.Realisable, + Realise = engagement.Realise, + Ep = await GetEpInformationDTOAsync(engagement.Ep) + }; + + return engagementDTO; + } + /// /// Récupère un objet EpInformationDTO en fonction d'un objet Ep /// /// /// - private EpInformationDTO GetEpInformationDTO(Ep ep) + private EpInformationDTO GetEpInformationDTO(Ep ep) { EpInformationDTO epInformationDTO = new EpInformationDTO() { @@ -252,13 +283,36 @@ namespace EPAServeur.Services Statut = ep.Statut.ToString(), DatePrevisionnelle = ep.DatePrevisionnelle, Obligatoire = ep.Obligatoire, - Collaborateur = collaborateurService.GetProfilById(ep.IdCollaborateur) - //Referent = null //collaborateurService.GetProfilById(ep.IdReferent) + Collaborateur = collaborateurService.GetCollaborateurById(ep.IdCollaborateur), + Referent = collaborateurService.GetCollaborateurById(ep.IdReferent) //Ajouter la date de disponibilité }; return epInformationDTO; } + + /// + /// Récupère un objet EpInformationDTO en fonction d'un objet Ep + /// + /// + /// + private async Task GetEpInformationDTOAsync(Ep ep) + { + EpInformationDTO epInformationDTO = new EpInformationDTO() + { + Id = ep.Id, + Type = ep.TypeEP.ToString(), + Statut = ep.Statut.ToString(), + DatePrevisionnelle = ep.DatePrevisionnelle, + Obligatoire = ep.Obligatoire, + Collaborateur = await collaborateurService.GetCollaborateurByIdAsync(ep.IdCollaborateur), + Referent = await collaborateurService.GetCollaborateurByIdAsync(ep.IdReferent) + //Ajouter la date de disponibilité + }; + + return epInformationDTO; + } + #endregion #region DTO to Object