Ajout d'un test async dans le service engagement et de l'api engagement

develop
jboinembalome 4 years ago
parent cd6439a643
commit 6b3e8ec32a
  1. 9
      Controllers/EngagementsApi.cs
  2. 4
      IServices/IEngagementService.cs
  3. 78
      Services/EngagementService.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<EngagementDTO>), 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<IActionResult> 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<EngagementDTO> engagements = engagementService.GetEngagementsRepondus(asc, numPage, parPAge, idAgence, texte, tri);
IEnumerable<EngagementDTO> 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<IActionResult> 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);
}

@ -13,8 +13,8 @@ namespace EPAServeur.IServices
IEnumerable<EngagementDTO> GetEngagements(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri);
IEnumerable<EngagementDTO> GetEngagementsEnAttente(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri);
IEnumerable<EngagementDTO> GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri);
EngagementDTO RepondreEngagement(EngagementDTO engagement, long? idEngagement);
Task<IList<EngagementDTO>> GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri);
Task<EngagementDTO> RepondreEngagement(EngagementDTO engagement, long? idEngagement);
}
}

@ -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<EngagementDTO> GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri)
public async Task<IList<EngagementDTO>> GetEngagementsRepondus(bool? asc, int? numPage, int? parPAge, long? idAgence, string texte, string tri)
{
IEnumerable<Engagement> engagements;
IEnumerable<EngagementDTO> engagementDTOs;
//<EngagementDTO> engagementDTOs = new List<EngagementDTO>();
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;
}
/// <summary>
@ -175,7 +182,7 @@ namespace EPAServeur.Services
/// <param name="engagementDTO"></param>
/// <param name="idEngagement"></param>
/// <returns></returns>
public EngagementDTO RepondreEngagement(EngagementDTO engagementDTO, long? idEngagement)
public async Task<EngagementDTO> 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
/// <summary>
/// Récupère un objet EngagementDTO en fonction d'un objet Engagement
/// </summary>
@ -238,6 +246,29 @@ namespace EPAServeur.Services
return engagementDTO;
}
/// <summary>
/// Récupère un objet EngagementDTO en fonction d'un objet Engagement
/// </summary>
/// <param name="engagement"></param>
/// <returns></returns>
private async Task<EngagementDTO> 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;
}
/// <summary>
/// Récupère un objet EpInformationDTO en fonction d'un objet Ep
/// </summary>
@ -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;
}
/// <summary>
/// Récupère un objet EpInformationDTO en fonction d'un objet Ep
/// </summary>
/// <param name="ep"></param>
/// <returns></returns>
private async Task<EpInformationDTO> 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

Loading…
Cancel
Save