Exemple #1
0
        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);
            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)
        {
            // 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));
        }
Exemple #4
0
        public JsonResult listeProduits(HotelViewModel hvm)
        {
            SearchBase s = new Search();

            if (hvm.DateIndifferente == null)
            {
                if (hvm.DateMarge == null)
                {
                    s = new SearchOptionDateDepart(s, hvm._dateDepart, hvm._dateDepart);
                }
                else
                {
                    s = new SearchOptionDateDepart(s, hvm._dateDepart, hvm._dateDepart.AddDays((double)hvm.DateMarge));
                }
            }
            s = new SearchOptionAPartirDAujourdHui(s);
            // TODO Attention ici il peut n'y avoir qu'une seule renseignée
            s = new SearchOptionDuree(s, hvm.DureeMini, hvm.DureeMaxi);
            s = new SearchOptionNbPers(s, hvm.NbPers);
            s = new SearchOptionPrixMax(s, hvm.PrixMaxi);
            s = new SearchOptionPrixMin(s, hvm.PrixMini);
            //var prods = _db.Produits.Where(p => p.Sejours.IdHotel == hvm.IdHotel)
            //                .Where(p=>p.Sejours.Duree >= hvm.DureeMinSejour) ;
            //// TODO Attention aux filtres concurents pour le dateDebut
            //if (hvm.DureeMaxSejour != null) {
            //    prods = prods.Where(p=>p.Sejours.Duree<=hvm.DureeMaxSejour) ;
            //}
            //if (hvm._dateDepart!=null) {
            //    prods = prods.Where(p=>p.DateDepart >= hvm._dateDepart) ;
            //}
            ////if (hvm._dateDebut != null)
            ////{
            //    prods = prods.Where(p => p.DateDepart >= hvm._dateDebut);
            ////}
            //////if (hvm._dateFin != null)
            ////{
            //    prods = prods.Where(p => p.DateDepart <= hvm._dateFin);
            ////}
            //    if (hvm.NbPers >= 0)
            //    {
            //        prods = prods.Where(p => ((p.NbPlaces - (p.Reservations.Count() != 0 ? p.Reservations.Sum(r => r.Quantity) : 0)) >= hvm.NbPers));
            //    }

            // HACK AsEnumerable avant le select ? Sinon ATTENTION, le nb_restants ne sera
            // pas à jour pour les prouits n'ayant pas de réservation, nécessite opérateur ternaire poutr jointure externe
            // TODO : decorator pour l'hôtelk afin de le placer en premier
            var result = s.GetResult().Where(p => p.Sejours.Hotels.IdHotel == hvm.IdHotel)
                         .AsEnumerable()
                         .Select(p => new {
                date        = p.DateDepart.ToString("dd/MM/yyyy"),
                duree       = p.Sejours.Duree,
                prix        = p.Prix,
                promotions  = p.Promotion,
                prixSolde   = p.PrixSolde,
                nb_restants = p.NbPlaces - p.Reservations.Sum(r => r.Quantity),
                sejour      = p.IdProduit
            }
                                 );

            return(Json(result, JsonRequestBehavior.AllowGet));
        }