/// <summary> /// Lance une recherche en base avec des critères spécifiques /// </summary> /// <param name="filterA">le prmeier des deux filtres</param> /// <param name="filterB">le deuxième filtre</param> /// <param name="genreSearch">si recherche par genre, le genre</param> /// <param name="personneSearch">si rechercher par perosnne, la personne recherchée</param> /// <returns></returns> private async Task <List <Film> > SearchGeneral(FilterBibliothequeEnum filterA, FilterBibliothequeEnum filterB, Genre genreSearch, Personne personneSearch) { //si aucun filtre on récupère toute la bibliothèque if (filterA == FilterBibliothequeEnum.NONE && filterB == FilterBibliothequeEnum.NONE) { return(await _filmBusiness.GetBibliotheque()); } //si c'est un filtre de personne ou de genre else if (filterA == FilterBibliothequeEnum.GENRE && genreSearch != null) { return(await _filmBusiness.GetFilm(genreSearch)); } else if (filterA == FilterBibliothequeEnum.PERSONNE && personneSearch != null) { return(await _filmBusiness.GetFilm(personneSearch)); } //si c'est n'importe quel autre filtre else { return(await _filmBusiness.GetFilm(filterA, filterB)); } }
/// <summary> /// Retourne une liste de film filtré /// </summary> /// <param name="filterA">le filtre appliqué</param> /// <param name="filterB">le deuxième filtre appliqué</param> /// <returns>la liste de film</returns> public async Task <List <Film> > GetFilm(FilterBibliothequeEnum filterA, FilterBibliothequeEnum filterB) { var liste = new List <Film>(); Expression <Func <Film, bool> > conditionA = null; Expression <Func <Film, bool> > conditionB = null; if (filterA == FilterBibliothequeEnum.FILMPOSSEDEAVOIR) { conditionA = (x => x.Posseder == true && x.SouhaitVoir == true); } if (filterA == FilterBibliothequeEnum.FILMPOSSEDE) { conditionA = (x => x.Posseder == true); } if (filterA == FilterBibliothequeEnum.FILMNONPOSSEDE) { conditionA = (x => x.Posseder == false); } if (filterA == FilterBibliothequeEnum.FILMNONPOSSEDEAVOIR) { conditionA = (x => x.Posseder == false && x.SouhaitVoir == true); } if (filterA == FilterBibliothequeEnum.FILMFAVORIS) { conditionA = (x => x.MaNote >= 4); } if (filterB == FilterBibliothequeEnum.FILM) { conditionB = x => x.Type == (int)TypeFilmEnum.FILM; } if (filterB == FilterBibliothequeEnum.SERIE) { conditionB = x => x.Type == (int)TypeFilmEnum.SERIE; } if (filterB == FilterBibliothequeEnum.SPECTACLE) { conditionB = x => x.Type == (int)TypeFilmEnum.SPECTACLE; } if (filterB == FilterBibliothequeEnum.DOCUMENTAIRE) { conditionB = x => x.Type == (int)TypeFilmEnum.DOCUMENTAIRE; } if (filterB == FilterBibliothequeEnum.ANIMATION) { conditionB = x => x.Type == (int)TypeFilmEnum.ANIMATION; } if (filterB == FilterBibliothequeEnum.COLLECTION) { conditionB = x => x.IdCollection > 0; } if (conditionB != null && conditionA != null) { liste = await Bdd.Connection.Table <Film>().Where(conditionA).Where(conditionB).ToListAsync(); } else if (conditionB == null && conditionA != null) { liste = await Bdd.Connection.Table <Film>().Where(conditionA).ToListAsync(); } else if (conditionB != null && conditionA == null) { liste = await Bdd.Connection.Table <Film>().Where(conditionB).ToListAsync(); } var listeFin = new List <Film>(); if (liste.Count > 0) { liste = await TriCollectionTitre(liste); foreach (var film in liste) { listeFin.Add(await SetInfosFilm(film, true, false)); } } return(listeFin); }