public IEnumerable <PlayerStint> GetBattingStintByLastNameAndYear(string lastName, int year)
        {
            using (var db = new FantasyBaseballDbContext())
            {
                var q = (from b in db.BattingStint.AsNoTracking()
                         where b.Year == year
                         join p in db.Person.AsNoTracking()
                         on b.PersonId equals p.PersonId
                         where p.LastName.Contains(lastName)
                         join t in db.Team.AsNoTracking()
                         on b.TeamId equals t.TeamId
                         join f in db.FieldingStint.AsNoTracking()
                         on new { b.PersonId, b.Stint, b.Year }
                         equals new { f.PersonId, f.Stint, f.Year }
                         into fs
                         from f in fs.DefaultIfEmpty()
                         select(new
                {
                    BattingStint = b,
                    FieldingStint = f,
                    Person = p,
                    Team = t
                })).ToList();

                return(q.GroupBy(x => x.BattingStint.BattingStintId).Select(x => new PlayerStint
                {
                    BattingStint = x.First().BattingStint,
                    Person = x.First().Person,
                    Team = x.First().Team,
                    FieldingStints = x.Select(y => y.FieldingStint)
                }).ToList());
            }
        }
        public PlayerStint GetRandomAllStarPitchingStintByMinimumGamesStartedAndMinimumInningsPitchedOuts(int minimumGamesStarted, int minimumInningsPitchedOuts)
        {
            using (var db = new FantasyBaseballDbContext())
            {
                var q1 = (from a in db.AllStar.AsNoTracking()
                          join pi in db.PitchingStint.AsNoTracking()
                          on new { a.PersonId, a.Year, a.TeamId }
                          equals new { pi.PersonId, pi.Year, pi.TeamId }
                          where pi.GamesStarted >= minimumGamesStarted && pi.InningsPitchedOuts >= minimumInningsPitchedOuts
                          select pi);

                var count         = q1.Count();
                var index         = new Random().Next(count);
                var pitchingStint = q1.Skip(index).FirstOrDefault();

                if (pitchingStint == null)
                {
                    return(null);
                }

                var q2 = (from pi in db.PitchingStint.AsNoTracking()
                          where pi.PitchingStintId == pitchingStint.PitchingStintId
                          join pe in db.Person.AsNoTracking()
                          on pi.PersonId equals pe.PersonId
                          join t in db.Team.AsNoTracking()
                          on pi.TeamId equals t.TeamId
                          join b in db.BattingStint.AsNoTracking()
                          on new { pi.PersonId, pi.Stint }
                          equals new { b.PersonId, b.Stint }
                          join f in db.FieldingStint.AsNoTracking()
                          on new { pi.PersonId, pi.Stint, pi.Year }
                          equals new { f.PersonId, f.Stint, f.Year }
                          into fs
                          from f in fs.DefaultIfEmpty()
                          select(new
                {
                    BattingStint = b,
                    FieldingStint = f,
                    Person = pe,
                    PitchingStint = pi,
                    Team = t
                })).ToList();

                return(new PlayerStint
                {
                    BattingStint = q2.First().BattingStint,
                    Person = q2.First().Person,
                    PitchingStint = q2.First().PitchingStint,
                    Team = q2.First().Team,
                    FieldingStints = q2.GroupBy(q => q.FieldingStint.FieldingStintId).Select(y => y.First().FieldingStint)
                });
            }
        }
        public PlayerStint GetRandomAllStarBattingStintByPositionMinimumGamesPlayedAndMinimumAtBats(string position, int minimumGamesPlayed, int minimumAtBats)
        {
            using (var db = new FantasyBaseballDbContext())
            {
                var q1 = (from a in db.AllStar.AsNoTracking()
                          join f in db.FieldingStint.AsNoTracking()
                          on new { a.PersonId, a.Year, a.TeamId }
                          equals new { f.PersonId, f.Year, f.TeamId }
                          where f.Position == position && f.Games >= minimumGamesPlayed
                          join b in db.BattingStint.AsNoTracking()
                          on new { f.PersonId, f.Stint, f.Year }
                          equals new { b.PersonId, b.Stint, b.Year }
                          where b.AtBats >= minimumAtBats
                          select b);

                var count        = q1.Count();
                var index        = new Random().Next(count);
                var battingStint = q1.Skip(index).FirstOrDefault();

                if (battingStint == null)
                {
                    return(null);
                }

                var q2 = (from b in db.BattingStint.AsNoTracking()
                          where b.BattingStintId == battingStint.BattingStintId
                          join p in db.Person.AsNoTracking()
                          on b.PersonId equals p.PersonId
                          join t in db.Team.AsNoTracking()
                          on b.TeamId equals t.TeamId
                          join fi in db.FieldingStint.AsNoTracking()
                          on new { b.PersonId, b.Stint, b.Year }
                          equals new { fi.PersonId, fi.Stint, fi.Year }
                          into fs
                          from fi in fs.DefaultIfEmpty()
                          select(new
                {
                    BattingStint = b,
                    FieldingStint = fi,
                    Person = p,
                    Team = t
                })).ToList();

                return(new PlayerStint
                {
                    BattingStint = q2.First().BattingStint,
                    Person = q2.First().Person,
                    Team = q2.First().Team,
                    FieldingStints = q2.Select(y => y.FieldingStint)
                });
            }
        }
