public void AddGoal(ResultsSheet resultsSheet, DateTime date, ResultsSheet.ResultsSheetPlayer player) { Models.Goal goal = new Models.Goal(player.Player.PlayerId, resultsSheet.GameWeekId, player.Player.ManagerId); goal.Created = date; goal.CreatedBy = "Reconciliation"; db.Goals.Add(goal); var playerT = db.Players.Where(x => x.PlayerId == goal.PlayerId).FirstOrDefault(); //auditService.Log("Goal", "Goal Added", "Reconciliation", string.Format("Goal scored for {0} ({1})", playerT?.FullName, playerT?.ManagerPlayers.FirstOrDefault()?.Manager?.Name ?? "Unattached"), resultsSheet.GameWeekId); }
private ResultsSheet CreateResultsSheet(int?gameWeekId = null) { var goalKeepers = db.ManagerGoalKeepers.AsNoTracking().Include(x => x.Team).Include(x => x.Manager).OrderBy(x => x.Substitute).ThenBy(x => x.Team.League.Rank).ThenBy(x => x.Team.Name).ToList(); var players = db.ManagerPlayers.AsNoTracking().Include(x => x.Player).Include(x => x.Manager).Where(x => !x.Substitute).OrderBy(x => x.Player.Team.League.Rank).ThenBy(x => x.Player.Team.Name).ThenBy(x => x.Player.LastName).ThenBy(x => x.Player.FirstName).ToList(); var managerCupWeeks = gameWeekService.ManagerCupWeeks(); var resultsSheet = new ResultsSheet(goalKeepers, players, managerCupWeeks, gameWeekId); return(resultsSheet); }
public void Reconcile(ResultsSheet resultsSheet) { var gameWeek = db.GameWeeks.Find(resultsSheet.GameWeekId); url = string.Format("{0}{1}&endDate={2}", url, gameWeek.Start.ToString("s"), gameWeek.End.ToString("s")); string json; List <Models.Scores.Fixture> fixtures = new List <Models.Scores.Fixture>(); using (WebClient client = new WebClient()) { try { json = client.DownloadString(url); } catch (Exception) { json = null; } } if (json != null) { fixtures = JsonConvert.DeserializeObject <List <Models.Scores.Fixture> >(json); var date = DateTime.Now; foreach (var fixture in fixtures) { foreach (var goal in fixture.Goals) { string matchText = string.Format("{0}-{1}", goal.Scorer, goal.Team).Replace(" ", string.Empty).ToUpper(); int bestDistance = -1; int bestPlayerId = -1; foreach (var player in resultsSheet.Players) { var distance = LevenshteinDistance.Compute(matchText, string.Format("{0}-{1}", player.Player.Player.LastName, player.Player.Player.Team.Alias).Replace(" ", string.Empty).ToUpper()); if (bestDistance == -1 || distance < bestDistance) { bestDistance = distance; bestPlayerId = player.Player.ManagerPlayerId; } } if (bestPlayerId != -1 && bestDistance < tolerance) { AddGoal(resultsSheet, date, resultsSheet.Players.Where(x => x.Player.ManagerPlayerId == bestPlayerId).First()); } } } } }
public ActionResult Index(ResultsSheet resultsSheet) { var managerCupWeeks = gameWeekService.ManagerCupWeeks(resultsSheet.GameWeekId); var date = DateTime.UtcNow; foreach (var goalKeeper in resultsSheet.GoalKeepers) { bool substitute = false; if (goalKeeper.SubstitutePlayed) { substitute = true; } if (goalKeeper.Conceded > 0) { for (int i = 0; i < goalKeeper.Conceded; i++) { Concede concede = new Concede(goalKeeper.GoalKeeper.TeamId, resultsSheet.GameWeekId, goalKeeper.GoalKeeper.ManagerId, substitute); concede.Created = date; concede.CreatedBy = User.Identity.Name; db.Conceded.Add(concede); var team = db.Teams.Where(x => x.TeamId == concede.TeamId).FirstOrDefault(); auditService.Log("Concede", "Concede Added", User.Identity.Name, string.Format("Goal conceded for {0} ({1})", team?.Name, team?.ManagerGoalKeepers?.FirstOrDefault()?.Manager?.Name ?? "Unattached"), resultsSheet.GameWeekId); } } if (managerCupWeeks.Exists(x => x.ManagerId == goalKeeper.GoalKeeper.ManagerId)) { if (goalKeeper.CupConceded > 0) { for (int i = 0; i < goalKeeper.CupConceded; i++) { Concede concede = new Concede(goalKeeper.Substitute.TeamId, resultsSheet.GameWeekId, goalKeeper.Substitute.ManagerId, substitute, true); concede.Created = date; concede.CreatedBy = User.Identity.Name; db.Conceded.Add(concede); var team = db.Teams.Where(x => x.TeamId == concede.TeamId).FirstOrDefault(); auditService.Log("Concede", "Concede Added", User.Identity.Name, string.Format("Cup goal conceded for {0} ({1})", team?.Name, team?.ManagerGoalKeepers?.FirstOrDefault()?.Manager?.Name ?? "Unattached"), resultsSheet.GameWeekId); } } } } foreach (var player in resultsSheet.Players) { if (player.Goals > 0) { for (int i = 0; i < player.Goals; i++) { Goal goal = new Goal(player.Player.PlayerId, resultsSheet.GameWeekId, player.Player.ManagerId); goal.Created = date; goal.CreatedBy = User.Identity.Name; db.Goals.Add(goal); var playerT = db.Players.Where(x => x.PlayerId == goal.PlayerId).FirstOrDefault(); auditService.Log("Goal", "Goal Added", User.Identity.Name, string.Format("Goal scored for {0} ({1})", playerT?.FullName, playerT?.ManagerPlayers.FirstOrDefault()?.Manager?.Name ?? "Unattached"), resultsSheet.GameWeekId); } } if (managerCupWeeks.Exists(x => x.ManagerId == player.Player.ManagerId)) { if (player.CupGoals > 0) { for (int i = 0; i < player.CupGoals; i++) { Goal goal = new Goal(player.Player.PlayerId, resultsSheet.GameWeekId, player.Player.ManagerId, true); goal.Created = date; goal.CreatedBy = User.Identity.Name; db.Goals.Add(goal); var playerT = db.Players.Where(x => x.PlayerId == goal.PlayerId).FirstOrDefault(); auditService.Log("Goal", "Goal Added", User.Identity.Name, string.Format("Cup goal scored for {0} ({1})", playerT?.FullName, playerT?.ManagerPlayers.FirstOrDefault()?.Manager?.Name ?? "Unattached"), resultsSheet.GameWeekId); } } } } var gameWeek = db.GameWeeks.Find(resultsSheet.GameWeekId); gameWeek.SetComplete(); db.SaveChanges(); gameWeekSummaryService.Create(resultsSheet.GameWeekId); cupWeekSummaryService.Create(resultsSheet.GameWeekId); return(RedirectToAction("Index", "Result", new { gameWeekId = resultsSheet.GameWeekId })); }