public ActionResult Result(SearchViewModel svm) { svm.SerializeSearchViewModel(); svm.Result = GetSearchResult(svm); //svm._stringDateDepart = new DateTime(2016, 1, 1).ToString("dd/MM/yyyy"); return View(svm); }
// GET: Search /// <summary> /// Les menus déroulants des champs du formulaire de recherche sont remplis par des requêtes linq à la base de données. /// Les menus prix et durée sont remplis par des méthodes prédéfinies dans une classe utilitaire ListesChoix. /// Dans le cas de plusieurs recherches successives, les valeurs des champs sont gardées grâce à un SearchViewModel sérialisé passé en paramètre. /// Les champs sont préremplis avec ces valeurs dans le formulaire à la recherche suivante. /// </summary> /// <param name="ssvm"></param> /// <returns>searchViewModel à la vue partielle index de Search</returns> public PartialViewResult Index(string ssvm) { SearchViewModel svm; if (string.IsNullOrEmpty(ssvm)) { svm = new SearchViewModel(); } else { svm = SearchViewModel.UnserializeSearchViewModel(ssvm); } svm.Destination = db.Regions.OrderBy(r => r.Nom).ToDictionary(r => r.Nom, r => r.Pays.ToDictionary(p => p.CodeIso3, p => p.Nom)); svm.Themes = db.Themes.OrderBy(t => t.Libelle).AsEnumerable().Select(t => new KeyValuePair<int, string>(t.IdTheme, t.Libelle)).ToList(); svm.Ports = db.Ports.OrderBy(t => t.Nom).AsEnumerable().Select(t => new KeyValuePair<int, string>(t.IdPort, t.Nom)).ToList(); svm.ListTranchePrix = ListesChoix.ListTranchePrix(); svm.ListTrancheDuree = ListesChoix.ListTrancheDuree(); //#if DEBUG // svm.IdPays = "FRA"; // svm.DateDepart = new DateTime(2016, 1, 1).ToString("dd/MM/yyyy"); //#endif return PartialView("_Index", svm); }
//Recherche avec options /// <summary> /// Avec un décorateur, la liste de toutes les croisières de la base sera filtrée avec tous les critères de recherche entrés. /// </summary> /// <param name="searchViewModel"></param> /// <returns>une liste de croisières</returns> private static List<Croisieres> GetSearchResult(SearchViewModel searchViewModel) { SearchBase search = new Search(); search = new SearchOptionIdDuree(search, searchViewModel.IdDuree); search = new SearchOptionDateDepart(search, searchViewModel._dateDepart); search = new SearchOptionIdPrix(search, searchViewModel.IdPrix); search = new SearchOptionDestination(search, searchViewModel.IdPays); search = new SearchOptionPortDepart(search, searchViewModel.IdPortDepart); search = new SearchOptionTheme(search, searchViewModel.IdTheme); return search.GetResult().ToList(); }