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() })); } }
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));; } }
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() })); } }
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()); } }