public async Task <IHttpActionResult> SignInOrRegister(User user)
        {
            using (var db = new Adriana42Context())
            {
                var repository = new Repository <Models.User>(db);

                var usr = repository.Find(x => x.UserName == user.Username).FirstOrDefault();

                if (usr == null)
                {
                    usr = new Models.User
                    {
                        UserName = user.Username,
                        Password = user.Password
                    };
                    repository.Add(usr);
                }

                db.SaveChanges();
                return(Ok(new SignInSuccessResponse
                {
                    TokenId = usr.Id.ToString()
                }));
            }
        }
示例#2
0
        public IHttpActionResult GetTournanents()
        {
            using (var db = new Adriana42Context())
            {
                var repository = new Repository <Models.Tournament>(db);

                var tournamentList = repository.All().Select(x => new Tournament
                {
                    Description  = x.Description,
                    StartTimeUtc = x.StartTimeUtc,
                    EndTimeUtc   = x.EndTimeUtc,
                    Name         = x.Name,
                    ImgUrl       = x.ImgUrl,
                    Id           = x.Id,
                    Markets      = x.Markets.Select(y => new Market
                    {
                        Id         = y.Id,
                        Name       = y.Name,
                        ImgUrl     = y.ImgUrl,
                        Selections = y.Selections.OrderBy(s => s.Position).Select(s => new Selection
                        {
                            Id     = s.Id,
                            ImgUrl = s.ImgUrl,
                            Name   = s.Name,
                            Odds   = s.Odds.ToString()
                        })
                    })
                });
                return(Ok(new List <Tournament>(tournamentList)));
            }
        }
        public ActionResult Results(int tournamentId, int?token)
        {
            using (var db = new Adriana42Context())
            {
                var tournamentRepository = new Repository <Models.Tournament>(db);
                var marketRepository     = new Repository <Models.Market>(db);
                var betRepository        = new Repository <Models.Bet>(db);
                var bets       = betRepository.Find(b => b.TournamentId == tournamentId && (!token.HasValue || token.Value == b.UserId));
                var tournament = tournamentRepository.GetById(t => t.Id == tournamentId);
                if (tournament == null)
                {
                    return(HttpNotFound());
                }

                var tournamentResult = new TournamentResult
                {
                    Id           = tournament.Id,
                    Description  = tournament.Description,
                    StartTimeUtc = tournament.StartTimeUtc,
                    EndTimeUtc   = tournament.EndTimeUtc,
                    ImgUrl       = tournament.ImgUrl,
                    Name         = tournament.Name
                };

                tournamentResult.MarketResults = bets.Select(b => new MarketResult
                {
                    MarketId          = b.MarketId,
                    ChosenSelectionId = b.SelectionId
                }).ToList();
                tournamentResult.MarketResults.ForEach(x =>
                {
                    var market = marketRepository.GetById(x.MarketId);
                    if (market != null)
                    {
                        x.Selections = market.Selections?.Select(s => new Selection
                        {
                            Id     = s.Id,
                            ImgUrl = s.ImgUrl,
                            Name   = s.Name,
                            Odds   = s.Odds.ToString(),
                            Result = s.Result
                        });
                        x.WinningSelectionId = x.Selections.FirstOrDefault(s => s.Result == true)?.Id;
                        x.Name   = market.Name;
                        x.ImgUrl = market.ImgUrl;
                    }
                    ;
                });

                return(View(tournamentResult));;
            }
        }
示例#4
0
 public IHttpActionResult Bet(int tournamentId, int marketId, int selectionId)
 {
     using (var db = new Adriana42Context())
     {
         var repository = new Repository <Models.Bet>(db);
         var bet        = new Models.Bet
         {
             Date         = DateTime.UtcNow,
             TournamentId = tournamentId,
             MarketId     = marketId,
             SelectionId  = selectionId,
             UserId       = UserId
         };
         repository.Add(bet);
         db.SaveChanges();
         return(Ok());
     }
 }
        public ActionResult LeaderBoard(int tournamentId)
        {
            using (var db = new Adriana42Context())
            {
                var tournamentRepository = new Repository <Models.Tournament>(db);
                var marketRepository     = new Repository <Models.Market>(db);
                var betRepository        = new Repository <Models.Bet>(db);

                var bets = betRepository.Find(b => b.TournamentId == tournamentId);
                return(View(new LeaderBoard
                {
                    TournamentId = tournamentId,
                    Ranking = bets.GroupBy(b => b.UserId).Select(b => new LeaderBoardRanking
                    {
                        UserName = b.Key.ToString(),
                        Score = b.Count()
                    }).ToList()
                }));
            }
        }
示例#6
0
        public IHttpActionResult Put([FromBody] ResultRequest request)
        {
            using (var db = new Adriana42Context())
            {
                var selectionsRepository = new Repository <Models.Selection>(db);
                var selection            = selectionsRepository.GetById(request.SelectionId);
                if (selection == null)
                {
                    return(NotFound());
                }
                selection.Result = request.Result;

                var repository = new Repository <Models.Bet>(db);
                var bets       = repository.Find(b => b.SelectionId == request.SelectionId).ToList();
                bets.ForEach(b => b.Result = request.Result);

                db.SaveChanges();

                return(Ok());
            }
        }