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); }
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); } } }
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); }
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®ULAR=True&CHARTER=True&SORT_TYPE=0®IONTO=&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>()); } }
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(); } }
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); } }); }
public void AddNewAutoSearchItem(SearchTourItem item) { item.Num = (AutoSearchViewModel.Instance.Items.Count + 1).ToString(); DataBase.Insert(item, DBTable.AutoSearchTour); AutoSearchViewModel.Instance.Items.Add(item); }