コード例 #1
0
        public async Task <IActionResult> JoinBetGroup([FromBody] JoinBetGroupCommand command)
        {
            var user = await GetCurrentUser();

            var betGroup = await _dbContext
                           .BetGroups
                           .SingleOrDefaultAsync(q => q.GroupCode == command.GroupCode);

            if (betGroup == null)
            {
                return(NotFound());
            }

            var existingBetUserGroup = await _dbContext
                                       .UserBetGroups.
                                       SingleOrDefaultAsync(q => q.BetGroupId == betGroup.Id && q.UserId == user.Id);

            if (existingBetUserGroup != null)
            {
                return(Ok(new { betGroup.Name, betGroup.Id }));
            }

            var newBetUserGroup = new UserBetGroup()
            {
                BetGroupId = betGroup.Id,
                UserId     = user.Id
            };

            _dbContext.Add(newBetUserGroup);

            await AddEmptyBonusPredictionsForUser(newBetUserGroup);

            await _dbContext.SaveChangesAsync();

            return(Ok(new { betGroup.Name, betGroup.Id }));
        }
コード例 #2
0
        public async Task Run()
        {
            var httpClient          = _httpClientFactory.CreateClient("LiveScoreAPIClient");
            var httpResponseMessage = await httpClient.GetAsync(_liveUrl);

            var jsonResult = await httpResponseMessage.Content.ReadAsStringAsync();

            dynamic result = JsonConvert.DeserializeObject(jsonResult,
                                                           new JsonSerializerSettings()
            {
                DateParseHandling = DateParseHandling.None
            });

            var standings = result.standings as JObject;

            foreach (var group in standings.Properties())
            {
                foreach (var team in group.Children())
                {
                    var firstTeamName  = team.ElementAt(0)["team"].Value <string>();
                    var secondTeamName = team.ElementAt(1)["team"].Value <string>();

                    var groupName = "Group " + team.ElementAt(0)["group"];

                    var worldcupGroup = _dbContext.WorldCupGroups.Single(q => q.Name == groupName);
                    var firstTeam     = _dbContext.Teams.Single(q => q.Name == firstTeamName);
                    var secondTeam    = _dbContext.Teams.Single(q => q.Name == secondTeamName);

                    var lastDateOfGroupMatches = _dbContext.Matches.Where(q => q.MatchType == MatchType.Group &&
                                                                          q.HomeTeamScore.Team.WorldCupGroupId == worldcupGroup.Id)
                                                 .Max(q => q.DateTime);

                    if (DateTime.Now > lastDateOfGroupMatches.ToLocalTime())
                    {
                        worldcupGroup.WinnerId   = firstTeam.Id;
                        worldcupGroup.RunnerupId = secondTeam.Id;
                    }
                }
            }

            await _dbContext.SaveChangesAsync();
        }
コード例 #3
0
        public async Task Run()
        {
            var currentMatches = await _dbContext
                                 .Matches
                                 .Include(m => m.HomeTeamScore.Team)
                                 .Include(m => m.AwayTeamScore.Team)
                                 .Where(q => q.DateTime.LocalDateTime < DateTime.Now && q.MatchStatus != MatchStatus.Finished)
                                 .ToArrayAsync();


            if (currentMatches.Length == 0)
            {
                return;
            }

            var httpClient          = _httpClientFactory.CreateClient("LiveScoreAPIClient");
            var httpResponseMessage = await httpClient.GetAsync(_liveUrl);


            var jsonResult = await httpResponseMessage.Content.ReadAsStringAsync();

            dynamic result = JsonConvert.DeserializeObject(jsonResult,
                                                           new JsonSerializerSettings()
            {
                DateParseHandling = DateParseHandling.None
            });

            JArray fixtures = result.fixtures;

            foreach (var match in currentMatches)
            {
                var homeTeamName = match.HomeTeamScore.Team.Name;
                var awayTeamName = match.AwayTeamScore.Team.Name;
                var matchDate    = match.DateTime.LocalDateTime;

                for (int i = 0; i < fixtures.Count; i++)
                {
                    dynamic fixture = fixtures[i];
                    var     date    = DateTime.Parse((string)fixture.date);

                    if (homeTeamName == (string)fixture.homeTeamName &&
                        awayTeamName == (string)fixture.awayTeamName &&
                        matchDate == date)
                    {
                        string status = fixture.status;

                        if (status == "IN_PLAY")
                        {
                            match.MatchStatus = MatchStatus.InPlay;
                        }
                        else if (status == "FINISHED")
                        {
                            match.MatchStatus = MatchStatus.Finished;
                        }

                        match.HomeTeamScore.PenaltyResult = (short?)fixture.result.penaltyShootout?.goalsHomeTeam;
                        match.AwayTeamScore.PenaltyResult = (short?)fixture.result.penaltyShootout?.goalsAwayTeam;

                        match.HomeTeamScore.MatchResult = (short?)fixture.result.goalsHomeTeam;
                        match.AwayTeamScore.MatchResult = (short?)fixture.result.goalsAwayTeam;

                        try
                        {
                            match.HomeTeamScore.MatchResult = (short?)fixture.result.extraTime.goalsHomeTeam;
                            match.AwayTeamScore.MatchResult = (short?)fixture.result.extraTime.goalsAwayTeam;
                        }
                        catch (Exception)
                        {
                        }
                    }
                }
            }

            await _dbContext.SaveChangesAsync();
        }