Example #4
0
 public IEnumerable <Franchise> GetActiveFranchiseNames()
 {
     using (var db = new FantasyBaseballDbContext())
     {
         return((from f in db.Franchise.AsNoTracking()
                 where f.Active == true
                 select new Franchise
         {
             FranchiseId = f.FranchiseId,
             FranchiseName = f.FranchiseName
         }).ToList());
     }
 }
Example #5
0
 public IEnumerable <Team> GetAllTeamNamesAndYears()
 {
     using (var db = new FantasyBaseballDbContext())
     {
         return((from t in db.Team.AsNoTracking()
                 select new Team
         {
             Name = t.Name,
             TeamId = t.TeamId,
             Year = t.Year
         }).ToList());
     }
 }
Example #6
0
        public Team GetTeamWithPlayers(int teamId)
        {
            using (var db = new FantasyBaseballDbContext())
            {
                var q = (from t in db.Team.AsNoTracking()
                         where t.TeamId == teamId
                         join pi in db.PitchingStint.AsNoTracking()
                         on t.TeamId equals pi.TeamId
                         into pis
                         from pi in pis.DefaultIfEmpty()
                         join b in db.BattingStint.AsNoTracking()
                         on t.TeamId equals b.TeamId
                         into bs
                         from b in bs.DefaultIfEmpty()
                         join f in db.FieldingStint.AsNoTracking()
                         on t.TeamId equals f.TeamId
                         into fs
                         from f in fs.DefaultIfEmpty()
                         join pe in db.Person.AsNoTracking()
                         on f.PersonId equals pe.PersonId
                         into pes
                         from pe in pes.DefaultIfEmpty()

                         select(new
                {
                    BattingStint = b,
                    FieldingStint = f,
                    Person = pe,
                    PitchingStint = pi,
                    Team = t
                })).ToList();

                var team = q.First().Team;
                team.BattingStint  = q.GroupBy(s => s.BattingStint.BattingStintId).Select(s => s.First().BattingStint).ToList();
                team.PitchingStint = q.GroupBy(s => s.PitchingStint.PitchingStintId).Select(s => s.First().PitchingStint).ToList();
                team.FieldingStint = q.GroupBy(s => s.FieldingStint.FieldingStintId).Select(s => s.First().FieldingStint).ToList();

                team.PlayerStints = q.GroupBy(p => p.Person.PersonId).Select(p => p.First()).Select(p => new PlayerStint
                {
                    BattingStint   = team.BattingStint.Where(s => s.PersonId == p.Person.PersonId).CombineSamePersonTeamAndYearBattingStints(),
                    Person         = p.Person,
                    PitchingStint  = team.PitchingStint.Where(s => s.PersonId == p.Person.PersonId).CombineSamePersonTeamAndYearPitchingStints(),
                    FieldingStints = team.FieldingStint.Where(s => s.PersonId == p.Person.PersonId).CombineSamePersonTeamAndYearFieldingStints().ToList(),
                    Team           = team
                }).ToList();

                return(team);
            }
        }
        public IEnumerable <PlayerStint> GetBestPitchingStintsByPositionFranchiseMinimumGamesPlayedAndMinimumAtBats(int count, int franchiseId, int minimumGamesStarted, int minimumInningsPitchedOuts)
        {
            using (var db = new FantasyBaseballDbContext())
            {
                var q1 = (from pi in db.PitchingStint.AsNoTracking()
                          where pi.GamesStarted >= minimumGamesStarted && pi.InningsPitchedOuts >= minimumInningsPitchedOuts
                          join t in db.Team.AsNoTracking()
                          on pi.TeamId equals t.TeamId
                          join fr in db.Franchise.AsNoTracking()
                          on t.FranchiseId equals fr.FranchiseId
                          where fr.FranchiseId == franchiseId
                          orderby pi.WalksAndHitsPerInningsPitchedPlusEarnedRunAverage
                          select pi).Take(count * 3).ToList();

                var pitchers = q1.GroupBy(q => q.PersonId).Select(g => g.First()).Take(count);

                var q2 = (from pi in pitchers
                          join pe in db.Person.AsNoTracking()
                          on pi.PersonId equals pe.PersonId
                          join t in db.Team.AsNoTracking()
                          on pi.TeamId equals t.TeamId
                          join b in db.BattingStint.AsNoTracking()
                          on new { pi.PersonId, pi.Stint, pi.Year }
                          equals new { b.PersonId, b.Stint, b.Year }
                          join f in db.FieldingStint.AsNoTracking()
                          on new { pi.PersonId, pi.Stint, pi.Year }
                          equals new { f.PersonId, f.Stint, f.Year }
                          into fs
                          from f in fs.DefaultIfEmpty()
                          select(new
                {
                    BattingStint = b,
                    FieldingStint = f,
                    Person = pe,
                    PitchingStint = pi,
                    Team = t
                })).ToList();

                return(q2.GroupBy(q => q.PitchingStint.PitchingStintId).Select(q => new PlayerStint
                {
                    BattingStint = q.First().BattingStint,
                    Person = q.First().Person,
                    PitchingStint = q.First().PitchingStint,
                    Team = q.First().Team,
                    FieldingStints = q.Select(y => y.FieldingStint)
                }));
            }
        }
        public IEnumerable <PlayerStint> GetBestOPSBattingStintsByPositionFranchiseMinimumGamesPlayedAndMinimumAtBats(int count, string position, int franchiseId, int minimumGamesPlayed, int minimumAtBats)
        {
            using (var db = new FantasyBaseballDbContext())
            {
                var q1 = (from f in db.FieldingStint.AsNoTracking()
                          where f.Position == position && f.Games >= minimumGamesPlayed
                          join t in db.Team.AsNoTracking()
                          on f.TeamId equals t.TeamId
                          join fr in db.Franchise.AsNoTracking()
                          on t.FranchiseId equals fr.FranchiseId
                          where fr.FranchiseId == franchiseId
                          join b in db.BattingStint.AsNoTracking()
                          on new { f.PersonId, f.Stint, f.Year }
                          equals new { b.PersonId, b.Stint, b.Year }
                          where b.AtBats >= minimumAtBats
                          orderby b.OnBasePlusSlugging descending
                          select b).Take(count * 5).ToList();

                var batters = q1.GroupBy(q => q.PersonId).Select(g => g.First()).Take(count);

                var q2 = (from b in batters
                          join p in db.Person.AsNoTracking()
                          on b.PersonId equals p.PersonId
                          join t in db.Team.AsNoTracking()
                          on b.TeamId equals t.TeamId
                          join fi in db.FieldingStint.AsNoTracking()
                          on new { b.PersonId, b.Stint, b.Year }
                          equals new { fi.PersonId, fi.Stint, fi.Year }
                          into fs
                          from fi in fs.DefaultIfEmpty()
                          select(new
                {
                    BattingStint = b,
                    FieldingStint = fi,
                    Person = p,
                    Team = t
                })).ToList();

                return(q2.GroupBy(q => q.BattingStint.BattingStintId).Select(q => new PlayerStint
                {
                    BattingStint = q.First().BattingStint,
                    Person = q.First().Person,
                    Team = q.First().Team,
                    FieldingStints = q.Select(y => y.FieldingStint)
                }));
            }
        }
