public static List<SearchResutPartialViewItem> GetSearchResult(SearchViewModel svm)
        {
            // Search et SearchOption héritent de SearchBase
            SearchBase s = new Search();
            s = new SearchOptionDestination(s, svm.Continent, svm.Region, svm.Pays, svm.Ville);
            if (svm.DateIndifferente == null)
            {
                if (svm.DateMarge == null)
                {
                    s = new SearchOptionDateDepart(s, svm.DateDepart, svm.DateDepart);
                }
                else
                {
                    s = new SearchOptionDateDepart(s, svm.DateDepart, svm.DateDepart.AddDays((double)svm.DateMarge));
                }
            }
            s = new SearchOptionAPartirDAujourdHui(s);
            // TODO Attention ici il peut n'y avoir qu'une seule renseignée
            s = new SearchOptionDuree(s, svm.DureeMini, svm.DureeMaxi);
            s = new SearchOptionNbPers(s, svm.NbPers);
            s = new SearchOptionCategorie(s, svm.Categorie);
            s = new SearchOptionPrixMax(s, svm.PrixMaxi);
            s = new SearchOptionPrixMin(s, svm.PrixMini);

            // Intégration de DateDepart > DateTime.Now ici car on n'est pas intéressé par un produit périmé
            return OrderingGroupResult(s, "Search");
        }
        public static List<SearchResutPartialViewItem> GetSearchResult(SearchViewModel svm)
        {
            Form115Entities db = new Form115Entities();

            // Search et SearchOption héritent de SearchBase
            SearchBase s = new Search();
            s = new SearchOptionDestination(s, svm.Continent, svm.Region, svm.Pays, svm.Ville);
            //s = new SearchOptionDateDepart(s, svm.DateDepart);
            s = new SearchOptionDuree(s, svm.Duree);
            s = new SearchOptionNbPers(s, svm.NbPers);
            s = new SearchOptionCategorie(s, svm.Categorie);
            s = new SearchOptionPrixMax(s, svm.PrixMax);
            s = new SearchOptionPrixMin(s, svm.PrixMin);

            // Intégration de DateDepart > DateTime.Now ici car on n'est pas intéressé par un produit périmé
            return s.GetResult()
                    .Where(p => p.DateDepart >= DateTime.Now)
                    .GroupBy(p => p.Sejours.Hotels.IdHotel,
                             p => p,
                             (key, g) => new SearchResutPartialViewItem
                                             {
                                                 Hotel = db.Hotels.Where(h => h.IdHotel == key).FirstOrDefault(),
                                                 Produits = g.ToList()
                                             })
                    .ToList();
        }
        public static List<SearchResutPartialViewItem> GetSearchResult(SearchViewModel svm)
        {
            // Search et SearchOption héritent de SearchBase
            SearchBase s = new Search();
            s = new SearchOptionDestination(s, svm.Continent, svm.Region, svm.Pays, svm.Ville);
            s = new SearchOptionDateDepart(s, svm.DateDepart);
            s = new SearchOptionAPartirDAujourdHui(s);
            s = new SearchOptionDuree(s, svm.Duree);
            s = new SearchOptionNbPers(s, svm.NbPers);
            s = new SearchOptionCategorie(s, svm.Categorie);
            s = new SearchOptionPrixMax(s, svm.PrixMax);
            s = new SearchOptionPrixMin(s, svm.PrixMin);

            // Intégration de DateDepart > DateTime.Now ici car on n'est pas intéressé par un produit périmé
            return OrderingGroupResult(s);
        }