public IList <Skater> ShowSkaters()
 {
     try
     {
         using (SqlConnection connection = new SqlConnection(connectionString))
         {
             connection.Open();
             SqlCommand    cmd     = new SqlCommand("SELECT * FROM skater", connection);
             SqlDataReader reader  = cmd.ExecuteReader();
             List <Skater> skaters = new List <Skater>();
             while (reader.Read())
             {
                 Skater skater = new Skater();
                 skater.Number = Convert.ToInt32(reader["SkaterNumber"]);
                 skater.Name   = Convert.ToString(reader["SkaterName"]);
                 skaters.Add(skater);
             }
             return(skaters);
         }
     }
     catch (Exception exception)
     {
         Console.WriteLine(exception.Message);
         throw;
     }
 }
        public int AddSkater(Skater newSkater)
        {
            try
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand($"INSERT INTO skater(SkaterNumber, SkaterName) VALUES (@newSkaterNumber, @newSkaterName)", connection);
                    command.Parameters.AddWithValue("@newSkaterNumber", newSkater.Number);
                    command.Parameters.AddWithValue("@newSkaterName", newSkater.Name);
                    command.ExecuteNonQuery();

                    command = new SqlCommand($"SELECT SkaterNumber FROM skater WHERE SkaterNumber = {newSkater.Number}", connection);
                    Skater skater = new Skater();

                    int newSkaterAdded = Convert.ToInt32(command.ExecuteScalar());

                    return(newSkaterAdded);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
                throw;
            }
        }
示例#3
0
        private static void ExtractSkatersFromSection(Team team, TeamSection teamSection)
        {
            foreach (string line in teamSection.SkaterInformationLines)
            {
                IEnumerable <string> acronyms = line.GetAcronymns();
                Skater skater = new Skater()
                {
                    Name        = line.Substring(0, 30).RemoveAcronyms().Replace("_", "").Trim(),
                    IsRookie    = acronyms.Contains("R"),
                    IsCaptain   = acronyms.Contains("C"),
                    IsAlternate = acronyms.Contains("A"),
                };

                // Convert string of values into stats
                string   rawStatsLine = line.Substring(30, line.Length - 30).Replace("%", "").Trim();
                string[] rawStats     = rawStatsLine.Split(new char[] { ' ' }, StringSplitOptions.RemoveEmptyEntries);
                ConvertRawStats(rawStats, skater);

                // Optional acronym found in traded players
                skater.SeasonTotals.TeamAcronym = Helper.GetTeamAcronym(acronyms);

                team.Skaters.Add(skater);
            }

            CombineSplitSkaterStats(team);
            CombineTradedSkaterSubtotals(team);
        }
