public ActionResult Index([Bind(Include = "name,typeOfSearch,minPrice,maxPrice,status")] SearchAuctionViewModel sa) { //search parameters var name = sa.name; var minPrice = sa.minPrice; var maxPrice = sa.maxPrice; var status = sa.status; var typeOfSearch = sa.typeOfSearch; var query = db.Auctions.Where(s => s.name.Contains(name)); //search for auctions with that name var aList = query.ToList(); //.FirstOrDefault<Auction>(); if (aList == null) { return(HttpNotFound()); } var savcm = new SearchAuctionViewContainerModel(); savcm.searchAuctionViewModel = new SearchAuctionViewModel(); savcm.auctionList = aList.ToPagedList(1, 3); return(View(savcm)); //return View(db.Auctions.ToList()); }
// GET: Auctions public ActionResult Index([Bind(Include = "name,typeOfSearch,minPrice,maxPrice,status")] SearchAuctionViewModel sa, string currentFilter, int?page, string sortOrder, string searchString) { var savcm = new SearchAuctionViewContainerModel(); //na pocetku kreiram dole postavljam savcm.searchAuctionViewModel = new SearchAuctionViewModel(); int pageSize = 5; //elemenata po strani int pageNumber = (page ?? 1); //trenutna strana //search parameters var name = sa.name; var minPrice = sa.minPrice; var maxPrice = sa.maxPrice; var status = sa.status; var typeOfSearch = sa.typeOfSearch; //SVE AUCKIJE IQueryable <Auction> auctionsList = db.Auctions; //savcm.auctionList = db.Auctions.OrderBy(a => a.Id).ToPagedList(pageNumber, pageSize); //Filter minimal price if (minPrice != Decimal.Zero) { auctionsList = auctionsList.Where(a => a.price >= minPrice); } //Filter maximal price if (maxPrice != Decimal.Zero) { auctionsList = auctionsList.Where(a => a.price <= maxPrice); } //Filter status of auction if (!String.IsNullOrEmpty(status)) { auctionsList = auctionsList.Where(a => a.status.Equals(status)); } //EXACT ALL po default-u kada nema typeOfSearch if (String.IsNullOrEmpty(typeOfSearch) && !String.IsNullOrEmpty(name)) { //EXACT ALL auctionsList = auctionsList.Where(a => a.name.Equals(name)); } else if (!String.IsNullOrEmpty(name)) //NEKI OD OSTALIH VRSTA PRETRAGA { string[] keywords = name.Split(null); //pripremi kljucne reci var predicate = PredicateBuilder.False <Auction>(); switch (typeOfSearch) { case "EK": //Exact Keywords -> where Name like 'first' AND Name like 'second'... foreach (string keyword in keywords) { string temp = keyword; predicate = predicate.And(a => a.name.Equals(temp)); } break; case "PA": //Partial All -> where Name like 'Go He' auctionsList = auctionsList.Where(a => a.name.Contains(name)); break; case "PK": //Partial Keywords -> where Name like 'first' OR Name like 'second'... foreach (string keyword in keywords) { string temp = keyword; predicate = predicate.Or(a => a.name.Contains(temp)); } break; } //isto za sva 3 slucaja auctionsList = auctionsList.Where(predicate); } savcm.auctionList = auctionsList.OrderByDescending(o => o.closing).ToPagedList(pageNumber, pageSize); return(View(savcm)); }