Example #9
0
        public void LoadSingleGame()
        {
            using (var db = new FantasyBaseballDbContext())
            {
                // uncomment to recreate and fill db every time
                //db.Database.EnsureDeleted();
                db.Database.EnsureCreated();
                if (db.BattingStint.Any())
                {
                    return;
                }
            }

            //AddEntities<Park>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\ParkData.txt");
            AddEntities <Franchise>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\FranchiseData.txt");
            AddEntities <League>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\LeagueData.txt");
            AddEntities <Division>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\DivisionData.txt");
            AddEntities <Team>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\TeamData.txt");
            AddEntities <Person>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\PersonData.txt");
            //AddEntities<School>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\SchoolData.txt");
            AddEntities <HallOfFameMember>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\HallOfFameMemberData.txt");
            //AddEntities<PostseasonSeries>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\PostseasonSeriesData.txt");
            //AddEntities<Salary>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\SalaryData.txt");
            //AddEntities<ParkStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\ParkStintData.txt");
            //AddEntities<ManagerStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\ManagerStintData.txt");
            //AddEntities<CollegeStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\CollegeStintData.txt");
            AddEntities <BattingStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\BattingStintData.txt");
            //AddEntities<BattingPostseasonRound>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\BattingPostseasonRoundData.txt");
            AddEntities <PitchingStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\PitchingStintData.txt");
            //AddEntities<PitchingPostseasonRound>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\PitchingPostseasonRoundData.txt");
            AddEntities <FieldingStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\FieldingStintData.txt");
            //AddEntities<FieldingOutfieldStint>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\FieldingOutfieldStintData.txt");
            //AddEntities<FieldingPostseasonRound>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\FieldingPostseasonRoundData.txt");
            //AddEntities<Award>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\AwardData.txt");
            //AddEntities<AwardVoting>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\AwardVotingData.txt");
            //AddEntities<Appearances>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\AppearancesData.txt");
            AddEntities <AllStar>("C:\\Users\\320079761\\source\\repos\\FantasyBaseballSimulator\\FantasyBaseball.Repository\\DatabaseLoaderFiles\\AllStarData.txt");
        }
Example #10
0
        private void AddEntities <T>(string filePath)
        {
            var    count = 1;
            string line;
            var    file = new StreamReader(filePath);
            var    db   = new FantasyBaseballDbContext();

            while ((line = file.ReadLine()) != null)
            {
                var entity = line.CreateEntity <T>();

                db.Add(entity);

                if (count % 600 == 0)
                {
                    db.Database.OpenConnection();
                    db.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT {typeof(T).FullName.Replace("FantasyBaseball.Entities.Models.", "")} ON");
                    db.SaveChanges();
                    db.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT {typeof(T).FullName.Replace("FantasyBaseball.Entities.Models.", "")} OFF");
                    db.Database.CloseConnection();
                    db.Dispose();
                    db = new FantasyBaseballDbContext();
                }

                count++;
            }

            db.Database.OpenConnection();
            db.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT {typeof(T).FullName.Replace("FantasyBaseball.Entities.Models.", "")} ON");
            db.SaveChanges();
            db.Database.ExecuteSqlRaw($"SET IDENTITY_INSERT {typeof(T).FullName.Replace("FantasyBaseball.Entities.Models.", "")} OFF");
            db.Database.CloseConnection();
            db.Dispose();

            file.Close();
        }