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;
            });
        }
Exemplo n.º 2
0
        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);
        }
Exemplo n.º 3
0
        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));
        }