Esempio n. 1
0
        /// <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));
            }
        }
Esempio n. 2
0
        /// <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);
        }