예제 #1
0
        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");
        }
예제 #2
0
 public static List<SearchResutPartialViewItem> GetSearchResult(BrowseViewModel bvm)
 {
     SearchBase s = new Search();
     s = new SearchOptionDestination(s, bvm.Continent, bvm.Region, bvm.Pays, bvm.Ville);
     s = new SearchOptionAPartirDAujourdHui(s);
     s = new SearchOptionNbPers(s, 1);
     return OrderingGroupResult(s, "Browse");
 }
예제 #3
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);
        }