async public Task LoadSearchOffers(string q) { if (string.IsNullOrWhiteSpace(q)) { return; } if (IsSearchOffersLoading) { return; } HasSearchOffers = null; IsSearchOffersLoading = true; var options = new EtaApiQueryStringParameterOptions(); options.AddParm(EtaApiConstants.EtaApi_Latitude, UserViewModel.Location.Latitude.ToString("0.00000")); options.AddParm(EtaApiConstants.EtaApi_Longitude, UserViewModel.Location.Longitude.ToString("0.00000")); options.AddParm(EtaApiConstants.EtaApi_LocationDetermined, UNIXTime.GetTimestamp(DateTime.Now)); options.AddParm(EtaApiConstants.EtaApi_Geocoded, UserViewModel.Location.IsGeoCoded ? "0" : "0"); options.AddParm(EtaApiConstants.EtaApi_Accuracy, "1");//userModel.Location.Accuracy.ToString()); options.AddParm(EtaApiConstants.EtaApi_Ditance, UserViewModel.Distance.ToString()); var response = await Api.GetOfferSearchAsync(options, q); await Deployment.Current.Dispatcher.InvokeAsync(() => { if (OffersSearch.Any()) { OffersSearch.Clear(); } if (response.HasErrors) { IsSearchLoaded = false; } else { foreach (var offer in response.Result) { OffersSearch.Add(offer); } IsSearchLoaded = true; } HasSearchOffers = OffersSearch.Any(); IsSearchOffersLoading = false; }); }
public List <Offer> FilterOffers(OffersSearch search) { search.dateFrom = string.IsNullOrEmpty(search.dateFrom) ? "1999-01-01" : search.dateFrom; search.dateTo = string.IsNullOrEmpty(search.dateTo) ? "2100-01-01" : search.dateTo; search.peopleFrom = string.IsNullOrEmpty(search.peopleFrom) ? "1" : search.peopleFrom; search.peopleTo = string.IsNullOrEmpty(search.peopleTo) ? "20" : search.peopleTo; search.priceFrom = string.IsNullOrEmpty(search.priceFrom) ? "0" : search.priceFrom; search.priceTo = string.IsNullOrEmpty(search.priceTo) ? "100000" : search.priceTo; var sqlQuery = $"SELECT OFFERS.*, HOTELS.NAME AS HOTEL_NAME FROM OFFERS INNER JOIN HOTELS ON HOTELS.ID_HOTEL = OFFERS.ID_HOTEL" + $" WHERE OFFERS.NAME LIKE '%" + search.nameSearch + "%' AND OFFERS.DESCRIPTION LIKE '%" + search.descriptionSearch + "%' AND HOTELS.NAME LIKE '%" + search.hotelName + "%'" + $" AND OFFERS.DATE_START BETWEEN @dateFrom AND @dateTo AND OFFERS.DATE_END BETWEEN @dateFrom AND @dateTo AND OFFERS.PRICE BETWEEN @priceFrom AND @priceTo " + $" AND OFFERS.PEOPLE_FROM >= @peopleFrom and OFFERS.PEOPLE_TO <= @peopleTo"; List <Offer> offers = db.Query <Offer>(sqlQuery, search).ToList(); return(offers); }
public ActionResult Index(OffersSearch search, int?page, string name, string hotelName, string description, string dateFrom, string dateTo, string peopleFrom, string peopleTo, string priceFrom, string priceTo) { ViewBag.CurrentSearch = new OffersSearch(); ViewBag.empty = null; if (search != null) { page = 1; ViewBag.CurrentSearch = search; } else { ViewBag.CurrentSearch.nameSearch = name; ViewBag.CurrentSearch.hotelName = hotelName; ViewBag.CurrentSearch.descriptionSearch = description; ViewBag.CurrentSearch.dateFrom = dateFrom; ViewBag.CurrentSearch.dateTo = dateTo; ViewBag.CurrentSearch.peopleFrom = peopleFrom; ViewBag.CurrentSearch.peopleTo = peopleTo; ViewBag.CurrentSearch.priceFrom = priceFrom; ViewBag.CurrentSearch.priceTo = priceTo; search = ViewBag.CurrentSearch; } int pageSize = 10; int pageNumber = (page ?? 1); var user = HttpContext.User.Identity; bool canEdit = user.Name == "Admin" ? true : false; bool canBook = user.Name != "" ? true : false; var offers = _offersSqlExecutor.FilterOffers(search); OffersModel model = new OffersModel { Offers = offers.ToPagedList <Offer>(pageNumber, pageSize), CanEdit = canEdit, CanBook = canBook, Search = search }; return(View(model)); }