public async Task <IHttpActionResult> SetDatetime(DateTime date, int hours) { SimulationDateTime simDateTime = new SimulationDateTime(); using (var db = new Mlb5Context()) { simDateTime = db.SimulationDateTimes.FirstOrDefault(); if (simDateTime == null) { simDateTime = new SimulationDateTime(); simDateTime.Date = date; simDateTime.Hours = hours; db.SimulationDateTimes.Add(simDateTime); } else { simDateTime.Date = date; simDateTime.Hours = hours; } await db.SaveChangesAsync(); } return(Ok(simDateTime)); }
public async Task <IHttpActionResult> LoadData(DateTime startdate, DateTime enddate) { if (enddate < startdate) { return(Ok("Error invalid dates")); } var date = startdate; var lastDate = enddate.AddDays(1); var recordCount = 0; using (var db = new Mlb5Context()) { while (date < lastDate) { var result = await MlbApi.ImportGamesIfNeeded(db, date); recordCount = recordCount + result; date = date.AddDays(1); } } return(Ok(recordCount)); }
private Counts GetUpdatedCounts(int userId, Mlb5Context db) { //var user = db.Users.Single(x => x.Id == userId); var runRecords = db.Picks.Where(x => x.UserId == userId && x.Status != PickStatus.New).Select(x => x.Runs).ToList(); var homerunRecords = db.Picks.Where(x => x.UserId == userId && x.Status != PickStatus.New).Select(x => x.Homeruns).ToList(); var strikeoutRecordss = db.Picks.Where(x => x.UserId == userId && x.Status != PickStatus.New).Select(x => x.Strikeouts).ToList(); var runs = 0; var homeruns = 0; var strikeouts = 0; if (runRecords.Any()) { runs = runRecords.Sum(x => x); } if (homerunRecords.Any()) { homeruns = homerunRecords.Sum(x => x); } if (strikeoutRecordss.Any()) { strikeouts = strikeoutRecordss.Sum(x => x); } return(new Counts() { Runs = runs, Homeruns = homeruns, Strikeouts = strikeouts, Coins = 0 }); }
public async Task <IHttpActionResult> MakePick(int id, string teamcode) { var identity = User.Identity as ClaimsIdentity; var userId = Convert.ToInt32(identity.Claims.First(c => c.Type == "userId").Value); using (var db = new Mlb5Context()) { var game = db.Games.Single(x => x.Id == id); var picks = db.Picks.Where(x => x.Game.Date == game.Date); if (picks.Count() < 5) { var pick = new Pick() { Game = game, TeamCode = teamcode, UserId = userId }; db.Picks.Add(pick); await db.SaveChangesAsync(); return(Ok(pick.Id)); } return(Ok(0)); } }
public async Task <IHttpActionResult> Index(int year, int month, int day) { var date = new DateTime(year, month, day); var identity = User.Identity as ClaimsIdentity; var userId = Convert.ToInt32(identity.Claims.First(c => c.Type == "userId").Value); var games = new List <Game>(); var picks = new List <Pick>(); SimulationDateTime dateTime; using (var db = new Mlb5Context()) { dateTime = db.SimulationDateTimes.First(); await MlbApi.ImportGamesIfNeeded(db, date); games = db.Games.Where(x => x.Date == date).ToList(); picks = db.Picks.Where(x => x.Game.Date == date).ToList(); var currentTime = dateTime.GetCurrentTime(); var gamePicks = new List <GamePick>(); foreach (var game in games) { var gamePick = Mapper.Map <GamePick>(game); gamePick.SetStatus(currentTime); var pick = picks.SingleOrDefault(x => x.Game.Id == gamePick.Id); if (pick != null) { gamePick.MarkPicked(pick, db); } gamePicks.Add(gamePick); } // Get other picks where games are on a previous date and picks have not been awarded // Get updated Counts var viewModel = new PicksViewModel() { Picks = gamePicks, Counts = GetUpdatedCounts(userId, db) }; return(Ok(viewModel)); } }
public async Task <IHttpActionResult> RemovePick(int id) { using (var db = new Mlb5Context()) { var pick = db.Picks.Single(x => x.Id == id); if (pick.Status == PickStatus.New) { db.Picks.Remove(pick); await db.SaveChangesAsync(); return(Ok(true)); } return(Ok(false)); } }
public override async Task GrantResourceOwnerCredentials(OAuthGrantResourceOwnerCredentialsContext context) { if (context.UserName == "undefined") { context.SetError("invalid_grant", "The user name or password is incorrect."); } context.OwinContext.Response.Headers.Add("Access-Control-Allow-Origin", new[] { "*" }); User user; using (var db = new Mlb5Context()) { // if user not found then add user user = await db.Users.SingleOrDefaultAsync(x => x.Username == context.UserName); if (user == null) { user = new User() { Username = context.UserName }; db.Users.Add(user); db.SaveChanges(); } } //using (AuthRepository _repo = new AuthRepository()) //{ // IdentityUser user = await _repo.FindUser(context.UserName, context.Password); // if (user == null) // { // context.SetError("invalid_grant", "The user name or password is incorrect."); // return; // } //} var identity = new ClaimsIdentity(context.Options.AuthenticationType); identity.AddClaim(new Claim("userId", user.Id.ToString())); identity.AddClaim(new Claim("username", user.Username)); identity.AddClaim(new Claim("role", "user")); context.Validated(identity); }
public IHttpActionResult Datetime() { using (var db = new Mlb5Context()) { SimulationDateTime simDateTime = db.SimulationDateTimes.SingleOrDefault(); if (simDateTime == null) { simDateTime = new SimulationDateTime() { Date = new DateTime(2016, 9, 23) }; db.SimulationDateTimes.Add(simDateTime); } return(Ok(simDateTime)); } }
public static async Task <int> ImportGamesIfNeeded(Mlb5Context db, DateTime date) { if (!db.Games.Any(x => x.Date == date)) { var mlbApi = new MlbApi(); var games = await mlbApi.GetGameFiles(date); foreach (var game in games) { if (db.Games.SingleOrDefault(x => x.Id == game.Id) == null) { db.Games.Add(game); } } return(await db.SaveChangesAsync()); } return(0); }
public bool MarkPicked(Pick pick, Mlb5Context db) { Picked = true; PickId = pick.Id; if (AwayTeam.Code == pick.TeamCode) { AwayTeam.MarkPicked(); } else { HomeTeam.MarkPicked(); } if (Status == GameStatus.Completed && pick.Status == PickStatus.New) { var pickToUpdate = db.Picks.Single(x => x.Id == pick.Id); // if pick won then mark run and calculate runs if (AwayTeam.Runs > HomeTeam.Runs && AwayTeam.Picked) { pickToUpdate.Status = PickStatus.Won; pickToUpdate.Runs = AwayTeam.Runs - HomeTeam.Runs; } else if (HomeTeam.Runs > AwayTeam.Runs && HomeTeam.Picked) { pickToUpdate.Status = PickStatus.Won; pickToUpdate.Runs = HomeTeam.Runs - AwayTeam.Runs; } else { pickToUpdate.Status = PickStatus.Lost; } // add homers and strikeouts var myPick = GetPickedTeam(); pickToUpdate.Homeruns = myPick.Homeruns; pickToUpdate.Strikeouts = myPick.Strikeouts; db.SaveChanges(); return(true); } return(false); }
public UsersController(Mlb5Context dbContext) { _db = dbContext; }