Пример #1
0
 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);
        }
Пример #3
0
        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 }));
        }