//test constructor - pass in two teams public TestScoreProbability(NationTeam a, NationTeam b) { this.a = a; this.b = b; homescore = GetHomeTeamScore(a, b); awayscore = GetAwayTeamScore(a, b); }
public ActionResult DeleteConfirmed(string id) { NationTeam nationTeam = db.NationTeams.Find(id); db.NationTeams.Remove(nationTeam); db.SaveChanges(); return(RedirectToAction("Index")); }
public ActionResult Edit([Bind(Include = "NationCode,Nation,TeamGoalWeight")] NationTeam nationTeam) { if (ModelState.IsValid) { db.Entry(nationTeam).State = EntityState.Modified; db.SaveChanges(); return(RedirectToAction("Index")); } return(View(nationTeam)); }
public ActionResult Create([Bind(Include = "NationCode,Nation,TeamGoalWeight")] NationTeam nationTeam) { if (ModelState.IsValid) { db.NationTeams.Add(nationTeam); db.SaveChanges(); return(RedirectToAction("Index")); } return(View(nationTeam)); }
public ActionResult Delete(string id) { if (id == null) { return(new HttpStatusCodeResult(HttpStatusCode.BadRequest)); } NationTeam nationTeam = db.NationTeams.Find(id); if (nationTeam == null) { return(HttpNotFound()); } return(View(nationTeam)); }
public int GetAwayTeamScore(NationTeam homeTeam, NationTeam awayTeam) { double[] weight = new double[] { }; int[] list = Goal; if (awayTeam.TeamGoalWeight == homeTeam.TeamGoalWeight) { weight = SameGoalWeight; } else if ((awayTeam.TeamGoalWeight + 1) == homeTeam.TeamGoalWeight) { weight = BetterByOneGoalWeight; } else if ((awayTeam.TeamGoalWeight + 2) == homeTeam.TeamGoalWeight) { weight = BetterByTwoGoalWeight; } else if ((awayTeam.TeamGoalWeight + 3) == homeTeam.TeamGoalWeight) { weight = BetterByThreeGoalWeight; } else if ((awayTeam.TeamGoalWeight - 1) == homeTeam.TeamGoalWeight) { weight = WorseByOneGoalWeight; } else if ((awayTeam.TeamGoalWeight - 2) == homeTeam.TeamGoalWeight) { weight = WorseByTwoGoalWeight; } else if ((awayTeam.TeamGoalWeight - 3) == homeTeam.TeamGoalWeight) { weight = WorseByThreeGoalWeight; } var weighed_list = generateWeighedList(list, weight); Random random = new Random(); int Myrandom = RandomNumber(0, weighed_list.Count - 1); int awayTeamGoal = (weighed_list[Myrandom]); return(awayTeamGoal); }
public bool populateGameDetails(int homeScore, int awayScore, Fixture fixture, NationTeam home, NationTeam away) { var homePlayers = db.Players.ToList().Where(n => n.NationCode == fixture.HomeTeamNationCode); var awayPlayers = db.Players.ToList().Where(n => n.NationCode == fixture.AwayTeamNationCode); var viewHomeScorers = new List <ScorerIndexData>(); var viewHomeYellows = new List <ScorerIndexData>(); var viewHomeReds = new List <ScorerIndexData>(); var viewAwayScorers = new List <ScorerIndexData>(); var viewAwayYellows = new List <ScorerIndexData>(); var viewAwayReds = new List <ScorerIndexData>(); var viewMOTM = new ScorerIndexData(); Random yellowRandom = new Random(); foreach (var player in homePlayers) { var yellow = yellowRandom.NextDouble(); //this means yellow card if (yellow < .15) { viewHomeYellows.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } //this means red card if (yellow > .96) { viewHomeReds.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } } foreach (var player in awayPlayers) { var yellow = yellowRandom.NextDouble(); //this means yellow card if (yellow < .15) { viewAwayYellows.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } //this means red card if (yellow > .96) { viewAwayReds.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } } if (homeScore > 0) { Random random = new Random(); for (int i = 0; i < homeScore; i++) { var rnd = random.NextDouble(); foreach (var player in homePlayers) { if (rnd < player.GoalWeight) { viewHomeScorers.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, //scored = true }); // fixture.HomeTeamScorer.Add(player); //db.SaveChanges(); break; //rnd = random.NextDouble(); } rnd -= player.GoalWeight; } } } //find scorer and display on screen if (awayScore > 0) { Random random = new Random(); for (int i = 0; i < awayScore; i++) { var rnd = random.NextDouble(); foreach (var player in awayPlayers) { if (rnd < player.GoalWeight) { viewAwayScorers.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, scored = true }); // fixture.HomeTeamScorer.Add(player); //db.SaveChanges(); break; //rnd = random.NextDouble(); } rnd -= player.GoalWeight; } } } //update cleansheet and goal conceded stat - applicable only for defenders and goalkeepers var awayGkdef = awayPlayers.Where(p => p.Position == Position.GoalKeeper || p.Position == Position.Defender); if (homeScore == 0) { foreach (var player in awayGkdef) { var stat = db.PlayerRoundStats.Where(s => s.PlayerID == player.PlayerID && s.FixtureId == fixture.FixtureId).FirstOrDefault(); stat.CleanSheet = true; db.SaveChanges(); } } else { foreach (var player in awayGkdef) { var stat = db.PlayerRoundStats.Where(s => s.PlayerID == player.PlayerID && s.FixtureId == fixture.FixtureId).FirstOrDefault(); stat.GoalsConceded = homeScore; db.SaveChanges(); } } var homeGkdef = homePlayers.Where(p => p.Position == Position.GoalKeeper || p.Position == Position.Defender); if (awayScore == 0) { foreach (var player in homeGkdef) { var stat = db.PlayerRoundStats.Where(s => s.PlayerID == player.PlayerID && s.FixtureId == fixture.FixtureId).FirstOrDefault(); stat.CleanSheet = true; db.SaveChanges(); } } else { foreach (var player in homeGkdef) { var stat = db.PlayerRoundStats.Where(s => s.PlayerID == player.PlayerID && s.FixtureId == fixture.FixtureId).FirstOrDefault(); stat.GoalsConceded = awayScore; db.SaveChanges(); } } //if players team wins add to stats if (homeScore > awayScore) { foreach (var p in home.Players) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == p.PlayerID).FirstOrDefault(); statistic.IsWin = true; db.SaveChanges(); } //find man of the match with a min and max value of random number (0,10) - indedexer for 11 players of winning team Random randomMOTM = new Random(); int thisMOTM = randomMOTM.Next(0, 10); viewMOTM.playerId = home.Players.ToArray()[thisMOTM].PlayerID; viewMOTM.playerName = home.Players.ToArray()[thisMOTM].PlayerFirstname + ". " + home.Players.ToArray()[thisMOTM].PlayerSurname + " 0f " + home.Nation + " played slendid and was man of the match!"; //add to stats var stat = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == viewMOTM.playerId).FirstOrDefault(); stat.ManOfTheMatch = true; db.SaveChanges(); } if (homeScore == awayScore) { //find man of the match with a min and max value of random number (0,21) - indedexer 0 T0 10 for hometeam, 11 to 21 for awayteam Random randomMOTM = new Random(); int thisMOTM = randomMOTM.Next(0, 21); if (thisMOTM > 10) { thisMOTM -= 11; viewMOTM.playerId = away.Players.ToArray()[thisMOTM].PlayerID; viewMOTM.playerName = away.Players.ToArray()[thisMOTM].PlayerFirstname + ". " + away.Players.ToArray()[thisMOTM].PlayerSurname + " 0f " + away.Nation + " played slendid and was man of the match!"; } else { viewMOTM.playerId = home.Players.ToArray()[thisMOTM].PlayerID; viewMOTM.playerName = home.Players.ToArray()[thisMOTM].PlayerFirstname + ". " + home.Players.ToArray()[thisMOTM].PlayerSurname + " 0f " + home.Nation + " played slendid and was man of the match!"; } //add to stats var stat = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == viewMOTM.playerId).FirstOrDefault(); stat.ManOfTheMatch = true; db.SaveChanges(); } //if players team wins add to stats if (awayScore > homeScore) { foreach (var p in away.Players) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == p.PlayerID).FirstOrDefault(); statistic.IsWin = true; db.SaveChanges(); } Random randomMOTM = new Random(); int thisMOTM = randomMOTM.Next(0, 10); viewMOTM.playerId = away.Players.ToArray()[thisMOTM].PlayerID; viewMOTM.playerName = away.Players.ToArray()[thisMOTM].PlayerFirstname + ". " + away.Players.ToArray()[thisMOTM].PlayerSurname + " 0f " + home.Nation + " played slendid and was man of the match!"; //add to stats var stat = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == viewMOTM.playerId).FirstOrDefault(); stat.ManOfTheMatch = true; db.SaveChanges(); } //FIND MINUTES PLAYED - first find subs - the rest of team play 90 minutes //make 3 subs for both teams. Use a random number to select the sub and another random number to select minutes played //if team wins make late subs (between 55 and 89 minutes) //if team loses make earlier subs (between 30 and 80 minutes) //if draw (between 45 and 80 minutes) Random time = new Random(); int[] homesubs = CallSubs(); int[] awaysubs = CallSubs(); if (homeScore > awayScore) { foreach (var p in homesubs) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == home.Players.ToArray()[p].PlayerID).FirstOrDefault(); statistic.MinutesPlayed = time.Next(55, 89); db.SaveChanges(); } foreach (var p in awaysubs) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == away.Players.ToArray()[p].PlayerID).FirstOrDefault(); statistic.MinutesPlayed = time.Next(30, 80); db.SaveChanges(); } } else if (awayScore > homeScore) { foreach (var p in homesubs) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == home.Players.ToArray()[p].PlayerID).FirstOrDefault(); statistic.MinutesPlayed = time.Next(30, 80); db.SaveChanges(); } foreach (var p in awaysubs) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == away.Players.ToArray()[p].PlayerID).FirstOrDefault(); statistic.MinutesPlayed = time.Next(55, 89); db.SaveChanges(); } } else { foreach (var p in homesubs) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == home.Players.ToArray()[p].PlayerID).FirstOrDefault(); statistic.MinutesPlayed = time.Next(45, 80); db.SaveChanges(); } foreach (var p in awaysubs) { var statistic = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == away.Players.ToArray()[p].PlayerID).FirstOrDefault(); statistic.MinutesPlayed = time.Next(45, 80); db.SaveChanges(); } } //FIND MIN PLATED = 90 MINUTES var fullGamePlayers = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId); foreach (var stat in fullGamePlayers) { if (stat.MinutesPlayed == 0) { stat.MinutesPlayed = 90; db.SaveChanges(); } } ViewBag.AwayScorers = viewAwayScorers; ViewBag.HomeScorers = viewHomeScorers; ViewBag.HomeYellows = viewHomeYellows; ViewBag.HomeReds = viewHomeReds; ViewBag.AwayYellows = viewAwayYellows; ViewBag.AwayReds = viewAwayReds; ViewBag.MOTM = viewMOTM; return(true); }
private void populateGameDetails(int homeScore, int awayScore, Fixture fixture, NationTeam home, NationTeam away) { var homePlayers = db.Players.ToList().Where(n => n.NationCode == fixture.HomeTeamNationCode); var awayPlayers = db.Players.ToList().Where(n => n.NationCode == fixture.AwayTeamNationCode); var viewHomeScorers = new List <ScorerIndexData>(); var viewHomeYellows = new List <ScorerIndexData>(); var viewHomeReds = new List <ScorerIndexData>(); var viewAwayScorers = new List <ScorerIndexData>(); var viewAwayYellows = new List <ScorerIndexData>(); var viewAwayReds = new List <ScorerIndexData>(); if (homeScore > 0) { Random yellowRandom = new Random(); Random random = new Random(); for (int i = 0; i < homeScore; i++) { var rnd = random.NextDouble(); foreach (var player in homePlayers) { var yellow = yellowRandom.NextDouble(); //this means yellow card if (yellow < .15) { viewHomeYellows.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } //this means red card if (yellow > .96) { viewHomeReds.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } if (rnd < player.GoalWeight) { viewHomeScorers.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, //scored = true }); // fixture.HomeTeamScorer.Add(player); //db.SaveChanges(); break; //rnd = random.NextDouble(); } rnd -= player.GoalWeight; } } } if (awayScore > 0) { Random yellowRandom = new Random(); Random random = new Random(); for (int i = 0; i < awayScore; i++) { var rnd = random.NextDouble(); foreach (var player in awayPlayers) { var yellow = yellowRandom.NextDouble(); //this means yellow card if (yellow < .15) { viewAwayYellows.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } //this means red card if (yellow > .96) { viewAwayReds.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, }); } if (rnd < player.GoalWeight) { viewAwayScorers.Add(new ScorerIndexData { playerId = player.PlayerID, playerName = player.PlayerFirstname.Take(1).Single() + ". " + player.PlayerSurname, scored = true }); // fixture.HomeTeamScorer.Add(player); //db.SaveChanges(); break; //rnd = random.NextDouble(); } rnd -= player.GoalWeight; } } } //if players team wins add to stats if (homeScore > awayScore) { foreach (var p in home.Players) { var stat = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == p.PlayerID).Single(); stat.IsWin = true; db.SaveChanges(); } } //if players team wins add to stats if (awayScore > homeScore) { foreach (var p in away.Players) { var stat = db.PlayerRoundStats.ToList().Where(st => st.FixtureId == fixture.FixtureId && st.PlayerID == p.PlayerID).Single(); stat.IsWin = true; db.SaveChanges(); } } ViewBag.AwayScorers = viewAwayScorers; ViewBag.HomeScorers = viewHomeScorers; ViewBag.HomeYellows = viewHomeYellows; ViewBag.HomeReds = viewHomeReds; ViewBag.AwayYellows = viewAwayYellows; ViewBag.AwayReds = viewAwayReds; }
public void SetUp() { a = new NationTeam { NationCode = "IRE", Nation = Nation.Ireland, TeamGoalWeight = TeamGoalWeight.C, Players = new List <Player>(), Fixtures = new List <Fixture>() }; b = new NationTeam { NationCode = "SWE", Nation = Nation.Sweden, TeamGoalWeight = TeamGoalWeight.C, Players = new List <Player>(), Fixtures = new List <Fixture>() }; NationTeam c = new NationTeam { NationCode = "ITA", Nation = Nation.Italy, TeamGoalWeight = TeamGoalWeight.B, Players = new List <Player>(), Fixtures = new List <Fixture>() }; NationTeam d = new NationTeam { NationCode = "BEL", Nation = Nation.Belgium, TeamGoalWeight = TeamGoalWeight.A, Players = new List <Player>(), Fixtures = new List <Fixture>() }; Player p7 = new Player { PlayerFirstname = "Pierre", PlayerSurname = "Bengtsson", DateOfBirth = DateTime.Parse("1989-08-10"), PlayerValue = 5.0, Position = Position.Defender, NationCode = "SWE", PlayerID = 016, GoalWeight = .06 }; Player p8 = new Player { PlayerFirstname = "Robbie", PlayerSurname = "Brady", DateOfBirth = DateTime.Parse("1987-03-10"), PlayerValue = 5.5, Position = Position.Midfielder, NationCode = "IRE", PlayerID = 006, GoalWeight = .11 }; Player p9 = new Player { PlayerFirstname = "Shane", PlayerSurname = "Long", DateOfBirth = DateTime.Parse("1986-03-12"), PlayerValue = 5.5, Position = Position.Forward, NationCode = "IRE", PlayerID = 011, GoalWeight = .179 }; Player p10 = new Player { PlayerFirstname = "Glen", PlayerSurname = "Whealen", DateOfBirth = DateTime.Parse("1984-03-10"), PlayerValue = 4.8, Position = Position.Midfielder, NationCode = "IRE", PlayerID = 007, GoalWeight = .1 }; Player p11 = new Player { PlayerFirstname = "Wes", PlayerSurname = "Houlihan", DateOfBirth = DateTime.Parse("1981-04-10"), PlayerValue = 4.9, Position = Position.Midfielder, NationCode = "IRE", PlayerID = 008, GoalWeight = .1 }; Player p12 = new Player { PlayerFirstname = "John", PlayerSurname = "Walters", DateOfBirth = DateTime.Parse("1984-09-10"), PlayerValue = 5.1, Position = Position.Forward, NationCode = "IRE", PlayerID = 010, GoalWeight = .179 }; Player p13 = new Player { PlayerFirstname = "James", PlayerSurname = "McCarthy", DateOfBirth = DateTime.Parse("1989-04-10"), PlayerValue = 4.5, Position = Position.Midfielder, NationCode = "IRE", PlayerID = 009, GoalWeight = .1 }; Player p14 = new Player { PlayerFirstname = "Oscar", PlayerSurname = "Hiljemark", DateOfBirth = DateTime.Parse("1987-04-10"), PlayerValue = 4.3, Position = Position.Midfielder, NationCode = "SWE", PlayerID = 018, GoalWeight = .06 }; Player p15 = new Player { PlayerFirstname = "Mikael", PlayerSurname = "Lustig", DateOfBirth = DateTime.Parse("1987-03-10"), PlayerValue = 5.0, Position = Position.Defender, NationCode = "SWE", PlayerID = 014, GoalWeight = .07 }; Player p16 = new Player { PlayerFirstname = "Jonas", PlayerSurname = "Olsson", DateOfBirth = DateTime.Parse("1981-03-12"), PlayerValue = 5.2, Position = Position.Defender, NationCode = "SWE", PlayerID = 015, GoalWeight = .07 }; Player p17 = new Player { PlayerFirstname = "Pierre", PlayerSurname = "Bengtsson", DateOfBirth = DateTime.Parse("1989-08-10"), PlayerValue = 5.0, Position = Position.Defender, NationCode = "SWE", PlayerID = 016, GoalWeight = .06 }; Player p18 = new Player { PlayerFirstname = "Sebastian", PlayerSurname = "Larsson", DateOfBirth = DateTime.Parse("1984-03-12"), PlayerValue = 5.6, Position = Position.Midfielder, NationCode = "SWE", PlayerID = 017, GoalWeight = .09 }; Player p19 = new Player { PlayerFirstname = "Albin", PlayerSurname = "Ekdal", DateOfBirth = DateTime.Parse("1991-03-12"), PlayerValue = 5.4, Position = Position.Midfielder, NationCode = "SWE", PlayerID = 019, GoalWeight = .09 }; Player p20 = new Player { PlayerFirstname = "Kim", PlayerSurname = "Kallstrom", DateOfBirth = DateTime.Parse("1990-03-12"), PlayerValue = 5.6, Position = Position.Midfielder, NationCode = "SWE", PlayerID = 020, GoalWeight = .09 }; Player p21 = new Player { PlayerFirstname = "Ivo", PlayerSurname = "Toivonen", DateOfBirth = DateTime.Parse("1989-03-12"), PlayerValue = 5.9, Position = Position.Forward, NationCode = "SWE", PlayerID = 021, GoalWeight = .1 }; Player p22 = new Player { PlayerFirstname = "Zlatan", PlayerSurname = "Ibrahimovic", DateOfBirth = DateTime.Parse("1984-03-12"), PlayerValue = 7.0, Position = Position.Forward, NationCode = "SWE", PlayerID = 022, GoalWeight = .318 }; // Fixture f1 = new Fixture { FixtureId = 003, Venue = Venue.SaintDenis, RoundStage = RoundStage.FirstRound, HomeTeamNationCode = "IRE", AwayTeamNationCode = "SWE", HomeTeamScore = 0, AwayTeamScore = 0, AwayTeamScorer = new List<Player>(), HomeTeamScorer = new List<Player>(), RedCards = new List<Player>(), YellowCards = new List<Player>(), gamePlayed = false }; }