Aller au contenu principal

12-3 Ajout d'une fonction FindByVilleId à EvenementRepository

EvenementRepository contiens 2 fonctions:

  • GetAll()
  • FindById(int id)

Aucune de ces 2 fonctions ne nous permet d'obtenir une liste d'événements correspondant à une ville. Il sera donc nécessaire de créer une fonction supplémentaire pour ce besoin.

De plus, nous pouvons anticiper et se dire que cette fonction pourrait être utilisée afin de filtrer par plus que simplement la ville (dans le but d'un filtre multiple par exemple).

Ajouter la fonction FindByVilleId

  1. Modification de l'interface. Pour débuter, ajoutez à l'interface du repository la signature de la fonction.

    Snowfall.Data/Repositories/IEvenementRepository.cs
    public interface IEvenementRepository
    {
    Task<List<Evenement>> GetAll();
    Task<List<Evenement>> FindByVilleId(int villeId);
    Task<Evenement?> FindById(int id);

    }
  2. Modification du repository. Vous pouvez par la suite faire Implement missing members à partir de la classe EvenementRepository qui sera en erreur. Imgur

    Remarquez que la fonction sera placée au même endroit que vous l'avez placé dans l'interface. Dans mon cas, entre la fonction GetAll() et FindById. J'ai décidé de regrouper ensemble les fonctions retournant des listes.

    Snowfall.Data/Repositories/EvenementRepository.cs
    //...
    public async Task<List<Evenement>> FindByVilleId(int villeId)
    {
    throw new NotImplementedException();
    }
    //...

Implémenter la fonction FindByVilleId

Oh non! Le retour du chat mangeur de fils!

Vous devrez vous-même implémenter la fonction FindByVilleId.

Vous devrez faire la bonne requête SQL afin de récupérer la liste d'événements correctement filtrés en fonction de ville_id.

img