示例#4
0
        public async Task <List <Skater> > GetRosterAsync()
        {
            List <Skater> skaters = new List <Skater>();
            Uri           uri     = new Uri(string.Format(Constants.teamUri, string.Empty));

            try
            {
                HttpResponseMessage response = await client.GetAsync(uri + "?expand=team.roster");

                if (response.IsSuccessStatusCode)
                {
                    JObject teamInfo = JObject.Parse(await response.Content.ReadAsStringAsync());
                    JToken  roster   = teamInfo["teams"][0]["roster"]["roster"];

                    foreach (JToken skaterInfo in roster)
                    {
                        Skater skater = new Skater
                        {
                            SkaterId      = (int)skaterInfo["person"]["id"],
                            Name          = (string)skaterInfo["person"]["fullName"],
                            PositionShort = (string)skaterInfo["position"]["abbreviation"],
                            JerseyNumber  = (int)skaterInfo["jerseyNumber"]
                        };
                        skaters.Add(skater);
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(@"\tERROR {0}", ex.Message);
            }

            return(skaters);
        }
示例#5
0
        private static void CombineTradedSkaterSubtotals(Team team)
        {
            // Traded skaters stored as new skaters are removed
            // Their season stats are pushed into the parent's subtotals
            List <Skater> skatersToDelete = new List <Skater>();
            Skater        previousSkater  = team.Skaters.FirstOrDefault();

            foreach (Skater skater in team.Skaters.Skip(1))
            {
                if (skater.Name == previousSkater.Name)
                {
                    skatersToDelete.Add(skater);
                    if (previousSkater.SeasonSubTotals == null)
                    {
                        previousSkater.SeasonSubTotals = new List <SkaterSeasonStats>();
                    }
                    previousSkater.SeasonSubTotals.Add(skater.SeasonTotals);
                }
                else
                {
                    previousSkater = skater;
                }
            }

            // Removes extra skaters
            team.Skaters = team.Skaters.Where(skater => !skatersToDelete.Contains(skater)).ToList();
        }
示例#6
0
        public async Task <Skater> GetYearByYearSkaterStatsAsync(Skater skater)
        {
            skater.YearRange = new List <string>();
            try
            {
                HttpResponseMessage response = await client.GetAsync($"{PersonUri}{skater.SkaterId}/stats?stats=yearByYear");

                if (response.IsSuccessStatusCode)
                {
                    JObject skaterStatsInfo = JObject.Parse(await response.Content.ReadAsStringAsync());
                    JToken  skaterStats     = skaterStatsInfo["stats"][0]["splits"];
                    foreach (JToken split in skaterStats.Children())
                    {
                        if (split["team"]["id"] != null && (int)split["team"]["id"] == 14)
                        {
                            skater.YearRange.Add((string)split["season"]);
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(@"\tERROR {0}", ex.Message);
            }

            return(skater);
        }
示例#7
0
        public async Task <Skater> GetSkaterStatsBySeasonAsync(Skater skater, string season)
        {
            skater = await GetRegularSeasonSkaterStats(skater, season);

            skater = await GetSkaterPlayoffStats(skater, season);

            return(skater);
        }
 public SkaterPage(Skater skater)
 {
     InitializeComponent();
     BindingContext = new SkaterViewModel(skater);
     //if(skater.SkaterId == 8478010)
     //{
     //    PlayerImage.Source = "point.png";
     //    //BackgroundImageSource = "point.png";
     //}
 }
示例#9
0
        private static void ExtractSkatersFromSection(Team team, TeamSection teamSection)
        {
            // First Skater Stat Section
            foreach (HtmlNode row in teamSection.SkaterInformationNode1.Descendants("tr").Where(a => a.ParentNode.Name != "thead"))
            {
                IList <HtmlNode> cells = row.Descendants("td").ToList();

                string name     = cells.First().InnerText;
                bool   isTraded = name.StartsWith("_");
                name = name.Replace("_", "").Trim();
                IEnumerable <string> acronyms = name.GetAcronymns();

                Skater skater = new Skater()
                {
                    Name        = name.RemoveAcronyms(),
                    IsRookie    = acronyms.Contains("R"),
                    IsCaptain   = acronyms.Contains("C"),
                    IsAlternate = acronyms.Contains("A"),
                };

                ConvertCellsToStats(cells, skater);

                if (isTraded)
                {
                    skater.SeasonTotals.TeamAcronym = acronyms.Where(a => a.Length == 3).First();
                }

                team.Skaters.Add(skater);
            }

            // Second Skater Stat Section
            foreach (HtmlNode row in teamSection.SkaterInformationNode2.Descendants("tr").Where(a => a.ParentNode.Name != "thead"))
            {
                IList <HtmlNode>     cells    = row.Descendants("td").ToList();
                string               name     = cells.First().InnerText.Replace("_", "").Trim();
                IEnumerable <string> acronyms = name.GetAcronymns();

                Skater skater = new Skater()
                {
                    Name = name.RemoveAcronyms(),
                };

                FillInBlankColumnsWithZeros(cells);
                ConvertCellsToStats(cells, skater);
                team.Skaters.Add(skater);
            }

            CombineSplitSkaterStats(team);
            CombineTradedSkaterSubtotals(team);
        }
示例#10
0
        public async Task <Skater> GetRegularSeasonSkaterStats(Skater skater, string season)
        {
            try
            {
                HttpResponseMessage response = await client.GetAsync($"{PersonUri}{skater.SkaterId}/stats?stats=statsSingleSeason&season={season}");

                if (response.IsSuccessStatusCode)
                {
                    JObject skaterStatsInfo = JObject.Parse(await response.Content.ReadAsStringAsync());
                    JToken  skaterStats     = skaterStatsInfo["stats"][0]["splits"][0]["stat"];

                    skater.IsGoalie = (skater.PositionShort == "G");

                    if (!skater.IsGoalie)
                    {
                        skater.RegularSeasonSkaterStats = new SkaterStats
                        {
                            Games   = (int)skaterStats["games"],
                            Goals   = (int)skaterStats["goals"],
                            Assists = (int)skaterStats["assists"]
                        };
                    }
                    else
                    {
                        skater.RegularSeasonGoalieStats = new GoalieStats
                        {
                            Games          = (int)skaterStats["games"],
                            Shutouts       = (int)skaterStats["shutouts"],
                            Saves          = (int)skaterStats["saves"],
                            SavePercentage = (int)skaterStats["savePercentage"],
                            PowerPlaySaves = (int)skaterStats["powerPlaySaves"],
                            ShotsAgainst   = (int)skaterStats["shotsAgainst"],
                        };
                    }

                    skater = await GetYearByYearSkaterStatsAsync(skater);

                    skater.SelectedYearRange = skater.YearRange.LastOrDefault();
                }
            }
            catch (Exception ex)
            {
                Debug.WriteLine(@"\tERROR {0}", ex.Message);
            }

            return(skater);
        }
示例#11
0
        public async Task NavigateFromMenu(HomeMenuItem selectedItem)
        {
            int id = (int)selectedItem.Id;

            if (MenuPages.ContainsKey(2))
            {
                MenuPages.Remove(id);
            }

            if (!MenuPages.ContainsKey(id))
            {
                switch (id)
                {
                case (int)MenuItemType.Browse:
                    Skater skater = await App.DataManager.GetSkaterStatsBySeasonAsync(CurrentSeason, selectedItem.Skater);

                    if (skater.IsGoalie)
                    {
                        MenuPages.Add(id, new NavigationPage(new GoaliePage(skater)));
                    }
                    else
                    {
                        MenuPages.Add(id, new NavigationPage(new SkaterPage(skater)));
                    }
                    break;

                case (int)MenuItemType.Team:
                    MenuPages.Add(id, new NavigationPage(new TeamPage()));
                    break;
                }
            }

            NavigationPage newPage = MenuPages[id];

            if (newPage != null && Detail != newPage)
            {
                Detail = newPage;

                if (Device.RuntimePlatform == Device.Android)
                {
                    await Task.Delay(100);
                }

                IsPresented = false;
            }
        }
示例#12
0
        public ActionResult Skater(int?li, int?pi)
        {
            if (pi == null)
            {
                RedirectToAction("Search");
            }

            var    _database = new BeaujeauxEntities();
            Skater skater    = _database.Skaters.Where(s => s.Id == pi).FirstOrDefault();

            if (skater == null)
            {
                throw new Exception("no player found");
            }

            int leagueId = GetLeagueId(li);

            return(View(new SkaterPlayerStatsModel(_database, skater, leagueId)));
        }
        public bool UpdateSkater(Skater updatedSkater)
        {
            try
            {
                using (SqlConnection connection = new SqlConnection(connectionString))
                {
                    connection.Open();
                    SqlCommand command = new SqlCommand($"UPDATE Skater SET SkaterName = @updatedSkaterName WHERE SkaterNumber = @skaterNumber", connection);
                    command.Parameters.AddWithValue("@updatedSkaterName", updatedSkater.Name);
                    command.Parameters.AddWithValue("@skaterNumber", updatedSkater.Number);
                    command.ExecuteNonQuery();

                    return(true);
                }
            }
            catch (Exception exception)
            {
                Console.WriteLine(exception.Message);
                return(false);
            }
        }
示例#14
0
        private Skater GetSkaterFromRow(Skater previousSkater, SkaterRow skaterRow)
        {
            Skater dbSkater = null;

            if (previousSkater.Name == skaterRow.Name)
            {
                dbSkater = previousSkater;
            }
            if (dbSkater == null)
            {
                dbSkater = db.Skaters.FirstOrDefault(a => a.Name == skaterRow.Name);
            }
            if (dbSkater == null)
            {
                dbSkater = new Skater()
                {
                    Name = skaterRow.Name
                };
                db.Skaters.Add(dbSkater);
            }
            return(dbSkater);
        }
示例#15
0
        public static void SplitPlayer(int skaterId, int firstPlayerLasstSeason, string suffixA, string suffixB)
        {
            using (var db = new BojoBoxContext())
            {
                var skaterA    = db.Skaters.First(a => a.Id == skaterId);
                var skaterName = skaterA.Name;

                var skaterSeasonsA = db.SkaterSeasons.Where(a => a.SkaterId == skaterA.Id && a.Season <= firstPlayerLasstSeason).ToList();
                var skaterSeasonsB = db.SkaterSeasons.Where(a => a.SkaterId == skaterA.Id && a.Season > firstPlayerLasstSeason).ToList();

                skaterA.Name    = skaterName + " " + suffixA;
                skaterA.Seasons = skaterSeasonsA;

                var skaterB = new Skater();
                skaterB.Name     = skaterName + " " + suffixB;
                skaterB.Seasons  = skaterSeasonsB;
                skaterB.LeagueId = skaterA.LeagueId;
                db.Skaters.Add(skaterB);

                db.SaveChanges();
            }
        }
示例#16
0
 private static void CombineSkaterStats(Skater skaterA, Skater skaterB)
 {
     skaterA.SeasonTotals.GW  = skaterB.SeasonTotals.GW;
     skaterA.SeasonTotals.GT  = skaterB.SeasonTotals.GT;
     skaterA.SeasonTotals.FOW = skaterB.SeasonTotals.FOW;
     skaterA.SeasonTotals.FOT = skaterB.SeasonTotals.FOT;
     skaterA.SeasonTotals.GA  = skaterB.SeasonTotals.GA;
     skaterA.SeasonTotals.TA  = skaterB.SeasonTotals.TA;
     skaterA.SeasonTotals.EG  = skaterB.SeasonTotals.EG;
     skaterA.SeasonTotals.HT  = skaterB.SeasonTotals.HT;
     skaterA.SeasonTotals.PSG = skaterB.SeasonTotals.PSG;
     skaterA.SeasonTotals.PSS = skaterB.SeasonTotals.PSS;
     skaterA.SeasonTotals.FW  = skaterB.SeasonTotals.FW;
     skaterA.SeasonTotals.FL  = skaterB.SeasonTotals.FL;
     skaterA.SeasonTotals.FT  = skaterB.SeasonTotals.FT;
     skaterA.SeasonTotals.GS  = skaterB.SeasonTotals.GS;
     skaterA.SeasonTotals.PS  = skaterB.SeasonTotals.PS;
     skaterA.SeasonTotals.WG  = skaterB.SeasonTotals.WG;
     skaterA.SeasonTotals.WP  = skaterB.SeasonTotals.WP;
     skaterA.SeasonTotals.S1  = skaterB.SeasonTotals.S1;
     skaterA.SeasonTotals.S2  = skaterB.SeasonTotals.S2;
     skaterA.SeasonTotals.S3  = skaterB.SeasonTotals.S3;
 }
示例#17
0
        public ActionResult GetNextRankedSkaterID(int seasonID)
        {
            Skater model = new Skater();

            try
            {
                dbconAPP = GetConnection();
                dbconAPP.Open();
                model.SkaterID = model.GetNextRankedSkaterID(dbconAPP, seasonID);
            }
            catch (Exception ex)
            {
                return(Content("ERROR: " + ex.Message + " (Draft.GetNextRankedSkaterID[GET])."));
            }
            finally
            {
                if (dbconAPP != null && dbconAPP.State == System.Data.ConnectionState.Open)
                {
                    dbconAPP.Close();
                }
            }
            return(Content(model.SkaterID.ToString()));
        }
示例#18
0
        private void AddSkater()
        {
            Console.WriteLine("Enter the number of the skater you want to add: ");
            string userInput = Console.ReadLine();
            int    userNumber;
            bool   isInt = int.TryParse(userInput, out userNumber);

            if (isInt)
            {
                Console.WriteLine("Enter the name of the skater you want to add");
                string userName = Console.ReadLine();

                Skater newSkater = new Skater()
                {
                    Number = userNumber,
                    Name   = userName
                };

                int id = skaterDAO.AddSkater(newSkater);

                if (id > 0)
                {
                    Console.WriteLine("SUCCESS!");
                }
                else
                {
                    Console.WriteLine("Did not create - please try again!");
                }
            }
            else
            {
                Console.WriteLine("This is not a valid number. Please hit enter to try again.");
                Console.ReadLine();
                Console.Clear();
                AddSkater();
            }
        }
示例#19
0
        private void UpdateSkater()
        {
            Console.WriteLine("Enter the skater number whose name you would like to update:");
            string userInput = Console.ReadLine();
            int    skaterNumber;
            bool   isInt = int.TryParse(userInput, out skaterNumber);

            if (isInt)
            {
                Console.WriteLine("Enter the updated name");
                string newName = Console.ReadLine();

                Skater updatedSkater = new Skater
                {
                    Number = skaterNumber,
                    Name   = newName
                };

                bool result = skaterDAO.UpdateSkater(updatedSkater);

                if (result)
                {
                    Console.WriteLine("Success!");
                }
                else
                {
                    Console.WriteLine("Sorry, did not update. Please try again!");
                }
            }
            else
            {
                Console.WriteLine("Sorry, this is not a valid skater number. Please hit enter to try again.");
                Console.ReadLine();
                Console.Clear();
                UpdateSkater();
            }
        }
示例#20
0
        private void AddSkaters()
        {
            Skater previousSkater = new Skater()
            {
                Name = ""
            };
            SkaterSeason previousSeason = new SkaterSeason();

            foreach (var skaterRow in season.SkaterRows)
            {
                Skater dbSkater = GetSkaterFromRow(previousSkater, skaterRow);

                int          i = 0;
                SkaterSeason dbSkaterSeason = new SkaterSeason()
                {
                    Skater              = dbSkater,
                    League              = league,
                    Season              = season.SeasonNumber,
                    isPlayoffs          = season.IsPlayoffs,
                    GamesPlayed         = skaterRow.Stats[i++],
                    Goals               = skaterRow.Stats[i++],
                    Assists             = skaterRow.Stats[i++],
                    Points              = skaterRow.Stats[i++],
                    PlusMinus           = skaterRow.Stats[i++],
                    PenaltyMinutes      = skaterRow.Stats[i++],
                    PenaltyMajors       = skaterRow.Stats[i++],
                    Hits                = skaterRow.Stats[i++],
                    HitsTaken           = skaterRow.Stats[i++],
                    Shots               = skaterRow.Stats[i++],
                    OwnShotsBlocked     = skaterRow.Stats[i++],
                    OwnShotsMissed      = skaterRow.Stats[i++],
                    ShotsBlocked        = skaterRow.Stats[i++],
                    MinutesPlayed       = skaterRow.Stats[i++],
                    PPGoals             = skaterRow.Stats[i++],
                    PPAssists           = skaterRow.Stats[i++],
                    PPPoints            = skaterRow.Stats[i++],
                    PPShots             = skaterRow.Stats[i++],
                    PPMinutes           = skaterRow.Stats[i++],
                    PKGoals             = skaterRow.Stats[i++],
                    PKAssists           = skaterRow.Stats[i++],
                    PKPoints            = skaterRow.Stats[i++],
                    PKShots             = skaterRow.Stats[i++],
                    PKMinutes           = skaterRow.Stats[i++],
                    GameWinningGoals    = skaterRow.Stats[i++],
                    GameTyingGoals      = skaterRow.Stats[i++],
                    FaceoffsTotal       = skaterRow.Stats[i++],
                    EmptyNetGoals       = skaterRow.Stats[i++],
                    HatTricks           = skaterRow.Stats[i++],
                    PenaltyShotGoals    = skaterRow.Stats[i++],
                    PenaltyShotAttempts = skaterRow.Stats[i++],
                    FightsWon           = skaterRow.Stats[i++],
                    FightsLost          = skaterRow.Stats[i++],
                    FightsDraw          = skaterRow.Stats[i++],
                    FaceoffWins         = skaterRow.Stats[i++],
                };

                dbSkaterSeason.Team = (skaterRow.TeamAcronym != null) ?
                                      teams.First(a => a.Acronym == skaterRow.TeamAcronym) : null;

                if (skaterRow.IsSubTotal)
                {
                    dbSkaterSeason.SubtotalFor = previousSeason;
                }
                else
                {
                    previousSkater = dbSkater;
                    previousSeason = dbSkaterSeason;
                }

                db.SkaterSeasons.Add(dbSkaterSeason);
            }
        }
示例#21
0
 public new static SkaterFullDto Create(Skater source) =>
 AutoMapper.Mapper.Map <SkaterFullDto>(source);
示例#22
0
 public GoaliePage(Skater skater)
 {
     InitializeComponent();
     BindingContext = new SkaterViewModel(skater);
 }
 public SkaterViewModel(Skater skater)
 {
     YearRange = skater.YearRange;
     Skater    = skater;
 }
示例#24
0
 public static PlayerDto Create(Skater source) =>
 AutoMapper.Mapper.Map <PlayerDto>(source);
示例#25
0
        private static void ConvertCellsToStats(IList <HtmlNode> cells, Skater skater)
        {
            double[]          numericValues = cells.Skip(3).Select(cell => double.Parse(cell.InnerText.Replace("%", ""))).ToArray();
            SkaterSeasonStats seasonStats   = new SkaterSeasonStats();

            if (numericValues.Length == 26)
            {
                seasonStats.GP   = (int)numericValues[0];
                seasonStats.G    = (int)numericValues[1];
                seasonStats.A    = (int)numericValues[2];
                seasonStats.P    = (int)numericValues[3];
                seasonStats.PLMI = (int)numericValues[4];
                seasonStats.PIM  = (int)numericValues[5];
                seasonStats.PM5  = (int)numericValues[6];
                seasonStats.HIT  = (int)numericValues[7];
                seasonStats.HTT  = (int)numericValues[8];
                seasonStats.SHT  = (int)numericValues[9];
                seasonStats.OSB  = (int)numericValues[10];
                seasonStats.OSM  = (int)numericValues[11];
                //seasonStats.SPER = (int)numericValues[12]; Don't need percentage
                seasonStats.SB = (int)numericValues[13];
                seasonStats.MP = (int)numericValues[14];
                //seasonStats.AMG = (int)numericValues[15]; Don't need average
                seasonStats.PPG = (int)numericValues[16];
                seasonStats.PPA = (int)numericValues[17];
                seasonStats.PPP = (int)numericValues[18];
                seasonStats.PPS = (int)numericValues[19];
                seasonStats.PPM = (int)numericValues[20];
                seasonStats.PKG = (int)numericValues[21];
                seasonStats.PKA = (int)numericValues[22];
                seasonStats.PKP = (int)numericValues[23];
                seasonStats.PKS = (int)numericValues[24];
                seasonStats.PKM = (int)numericValues[25];
            }
            else
            {
                seasonStats.GW = (int)numericValues[0];
                seasonStats.GT = (int)numericValues[1];
                //seasonStats.FOPer = (int)numericValues[2]; Don't need percentage
                seasonStats.FOT = (int)numericValues[3];
                seasonStats.FOW = Helper.GetPercentageAmount(numericValues[2], seasonStats.FOT);
                seasonStats.GA  = (int)numericValues[4];
                seasonStats.TA  = (int)numericValues[5];
                seasonStats.EG  = (int)numericValues[6];
                seasonStats.HT  = (int)numericValues[7];
                //skaseasonStatster.P20 = (int)numericValues[8]; Don't need average
                seasonStats.PSG = (int)numericValues[9];
                seasonStats.PSS = (int)numericValues[10];
                seasonStats.FW  = (int)numericValues[11];
                seasonStats.FL  = (int)numericValues[12];
                seasonStats.FT  = (int)numericValues[13];
                seasonStats.GS  = (int)numericValues[14];
                seasonStats.PS  = (int)numericValues[15];
                seasonStats.WG  = (int)numericValues[16];
                seasonStats.WP  = (int)numericValues[17];

                // For some reason traded stats don't track stars. F**K.
                if (numericValues.Length == 21)
                {
                    seasonStats.S1 = (int)numericValues[18];
                    seasonStats.S2 = (int)numericValues[19];
                    seasonStats.S3 = (int)numericValues[20];
                }
                else
                {
                    seasonStats.S1 = 0;
                    seasonStats.S2 = 0;
                    seasonStats.S3 = 0;
                }
            }

            skater.SeasonTotals = seasonStats;
        }
示例#26
0
 public Task <Skater> GetSkaterStatsBySeasonAsync(string season, Skater skater)
 {
     return(restService.GetSkaterStatsBySeasonAsync(skater, season));
 }
示例#27
0
        public SkaterPlayerStatsModel(BeaujeauxEntities database, Skater skater, int leagueId) : base(database, leagueId)
        {
            Skater = skater;

            var seasonTypes = Skater.SkaterSeasonStats
                              .Select(sss => sss.Season.SeasonType)
                              .Distinct()
                              .OrderBy(st => st.Id)
                              .ToList();

            var statGroups = new List <SkaterStatGroup>();

            foreach (var type in seasonTypes)
            {
                var stats = database.SkaterSeasonStats
                            .Where(sss => sss.Season.SeasonTypeId == type.Id)
                            .Where(sss => sss.Season.LeagueId == leagueId)
                            .Where(sss => sss.SkaterId == Skater.Id)
                            .Where(sss => !sss.IsSubtotal)
                            .OrderByDescending(sss => sss.Season.Number)
                            .ToList();

                SkaterSeasonStat totals = new SkaterSeasonStat()
                {
                    GP   = stats.Sum(a => a.GP),
                    G    = stats.Sum(a => a.G),
                    A    = stats.Sum(a => a.A),
                    P    = stats.Sum(a => a.P),
                    PLMI = stats.Sum(a => a.PLMI),
                    SHT  = stats.Sum(a => a.SHT),
                    SB   = stats.Sum(a => a.SB),
                    MP   = stats.Sum(a => a.MP),
                    PIM  = stats.Sum(a => a.PIM),
                    PM5  = stats.Sum(a => a.PM5),
                    HIT  = stats.Sum(a => a.HIT),
                    HTT  = stats.Sum(a => a.HTT),
                    PPG  = stats.Sum(a => a.PPG),
                    PPA  = stats.Sum(a => a.PPA),
                    PPP  = stats.Sum(a => a.PPP),
                    PPS  = stats.Sum(a => a.PPS),
                    PPM  = stats.Sum(a => a.PPM),
                    PKG  = stats.Sum(a => a.PKG),
                    PKA  = stats.Sum(a => a.PKA),
                    PKP  = stats.Sum(a => a.PKP),
                    PKS  = stats.Sum(a => a.PKS),
                    PKM  = stats.Sum(a => a.PKM),
                    GW   = stats.Sum(a => a.GW),
                    GT   = stats.Sum(a => a.GT),
                    EG   = stats.Sum(a => a.EG),
                    HT   = stats.Sum(a => a.HT),
                    FOW  = stats.Sum(a => a.FOW),
                    FOT  = stats.Sum(a => a.FOT),
                    PSG  = stats.Sum(a => a.PSG),
                    PSS  = stats.Sum(a => a.PSS),
                    FW   = stats.Sum(a => a.FW),
                    FL   = stats.Sum(a => a.FL),
                    FT   = stats.Sum(a => a.FT),
                    S1   = stats.Sum(a => a.S1),
                    S2   = stats.Sum(a => a.S2),
                    S3   = stats.Sum(a => a.S3),
                };

                statGroups.Add(new SkaterStatGroup()
                {
                    SeasonType = type,
                    Stats      = stats,
                    TotalStats = totals,
                });
            }
            GroupedStats = statGroups;
        }
示例#28
0
        private static void ConvertRawStats(string[] rawStats, Skater skater)
        {
            double[]          numericValues = rawStats.Select(stats => double.Parse(stats)).ToArray();
            SkaterSeasonStats seasonStats   = new SkaterSeasonStats();

            // Some skater stats are split into two parts.
            // If there's less than 40 stats it's split in 2 parts
            if (numericValues.Length > 40)
            {
                #region Single Line Stats
                seasonStats.GP   = (int)numericValues[0];
                seasonStats.G    = (int)numericValues[1];
                seasonStats.A    = (int)numericValues[2];
                seasonStats.P    = (int)numericValues[3];
                seasonStats.PLMI = (int)numericValues[4];
                seasonStats.PIM  = (int)numericValues[5];
                seasonStats.PM5  = (int)numericValues[6];
                seasonStats.HIT  = (int)numericValues[7];
                seasonStats.HTT  = (int)numericValues[8];
                seasonStats.SHT  = (int)numericValues[9];
                seasonStats.OSB  = (int)numericValues[10];
                seasonStats.OSM  = (int)numericValues[11];
                //seasonStats.SPER = (int)numericValues[12]; Don't need percentage
                seasonStats.SB = (int)numericValues[13];
                seasonStats.MP = (int)numericValues[14];
                //seasonStats.AMG = (int)numericValues[15]; Don't need average
                seasonStats.PPG = (int)numericValues[16];
                seasonStats.PPA = (int)numericValues[17];
                seasonStats.PPP = (int)numericValues[18];
                seasonStats.PPS = (int)numericValues[19];
                seasonStats.PPM = (int)numericValues[20];
                seasonStats.PKG = (int)numericValues[21];
                seasonStats.PKA = (int)numericValues[22];
                seasonStats.PKP = (int)numericValues[23];
                seasonStats.PKS = (int)numericValues[24];
                seasonStats.PKM = (int)numericValues[25];
                seasonStats.GW  = (int)numericValues[26];
                seasonStats.GT  = (int)numericValues[27];
                //seasonStats.FOPer = (int)numericValues[28]; Don't need percentage
                seasonStats.FOT = (int)numericValues[29];
                seasonStats.FOW = Helper.GetPercentageAmount(numericValues[28], seasonStats.FOT);
                seasonStats.GA  = (int)numericValues[30];
                seasonStats.TA  = (int)numericValues[31];
                seasonStats.EG  = (int)numericValues[32];
                seasonStats.HT  = (int)numericValues[33];
                //skaseasonStatster.P20 = (int)numericValues[34]; Don't need average
                seasonStats.PSG = (int)numericValues[35];
                seasonStats.PSS = (int)numericValues[36];
                seasonStats.FW  = (int)numericValues[37];
                seasonStats.FL  = (int)numericValues[38];
                seasonStats.FT  = (int)numericValues[39];
                seasonStats.GS  = (int)numericValues[40];
                seasonStats.PS  = (int)numericValues[41];
                seasonStats.WG  = (int)numericValues[42];
                seasonStats.WP  = (int)numericValues[43];

                // For some reason traded stats don't track stars. F**K.
                if (numericValues.Length == 47)
                {
                    seasonStats.S1 = (int)numericValues[44];
                    seasonStats.S2 = (int)numericValues[45];
                    seasonStats.S3 = (int)numericValues[46];
                }
                else
                {
                    seasonStats.S1 = 0;
                    seasonStats.S2 = 0;
                    seasonStats.S3 = 0;
                }
                #endregion
            }
            else
            {
                #region Multi Line Stats
                if (numericValues.Length == 26)
                {
                    seasonStats.GP   = (int)numericValues[0];
                    seasonStats.G    = (int)numericValues[1];
                    seasonStats.A    = (int)numericValues[2];
                    seasonStats.P    = (int)numericValues[3];
                    seasonStats.PLMI = (int)numericValues[4];
                    seasonStats.PIM  = (int)numericValues[5];
                    seasonStats.PM5  = (int)numericValues[6];
                    seasonStats.HIT  = (int)numericValues[7];
                    seasonStats.HTT  = (int)numericValues[8];
                    seasonStats.SHT  = (int)numericValues[9];
                    seasonStats.OSB  = (int)numericValues[10];
                    seasonStats.OSM  = (int)numericValues[11];
                    //seasonStats.SPER = (int)numericValues[12]; Don't need percentage
                    seasonStats.SB = (int)numericValues[13];
                    seasonStats.MP = (int)numericValues[14];
                    //seasonStats.AMG = (int)numericValues[15]; Don't need average
                    seasonStats.PPG = (int)numericValues[16];
                    seasonStats.PPA = (int)numericValues[17];
                    seasonStats.PPP = (int)numericValues[18];
                    seasonStats.PPS = (int)numericValues[19];
                    seasonStats.PPM = (int)numericValues[20];
                    seasonStats.PKG = (int)numericValues[21];
                    seasonStats.PKA = (int)numericValues[22];
                    seasonStats.PKP = (int)numericValues[23];
                    seasonStats.PKS = (int)numericValues[24];
                    seasonStats.PKM = (int)numericValues[25];
                }
                else
                {
                    seasonStats.GW = (int)numericValues[0];
                    seasonStats.GT = (int)numericValues[1];
                    //seasonStats.FOPer = (int)numericValues[2]; Don't need percentage
                    seasonStats.FOT = (int)numericValues[3];
                    seasonStats.FOW = Helper.GetPercentageAmount(numericValues[2], seasonStats.FOT);
                    seasonStats.GA  = (int)numericValues[4];
                    seasonStats.TA  = (int)numericValues[5];
                    seasonStats.EG  = (int)numericValues[6];
                    seasonStats.HT  = (int)numericValues[7];
                    //skaseasonStatster.P20 = (int)numericValues[8]; Don't need average
                    seasonStats.PSG = (int)numericValues[9];
                    seasonStats.PSS = (int)numericValues[10];
                    seasonStats.FW  = (int)numericValues[11];
                    seasonStats.FL  = (int)numericValues[12];
                    seasonStats.FT  = (int)numericValues[13];
                    seasonStats.GS  = (int)numericValues[14];
                    seasonStats.PS  = (int)numericValues[15];
                    seasonStats.WG  = (int)numericValues[16];
                    seasonStats.WP  = (int)numericValues[17];
                }
                #endregion
            }

            skater.SeasonTotals = seasonStats;
        }