예제 #1
0
 public void UpdateAutoSearchItem(SearchTourItem item)
 {
     item.Num = item.Num;
     AutoSearchViewModel.Instance.Items[int.Parse(item.Num) - 1] = item;
     DataBase.Update(item, DBTable.AutoSearchTour);
     DataBase.Delete <FoundTour>(apart => item.Id == apart.SearchId, DBTable.FoundTour);
 }
예제 #2
0
        public async void GetTours(SearchTourItem searchParams)
        {
            var result = await AnexScraper.GetTours(searchParams);

            ResultViewModel.Instance.Items = result;

            ResultViewModel.Instance.ShowAnimation = Visibility.Hidden;
            ResultViewModel.Instance.ShowResult    = Visibility.Visible;

            if (result.Count == 0)
            {
                ResultViewModel.Instance.ShowStatus = Visibility.Visible;
                ResultViewModel.Instance.ShowResult = Visibility.Hidden;
            }
            else
            {
                foreach (var i in ResultViewModel.Instance.Items)
                {
                    if (!isLoading)
                    {
                        break;
                    }
                    i.ImageUrlInfo = await AnexScraper.ImgUrl(i.HotelId);

                    await Task.Delay(250);
                }
            }
        }
예제 #3
0
        public override async Task <List <TourItem> > GetTours(SearchTourItem searchParams)
        {
            int    time = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds;
            string url  = string.Format("https://search.bankturov.ru/api/mobile/v1/search?departure_id={0}&destination_id={1}&adult_num={2}&child_num={3}&arrivalDateFrom={4}&arrivalDateTo={5}&nonstop=true&ticket=true&nightsStart={6}&nightsEnd={7}&hotelStars[]=1&hotelStars[]=2&hotelStars[]=3&hotelStars[]=4&hotelStars[]=5&mealType[]=1&mealType[]=2&mealType[]=3&mealType[]=4&mealType[]=5&mealType[]=6&resort_id[]={11}&minCost={8}&maxCost={9}&valute=RUB&offer_currency=RUB&source=search_online_page&_={10}",
                                        searchParams.FromCityId, searchParams.ToCityId, searchParams.AdultCount, searchParams.ChildCount, searchParams.DateFrom, searchParams.DateTo, searchParams.NightStart, searchParams.NightEnd, searchParams.MinCost, searchParams.MaxCost, time);

            var    httpClient = new HttpClient();
            string html       = await httpClient.GetStringAsync(url);

            dynamic result = JsonConvert.DeserializeObject(html);

            Console.WriteLine(result);
            var tours = new List <TourItem>();

            if (result.success == false)
            {
                return(tours);
            }

            foreach (var el in result.data.rows)
            {
                var tour = new TourItem()
                {
                    Cost            = el.costValues.RUB.source,
                    MealDescription = el.meal_description,
                    Resort          = el.curort,
                    Date            = el.date,
                    PageUrl         = String.Format("https://sletat.ru/tour/{0}-{1}-{2}", el.to, el.offer_id, el.search_id),
                };
                tours.Add(tour);
            }
            return(tours);
        }
예제 #4
0
        public override async Task <List <TourItem> > GetTours(SearchTourItem searchParams)
        {
            try
            {
                var    t      = searchParams.DateTo.Split('.');
                string dateTo = t[2] + t[1] + t[0];

                t = searchParams.DateFrom.Split('.');
                string dateFrom = t[2] + t[1] + t[0];

                string urlParams = string.Format("ADULT={0}&CHILD={1}&CHECKIN_BEG={2}&CHECKIN_END={3}&NIGHTMAX={4}&NIGHTMIN={5}&STATE={6}&CURRENCY=1&PARTITION_PRICE=40&COSTMAX={9}&COSTMIN={8}&FILTER=6&PRICE_PAGE=1&RECONPAGE=400&UFILTER=0&REGULAR=True&CHARTER=True&SORT_TYPE=0&REGIONTO=&TOWNFROM={7}",
                                                 searchParams.AdultCount, searchParams.ChildCount, dateFrom, dateTo, searchParams.NightEnd, searchParams.NightStart, searchParams.ToCityId, searchParams.FromCityId, searchParams.MinCost, searchParams.MaxCost);

                string url = "https://webapisearch.anextour.com/b2c/Search?" + urlParams;

                var httpClient = new HttpClient();
                httpClient.DefaultRequestHeaders.Add("user-agent", "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/81.0.4044.138 Safari/537.36");

                string html = await httpClient.GetStringAsync(url);

                var result = new List <TourItem>();

                dynamic items = JsonConvert.DeserializeObject(html);

                foreach (var it in items[0].prices)
                {
                    try
                    {
                        string date = it.CheckIn;
                        date = date.Substring(6, 2) + "." + date.Substring(4, 2) + "." + date.Substring(0, 4);
                        var item = new TourItem()
                        {
                            Cost            = it.converted_price,
                            PageUrl         = "https://www.anextour.com" + it.Slug + "?" + urlParams,
                            HotelId         = (int)it.HotelInc,
                            MealDescription = it.MealNote,
                            Date            = date,
                            TownName        = it.TownName,
                            CityTo          = items[0].state.name
                        };
                        result.Add(item);
                    }
                    catch (Exception ex)
                    {
                        Console.WriteLine(ex);
                    }
                }
                return(result);
            }
            catch (Exception e)
            {
                Console.WriteLine(e);
                return(new List <TourItem>());
            }
        }
예제 #5
0
        public void DeleteAutoSearchItem(SearchTourItem item)
        {
            DataBase.Delete <FoundTour>(tour => item.Id == tour.SearchId, DBTable.FoundTour);

            DataBase.Delete(item.Id, DBTable.AutoSearchTour);
            AutoSearchViewModel.Instance.Items.Remove(item);

            for (int i = 0; i < AutoSearchViewModel.Instance.Items.Count; i++)
            {
                AutoSearchViewModel.Instance.Items[i].Num = (i + 1).ToString();
            }
        }
예제 #6
0
        public void GetFoundTours(SearchTourItem item)
        {
            ResultViewModel.Instance.Items = DataBase.Query <FoundTour>(DBTable.FoundTour)
                                             .Where(a => a.SearchId == item.Id)
                                             .Select(a => a.Tour).ToList();

            ResultViewModel.Instance.ShowAnimation = Visibility.Hidden;
            ResultViewModel.Instance.ShowResult    = Visibility.Visible;

            if (ResultViewModel.Instance.Items.Count == 0)
            {
                ResultViewModel.Instance.ShowResult = Visibility.Hidden;
                ResultViewModel.Instance.ShowStatus = Visibility.Visible;
            }
            ResultViewModel.Instance.Items.ForEach(async t =>
            {
                if (t.ImageUrl == "pack://siteoforigin:,,,/Resources/noImage.png")
                {
                    t.ImageUrlInfo = await AnexScraper.ImgUrl(t.HotelId);
                    DataBase.Update(t, DBTable.FavoriteTour);
                    await Task.Delay(250);
                }
            });
        }
예제 #7
0
 public void AddNewAutoSearchItem(SearchTourItem item)
 {
     item.Num = (AutoSearchViewModel.Instance.Items.Count + 1).ToString();
     DataBase.Insert(item, DBTable.AutoSearchTour);
     AutoSearchViewModel.Instance.Items.Add(item);
 }