GlobalSearchModel IGlobalSearchHelper.GetModel(string text) { var model = new GlobalSearchModel(); //inicjacja DDL słowa var typeSearch = new List<SelectListItem>(); typeSearch.Add(new SelectListItem { Text = "Zawiera", Value = "1" }); typeSearch.Add(new SelectListItem { Text = "Zaczyna się", Value = "2" }); typeSearch.Add(new SelectListItem { Text = "Nie zawiera", Value = "3" }); typeSearch.Add(new SelectListItem { Text = "Kończy się", Value = "4" }); model.TypeSearchWord = typeSearch; //inicjacja DDL filtru var filter = new List<SelectListItem>(); filter.Add(new SelectListItem { Text = "Alfabetycznie", Value = "1" }); filter.Add(new SelectListItem { Text = "Cena w dół", Value = "2" }); filter.Add(new SelectListItem { Text = "Cena w górę", Value = "3" }); model.Filter = filter; //inicjacja DDL kategori var catalog = new List<SelectListItem>(); catalog.Add(new SelectListItem { Text = "Wszystkie", Value = "1" }); var catalogs = _catalogRepository.Catalogs; foreach (var x in catalogs) { catalog.Add( new SelectListItem { Text = x.Name, Value = (x.Id + 1).ToString() } ); } model.Category = catalog; if (!String.IsNullOrEmpty(text)) { var selectedItems = _catalogRepository.Items .Where(x => x.Title.ToLower().Contains(text.ToLower())) .ToArray(); model.searchedItems = selectedItems; } return model; }
public ActionResult GlobalSearch(GlobalSearchModel model) { return View(_globalSearchHelper.SearchItems(model)); }
GlobalSearchModel IGlobalSearchHelper.SearchItems(GlobalSearchModel model) { //zczytujemy dane var word = model.Word; var selectedWord = model.SelectedTypeSearchWord; var selectedCategory = model.SelectedCategory; var selectedFilter = model.SelectedFilter; var odPrice = model.OdPirce; var doPrice = model.DoPrice; //inicjacja DDL słowa var typeSearch = new List<SelectListItem>(); typeSearch.Add(new SelectListItem { Text = "Zawiera", Value = "1" }); typeSearch.Add(new SelectListItem { Text = "Zaczyna się", Value = "2" }); typeSearch.Add(new SelectListItem { Text = "Nie zawiera", Value = "3" }); typeSearch.Add(new SelectListItem { Text = "Kończy się", Value = "4" }); model.TypeSearchWord = typeSearch; //inicjacja DDL filtru var filter = new List<SelectListItem>(); filter.Add(new SelectListItem { Text = "Alfabetycznie", Value = "1" }); filter.Add(new SelectListItem { Text = "Cena w dół", Value = "2" }); filter.Add(new SelectListItem { Text = "Cena w górę", Value = "3" }); model.Filter = filter; //inicjacja DDL kategori var catalog = new List<SelectListItem>(); catalog.Add(new SelectListItem { Text = "Wszystkie", Value = "1" }); var catalogs = _catalogRepository.Catalogs; foreach (var x in catalogs) { catalog.Add( new SelectListItem { Text = x.Name, Value = (x.Id + 1).ToString() } ); } model.Category = catalog; //pobieramy wszystkie itemki z bazy var items = _catalogRepository.Items.ToArray(); //Sprawdzamy kategorię -- jeżeli nie wszystkie do wyciągamy tą konkretną if (selectedCategory != 1) { items = items .Select(x => x) .Where(x => x.Id_Category.Equals((selectedCategory - 1))) .ToArray(); } //Sprawdzamy słowo -- dostępne są 4 różne scieżki if (!String.IsNullOrEmpty(word)) { switch (selectedWord) { case 1: items = items .Where(x => x.Title.ToLower().Contains(word.ToLower())) .ToArray(); break; case 2: items = items .Where(x => x.Title.StartsWith(word)) .ToArray(); break; case 3: items = items .Where(x => !(x.Title.ToLower().Contains(word.ToLower()))) .ToArray(); break; case 4: items = items .Where(x => x.Title.EndsWith(word)) .ToArray(); break; } } //Sprawdzamy cenę -- 4 scieżki if (odPrice.HasValue && doPrice.HasValue) { items = items .Where(x => (x.Price >= odPrice.Value || x.Price <= doPrice.Value)) .ToArray(); } else if (odPrice.HasValue) { items = items .Where(x => x.Price >= odPrice.Value) .ToArray(); } else if (doPrice.HasValue) { items = items .Where(x => x.Price <= doPrice.Value) .ToArray(); } //filtracja wyników -- 3 sciezki switch (selectedFilter) { case 1: items = items .OrderBy(x => x.Title) .ToArray(); break; case 2: items = items .OrderByDescending(x => x.Price) .ToArray(); break; case 3: items = items .OrderBy(x => x.Price) .ToArray(); break; } //zastąpienie itemków model.searchedItems = items; return model; }