@ -1,4 +1,5 @@
using EPAServeur.Context ;
using EPAServeur.Exceptions ;
using EPAServeur.IServices ;
using EPAServeur.Models.Formation ;
using IO.Swagger.DTO ;
@ -6,6 +7,7 @@ using Microsoft.EntityFrameworkCore;
using System ;
using System.Collections.Generic ;
using System.Linq ;
using System.Threading.Tasks ;
namespace EPAServeur.Services
{
@ -35,18 +37,37 @@ namespace EPAServeur.Services
/// <summary>
/// Récupérer une formation par son id
/// </summary>
/// <param name="id"></param>
/// <param name="idFormation "></param>
/// <returns></returns>
public FormationDTO GetFormationById ( long? id )
public FormationDTO GetFormationById ( long? idFormation )
{
Formation formation = epContext . Formation . Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation )
. FirstOrDefault ( formation = > formation . Id = = id ) ;
. FirstOrDefault ( formation = > formation . Id = = idFormation ) ;
if ( formation = = null )
return null ;
throw new FormationNotFoundException ( ) ;
return GetFormationDTO ( formation ) ;
}
/// <summary>
/// Récupérer une formation par son id de manière asynchrone
/// </summary>
/// <param name="idFormation"></param>
/// <returns></returns>
public async Task < FormationDTO > GetFormationByIdAsync ( long? idFormation )
{
Formation formation = await epContext . Formation . Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation )
. FirstOrDefaultAsync ( formation = > formation . Id = = idFormation ) ;
if ( formation = = null )
throw new FormationNotFoundException ( ) ;
return GetFormationDTO ( formation ) ;
}
@ -61,7 +82,7 @@ namespace EPAServeur.Services
/// <param name="texte">Texte permettant d'identifier l'objet rechercher</param>
/// <param name="tri">Colonne du tableau sur lequel le tri s'effectue</param>
/// <returns></returns>
public IEnumerable < FormationDTO > GetFormations ( bool? asc , int? numPage , int? parPAge , int? idAgence , string texte , string tri )
public IEnumerable < FormationDTO > GetFormations ( bool? asc , int? numPage , int? parPAge , int? idAgence , int? statutFormation , string texte , string tri )
{
IEnumerable < Formation > formations ;
IEnumerable < FormationDTO > formationDTOs ;
@ -74,39 +95,113 @@ namespace EPAServeur.Services
int skip = ( numPage . Value - 1 ) * parPAge . Value ;
int take = parPAge . Value ;
if ( idAgence ! = null )
if ( statutFormation ! = null & & idAgence ! = null )
{
try
{
formations = epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence )
. Include ( formation = > formation . Statut )
formations = epContext . Formation
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation )
. Where ( formation = > formation . Statut . Id = = statutFormation & & formation . IdAgence = = idAgence ) ;
}
else if ( statutFormation ! = null & & idAgence = = null )
{
formations = epContext . Formation
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation )
. Where ( formation = > formation . Statut . Id = = statutFormation ) ;
}
else if ( idAgence ! = null )
{
formations = epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
else
{
formations = epContext . Formation . Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
catch ( Exception ex )
{
throw ;
}
}
if ( formations = = null )
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
return formationDTOs ;
}
/// <summary>
/// Récupérer la liste des formations de manière asynchrone
/// </summary>
/// <param name="asc">Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false)</param>
/// <param name="numPage">Numéro de la page du tableau qui affiche les données</param>
/// <param name="parPAge">Nombre d'éléments affiché sur chaque page du tableau</param>
/// <param name="idAgence">id de l'agence à laquelle sont rattachées les données à récupérer</param>
/// <param name="texte">Texte permettant d'identifier l'objet rechercher</param>
/// <param name="tri">Colonne du tableau sur lequel le tri s'effectue</param>
/// <returns></returns>
public async Task < IEnumerable < FormationDTO > > GetFormationsAsync ( bool? asc , int? numPage , int? parPAge , int? idAgence , int? statutFormation , string texte , string tri )
{
IEnumerable < Formation > formations ;
IEnumerable < FormationDTO > formationDTOs ;
if ( texte = = null )
texte = "" ;
else
texte = texte . ToLower ( ) ;
int skip = ( numPage . Value - 1 ) * parPAge . Value ;
int take = parPAge . Value ;
if ( statutFormation ! = null & & idAgence ! = null )
{
formations = await epContext . Formation
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation )
. Where ( formation = > formation . Statut . Id = = statutFormation & & formation . IdAgence = = idAgence ) . ToListAsync ( ) ;
}
else if ( statutFormation ! = null & & idAgence = = null )
{
formations = await epContext . Formation
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation )
. Where ( formation = > formation . Statut . Id = = statutFormation ) . ToListAsync ( ) ;
}
else if ( idAgence ! = null )
{
formations = await epContext . Formation
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . Where ( formation = > formation . IdAgence = = idAgence ) . ToListAsync ( ) ;
}
else
{
try
{
formations = epContext . Formation . Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
catch ( Exception ex )
{
throw ;
}
formations = await epContext . Formation . Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
}
if ( formations = = null )
return new List < FormationDTO > ( ) ;
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
@ -150,7 +245,51 @@ namespace EPAServeur.Services
. Include ( formation = > formation . TypeFormation ) ;
if ( formations = = null )
return new List < FormationDTO > ( ) ;
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
return formationDTOs ;
}
/// <summary>
/// Récupérer les formations annulées de manière asynchrone
/// </summary>
/// <param name="asc">Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false)</param>
/// <param name="numPage">Numéro de la page du tableau qui affiche les données</param>
/// <param name="parPAge">Nombre d'éléments affiché sur chaque page du tableau</param>
/// <param name="idAgence">id de l'agence à laquelle sont rattachées les données à récupérer</param>
/// <param name="texte">Texte permettant d'identifier l'objet rechercher</param>
/// <param name="tri">Colonne du tableau sur lequel le tri s'effectue</param>
/// <returns></returns>
public async Task < IEnumerable < FormationDTO > > GetFormationAnnuleesAsync ( bool? asc , int? numPage , int? parPAge , int? idAgence , string texte , string tri )
{
IEnumerable < Formation > formations ;
IEnumerable < FormationDTO > formationDTOs ;
if ( texte = = null )
texte = "" ;
else
texte = texte . ToLower ( ) ;
int skip = ( numPage . Value - 1 ) * parPAge . Value ;
int take = parPAge . Value ;
if ( idAgence ! = null )
formations = await epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & formation . Statut . Id = = 4 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
else
formations = await epContext . Formation . Where ( formation = > formation . Statut . Id = = 4 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
if ( formations = = null )
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
@ -182,39 +321,80 @@ namespace EPAServeur.Services
if ( idAgence ! = null )
{
try
{
formations = epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & formation . Statut . Id = = 3 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
catch ( Exception ex )
{
throw ;
}
formations = epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & formation . Statut . Id = = 3 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
else
{
formations = epContext . Formation . Where ( formation = > formation . Statut . Id = = 3 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
if ( formations = = null )
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
return formationDTOs ;
}
/// <summary>
/// Récupérer les formations réalisées de manière asynchrone
/// </summary>
/// <param name="asc">Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false)</param>
/// <param name="numPage">Numéro de la page du tableau qui affiche les données</param>
/// <param name="parPAge">Nombre d'éléments affiché sur chaque page du tableau</param>
/// <param name="idAgence">id de l'agence à laquelle sont rattachées les données à récupérer</param>
/// <param name="texte">Texte permettant d'identifier l'objet rechercher</param>
/// <param name="tri">Colonne du tableau sur lequel le tri s'effectue</param>
/// <returns></returns>
public async Task < IEnumerable < FormationDTO > > GetFormationRealiseeAsync ( bool? asc , int? numPage , int? parPAge , int? idAgence , string texte , string tri )
{
IEnumerable < Formation > formations ;
IEnumerable < FormationDTO > formationDTOs ;
if ( texte = = null )
texte = "" ;
else
texte = texte . ToLower ( ) ;
int skip = ( numPage . Value - 1 ) * parPAge . Value ;
int take = parPAge . Value ;
if ( idAgence ! = null )
{
formations = await epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & formation . Statut . Id = = 3 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
}
else
{
try
{
formations = epContext . Formation . Where ( formation = > formation . Statut . Id = = 3 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
catch ( Exception ex )
{
throw ;
}
formations = await epContext . Formation . Where ( formation = > formation . Statut . Id = = 3 )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
}
if ( formations = = null )
return new List < FormationDTO > ( ) ;
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
@ -245,19 +425,14 @@ namespace EPAServeur.Services
int take = parPAge . Value ;
if ( idAgence ! = null )
try
{
formations = epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & ( formation . Statut . Id = = 1 | | formation . Statut . Id = = 2 ) )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
catch ( Exception ex )
{
throw ;
}
{
formations = epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & ( formation . Statut . Id = = 1 | | formation . Statut . Id = = 2 ) )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) ;
}
else
{
formations = epContext . Formation . Where ( formation = > ( formation . Statut . Id = = 1 | | formation . Statut . Id = = 2 ) )
@ -268,7 +443,7 @@ namespace EPAServeur.Services
}
if ( formations = = null )
return new List < FormationDTO > ( ) ;
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
@ -276,22 +451,87 @@ namespace EPAServeur.Services
}
/// <summary>
/// Récupérer les modes de formation
/// Récupérer les formations plannifiées et replannifiées de manère asynchrone
/// </summary>
/// <param name="asc">Préciser si les données sont dans l'ordre (true) ou dans l'ordre inverse (false)</param>
/// <param name="numPage">Numéro de la page du tableau qui affiche les données</param>
/// <param name="parPAge">Nombre d'éléments affiché sur chaque page du tableau</param>
/// <param name="idAgence">id de l'agence à laquelle sont rattachées les données à récupérer</param>
/// <param name="texte">Texte permettant d'identifier l'objet rechercher</param>
/// <param name="tri">Colonne du tableau sur lequel le tri s'effectue</param>
/// <returns></returns>
public IEnumerable < ModeFormationDTO > GetModesFormation ( )
public async Task < IEnumerable < FormationDTO > > GetProchainesFormationAsync ( bool? asc , int? numPage , int? parPAge , int? idAgence , string texte , string tri )
{
IEnumerable < ModeFormation > modeFormations ;
IEnumerable < ModeFormationDTO > modeFormationDTOs ;
try
IEnumerable < Formation > formations ;
IEnumerable < FormationDTO > formationDTOs ;
if ( texte = = null )
texte = "" ;
else
texte = texte . ToLower ( ) ;
int skip = ( numPage . Value - 1 ) * parPAge . Value ;
int take = parPAge . Value ;
if ( idAgence ! = null )
{
modeFormations = epContext . ModeFormation ;
formations = await epContext . Formation . Where ( formation = > formation . IdAgence = = idAgence & & ( formation . Statut . Id = = 1 | | formation . Statut . Id = = 2 ) )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
}
catch ( Exception ex )
else
{
throw ;
formations = await epContext . Formation . Where ( formation = > ( formation . Statut . Id = = 1 | | formation . Statut . Id = = 2 ) )
. Include ( formation = > formation . Statut )
. Include ( formation = > formation . ModeFormation )
. Include ( formation = > formation . Origine )
. Include ( formation = > formation . TypeFormation ) . ToListAsync ( ) ;
}
if ( formations = = null )
return null ;
formationDTOs = formations . Where ( formation = > formation . Intitule . ToLower ( ) . Contains ( texte ) ) . Select ( formation = > GetFormationDTO ( formation ) ) ;
return formationDTOs ;
}
/// <summary>
/// Récupérer les modes de formation
/// </summary>
/// <returns></returns>
public IEnumerable < ModeFormationDTO > GetModesFormation ( )
{
IEnumerable < ModeFormation > modeFormations ;
IEnumerable < ModeFormationDTO > modeFormationDTOs ;
modeFormations = epContext . ModeFormation ;
if ( modeFormations = = null )
return null ;
modeFormationDTOs = modeFormations . Select ( modeFormation = > GetModeFormationDTO ( modeFormation ) ) ;
return modeFormationDTOs ;
}
/// <summary>
/// Récupérer les modes de formation de manière asynchrone
/// </summary>
/// <returns></returns>
public async Task < IEnumerable < ModeFormationDTO > > GetModesFormationAsync ( )
{
IEnumerable < ModeFormation > modeFormations ;
IEnumerable < ModeFormationDTO > modeFormationDTOs ;
modeFormations = await epContext . ModeFormation . ToListAsync ( ) ;
if ( modeFormations = = null )
return null ;
modeFormationDTOs = modeFormations . Select ( modeFormation = > GetModeFormationDTO ( modeFormation ) ) ;
return modeFormationDTOs ;
@ -306,14 +546,29 @@ namespace EPAServeur.Services
IEnumerable < OrigineFormation > origineFormations ;
IEnumerable < OrigineFormationDTO > origineFormationDTOs ;
try
{
origineFormations = epContext . OrigineFormation ;
}
catch ( Exception ex )
{
throw ;
}
origineFormations = epContext . OrigineFormation ;
if ( origineFormations = = null )
return null ;
origineFormationDTOs = origineFormations . Select ( origineFormation = > GetOrigineFormationDTO ( origineFormation ) ) ;
return origineFormationDTOs ;
}
/// <summary>
/// Récupérer les origines de formation de manière asynchrone
/// </summary>
/// <returns></returns>
public async Task < IEnumerable < OrigineFormationDTO > > GetOriginesFormationAsync ( )
{
IEnumerable < OrigineFormation > origineFormations ;
IEnumerable < OrigineFormationDTO > origineFormationDTOs ;
origineFormations = await epContext . OrigineFormation . ToListAsync ( ) ;
if ( origineFormations = = null )
return null ;
origineFormationDTOs = origineFormations . Select ( origineFormation = > GetOrigineFormationDTO ( origineFormation ) ) ;
@ -329,15 +584,29 @@ namespace EPAServeur.Services
IEnumerable < StatutFormation > statutFormations ;
IEnumerable < StatutFormationDTO > statutFormationDTOs ;
try
{
statutFormations = epContext . StatutFormation ;
}
catch ( Exception ex )
{
statutFormations = epContext . StatutFormation ;
throw ;
}
if ( statutFormations = = null )
return null ;
statutFormationDTOs = statutFormations . Select ( statutFormation = > GetStatutFormationDTO ( statutFormation ) ) ;
return statutFormationDTOs ;
}
/// <summary>
/// Récupérer les statuts de formation de manière asynchrone
/// </summary>
/// <returns></returns>
public async Task < IEnumerable < StatutFormationDTO > > GetStatutsFormationAsync ( )
{
IEnumerable < StatutFormation > statutFormations ;
IEnumerable < StatutFormationDTO > statutFormationDTOs ;
statutFormations = await epContext . StatutFormation . ToListAsync ( ) ;
if ( statutFormations = = null )
return null ;
statutFormationDTOs = statutFormations . Select ( statutFormation = > GetStatutFormationDTO ( statutFormation ) ) ;
@ -353,14 +622,29 @@ namespace EPAServeur.Services
IEnumerable < TypeFormation > typeFormations ;
IEnumerable < TypeFormationDTO > typeFormationDTOs ;
try
{
typeFormations = epContext . TypeFormation ;
}
catch ( Exception ex )
{
throw ;
}
typeFormations = epContext . TypeFormation ;
if ( typeFormations = = null )
return null ;
typeFormationDTOs = typeFormations . Select ( typeFormation = > GetTypeFormationDTO ( typeFormation ) ) ;
return typeFormationDTOs ;
}
/// <summary>
/// Récupérer les types de formation de manière asynchrone
/// </summary>
/// <returns></returns>
public async Task < IEnumerable < TypeFormationDTO > > GetTypesFormationAsync ( )
{
IEnumerable < TypeFormation > typeFormations ;
IEnumerable < TypeFormationDTO > typeFormationDTOs ;
typeFormations = await epContext . TypeFormation . ToListAsync ( ) ;
if ( typeFormations = = null )
return null ;
typeFormationDTOs = typeFormations . Select ( typeFormation = > GetTypeFormationDTO ( typeFormation ) ) ;
@ -374,27 +658,47 @@ namespace EPAServeur.Services
/// <returns></returns>
public FormationDTO AddFormation ( FormationDTO formationDTO )
{
if ( ! IsFormationValide ( formationDTO ) )
throw new FormationInvalidException ( ) ;
Formation formation = new Formation ( ) ;
formation = SetFormation ( formation , formationDTO ) ;
if ( formation . Statut ! = null )
{
epContext . StatutFormation . Attach ( formation . Statut ) ;
}
epContext . OrigineFormation . Attach ( formation . Origine ) ;
epContext . ModeFormation . Attach ( formation . ModeFormation ) ;
epContext . TypeFormation . Attach ( formation . TypeFormation ) ;
epContext . Add ( formation ) ;
try
{
epContext . SaveChanges ( ) ;
}
catch ( Exception ex )
{
throw ;
}
epContext . SaveChanges ( ) ;
return GetFormationDTO ( formation ) ;
}
/// <summary>
/// Ajouter une formation de manière asynchrone
/// </summary>
/// <param name="formationDTO"></param>
/// <returns></returns>
public async Task < FormationDTO > AddFormationAsync ( FormationDTO formationDTO )
{
if ( ! IsFormationValide ( formationDTO ) )
throw new FormationInvalidException ( ) ;
Formation formation = new Formation ( ) ;
formation = SetFormation ( formation , formationDTO ) ;
if ( formation . Statut ! = null )
epContext . StatutFormation . Attach ( formation . Statut ) ;
epContext . OrigineFormation . Attach ( formation . Origine ) ;
epContext . ModeFormation . Attach ( formation . ModeFormation ) ;
epContext . TypeFormation . Attach ( formation . TypeFormation ) ;
epContext . Add ( formation ) ;
await epContext . SaveChangesAsync ( ) ;
return GetFormationDTO ( formation ) ;
}
@ -402,26 +706,50 @@ namespace EPAServeur.Services
/// <summary>
/// Modifier une formation
/// </summary>
/// <param name="idFormation"></param>
/// <param name="formationDTO"></param>
/// <returns></returns>
public FormationDTO UpdateFormation ( FormationDTO formationDTO )
public FormationDTO UpdateFormation ( long? idFormation , FormationDTO formationDTO )
{
Formation formation = epContext . Formation . FirstOrDefault ( formation = > formation . Id = = formationDTO . Id ) ;
if ( ! IsFormationValide ( formationDTO ) )
throw new FormationInvalidException ( ) ;
if ( formationDTO = = null & & ! formationDTO . Id . HasValue & & formationDTO . Id . Value ! = idFormation )
throw new FormationIncompatibleIdException ( ) ;
Formation formation = epContext . Formation . Find ( idFormation ) ;
if ( formation = = null )
{
return null ;
}
formation = SetFormation ( formation , formationDTO ) ;
try
{
epContext . SaveChanges ( ) ;
}
catch ( Exception ex )
{
throw ;
}
epContext . SaveChanges ( ) ;
return GetFormationDTO ( formation ) ;
}
/// <summary>
/// Modifier une formation de manière asynchrone
/// </summary>
/// <param name="idFormation"></param>
/// <param name="formationDTO"></param>
/// <returns></returns>
public async Task < FormationDTO > UpdateFormationAsync ( long? idFormation , FormationDTO formationDTO )
{
if ( ! IsFormationValide ( formationDTO ) )
throw new FormationInvalidException ( ) ;
if ( formationDTO = = null & & ! formationDTO . Id . HasValue & & formationDTO . Id . Value ! = idFormation )
throw new FormationIncompatibleIdException ( ) ;
Formation formation = await epContext . Formation . FindAsync ( idFormation ) ;
if ( formation = = null )
return null ;
formation = SetFormation ( formation , formationDTO ) ;
await epContext . SaveChangesAsync ( ) ;
return GetFormationDTO ( formation ) ;
}
@ -429,32 +757,54 @@ namespace EPAServeur.Services
/// <summary>
/// Supprimer une formation
/// </summary>
/// <param name="id"></param>
/// <param name="idFormation "></param>
/// <returns></returns>
public bool DeleteFormationById ( long? id )
public FormationDTO DeleteFormationById ( long? idFormation )
{
Formation formation = epContext . Formation . FirstOrDefault ( formation = > formation . Id = = id ) ;
Formation formation = epContext . Formation . Find ( idFormation ) ;
if ( formation = = null )
return false ;
throw new FormationNotFoundException ( ) ;
epContext . Remove ( formation ) ;
try
{
epContext . SaveChanges ( ) ;
}
catch ( Exception )
{
throw ;
}
return true ;
epContext . SaveChanges ( ) ;
return GetFormationDTO ( formation ) ;
}
/// <summary>
/// Supprimer une formation de manière asynchrone
/// </summary>
/// <param name="idFormation"></param>
/// <returns></returns>
public async Task < FormationDTO > DeleteFormationByIdAsync ( long? idFormation )
{
Formation formation = await epContext . Formation . FindAsync ( idFormation ) ;
if ( formation = = null )
throw new FormationNotFoundException ( ) ;
epContext . Remove ( formation ) ;
await epContext . SaveChangesAsync ( ) ;
return GetFormationDTO ( formation ) ;
}
# endregion
#region Méthodes Privée
/// <summary>
/// Vérifier si un objet FormationDTO est valide pour ajout ou mise à jour
/// </summary>
/// <remarks> Un objet FormationDTO est valide si aucune de ses propriétés n'est à null</remarks>
/// <param name="formation"></param>
/// <returns>true si l'objet est valide, false sinon</returns>
private bool IsFormationValide ( FormationDTO formation )
{
return ! ( formation = = null | | formation . IdAgence = = null | | formation . Intitule = = null | | formation . Organisme = = null ) ;
}
#region Object to DTO
/// <summary>