コード例 #1
0
        private async void coaches_ItemClick(object sender, ItemClickEventArgs e)
        {
            coach = e.ClickedItem as Coach;

            IDictionary <string, string> parameters = train.getParameters(coach);
            string res = await Requests.makeRequestAsync(Requests.CARRIAGE_URL, parameters);

            //debugOutput.Text = coach.Prices.ToString();

            CarriageResponse resp = Factory.Instance.getCarriageResponse(res);

            places.DataContext = resp.Value.Places;
        }
コード例 #2
0
        private static async Task checkRequestsAsyncHelper()
        {
            IEnumerable <Request> requests = AppDataManager.RetrieveRequests();
            int addedForRequests           = 0;

            try
            {
                foreach (Request req in requests)
                {
                    bool         found    = false;
                    TrainRequest trainReq = new TrainRequest()
                    {
                        from      = req.from,
                        to        = req.to,
                        date      = req.depDateFrame.since,
                        time      = req.depTimeFrame.since,
                        roundTrip = false
                    };
                    TrainResponse trainResp;
                    try
                    {
                        trainResp = Factory.Instance.getTrainResponse(
                            await Requests.makeRequestAsync(Requests.TRAIN_URL, trainReq.getParameters()));
                    }
                    catch (Exception) { continue; }
                    foreach (Train train in trainResp.Trains)
                    {
                        int available = 0;
                        foreach (CoachType type in train.CoachTypes)
                        {
                            try
                            {
                                CoachResponse coachResp = Factory.Instance.getCoachResponse(
                                    await Requests.makeRequestAsync(Requests.COACH_URL, train.getParameters(type, false)));
                                foreach (Coach coach in coachResp.Wrapper.Coaches)
                                {
                                    CarriageResponse carResp = Factory.Instance.getCarriageResponse(
                                        await Requests.makeRequestAsync(Requests.CARRIAGE_URL, train.getParameters(coach)));

                                    available += countAvailavle(req, train, type, coach, carResp.Value.Places);
                                }
                            }
                            catch (Exception) { }
                        }

                        if (!req.available.ContainsKey(train.Number))
                        {
                            req.available[train.Number] = 0;
                        }
                        if (available > req.available[train.Number] + 1)
                        {
                            Notification.SendToast(
                                "З'явилось " + (available - req.available[train.Number]) + " місць",
                                train.Number + " " + req.from.Name + " - " + req.to.Name + ", " + train.From.Date,
                                DateTimeOffset.Now.AddSeconds(15),
                                "UZTracer.TrainPage?" + JsonConvert.SerializeObject(train));

                            found = true;
                        }
                        req.available[train.Number] = available;
                    }
                    addedForRequests += found ? 1 : 0;
                }
            }
            catch (Exception) { }
            finally
            {
                Notification.UpdateBadge(addedForRequests);
                AppDataManager.SaveRequests(requests);
            }
        }