예제 #1
0
        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));
        }
예제 #2
0
        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));
        }
예제 #3
0
        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
            });
        }
예제 #4
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));
            }
        }
예제 #5
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));
            }
        }
예제 #6
0
        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);
        }
예제 #8
0
        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));
            }
        }
예제 #9
0
파일: MlbApi.cs 프로젝트: LifeOfPie314/mlb5
        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);
        }
예제 #10
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);
        }
예제 #11
0
 public UsersController(Mlb5Context dbContext)
 {
     _db = dbContext;
 }