示例#1
0
        public async Task <ActionResult <RaceItem> > PostRaceItem(RaceItem item)
        {
            //item.Owner = User.Identity.Name;
            item.FreeSeats = item.Seats;
            _context.RaceItems.Add(item);
            await _context.SaveChangesAsync();

            return(CreatedAtAction(nameof(GetRaceItem), new { id = item.Id }, item));
        }
示例#2
0
        public static RaceItem ProcessJSONToRaceItem(String jsonString)
        {
            RaceItem raceItem = JsonConvert.DeserializeObject <RaceItem>(jsonString);

            JObject           json       = JObject.Parse(jsonString);
            JArray            runners    = (JArray)json["runners"];
            List <RunnerItem> runnerList = runners.ToObject <List <RunnerItem> >();

            runnerList.Sort((x, y) =>
                            x.Odds.CompareTo(y.Odds));

            raceItem.SetRunnerList(runnerList);

            return(raceItem);
        }
示例#3
0
        public void updateRace(RaceItem raceItem)
        {
            LRaceCourse.Text = string.Format(Strings.info_course, raceItem.GetCourse());

            DateTime raceTime;

            if (DateTime.TryParse(raceItem.GetTime(), out raceTime))
            {
                LRaceTime.Text = string.Format(Strings.info_race_time, raceTime.ToString());

                int minutesUntilRace = (int)(raceTime - DateTime.Now).TotalMinutes;
                LMinutesTillRace.Text = string.Format(Strings.info_minutes_till_race, minutesUntilRace);
            }
            LRaceDistance.Text = string.Format(Strings.info_distance, raceItem.GetDistance().ToString());

            this.LvRunners.ItemsSource = raceItem.GetRunnerList();
        }
示例#4
0
        public async Task <IActionResult> PutRaceItem(long id, RaceItem item)
        {
            if (id != item.Id)
            {
                return(BadRequest());
            }
            var authorizationResult = await _authorizationService
                                      .AuthorizeAsync(User, item, "IsOwnerPolicy");

            if (authorizationResult.Succeeded)
            {
                _context.Entry(item).State = EntityState.Modified;
                await _context.SaveChangesAsync();


                return(NoContent());
            }
            else if (User.Identity.IsAuthenticated)
            {
                if (item.Participants == null)
                {
                    item.Participants = new string[item.Seats];
                }
                if (item.Participants.Contains(User.Identity.Name))
                {
                    return(Content("Jestes juz zapisany do tego przejazdu."));
                }
                if (item.FreeSeats > 0)
                {
                    item.Participants[item.Seats - item.FreeSeats] = User.Identity.Name;
                    item.FreeSeats--;
                    _context.Entry(item).State = EntityState.Modified;
                    await _context.SaveChangesAsync();

                    return(NoContent());
                }
                return(Content("Brak wolnych miejsc"));
            }
            else
            {
                return(new ChallengeResult());
            }
        }
示例#5
0
        //handle getting the race updates every mRetryDelay
        private bool UpdateRace()
        {
            String raceJsonString = GetRaceData.DownloadRaceData();

            if (Runnning && raceJsonString != null)
            {
                RaceItem raceItem = ProcessRaceItem.ProcessJSONToRaceItem(raceJsonString);
                if (Runnning && raceItem != null)
                {
                    Device.BeginInvokeOnMainThread(() =>
                                                   MainPage.updateRace(raceItem)
                                                   );
                }
            }

            if (Runnning)
            {
                UpdateRaceAfterDelay(RetryDelay);
            }

            return(false);
        }