public ActionResult GenerateFixtures(int? groupid)
        {
            Groups group = unitOfWork.GroupRepository.GetByID((int)groupid);
            if (group == null)
            {
                AddApplicationMessage("Skupina s tímto ID neexistuje", MessageSeverity.Danger);
                return RedirectToAction("Index", "Competitions");
            }

            int fixexist = unitOfWork.FixtureRepository.Get(filter: f => f.Group == groupid).Count();
            if (fixexist > 0)
            {
                AddApplicationMessage("Rozlosování pro tuto skupinu již existuje", Models.MessageSeverity.Danger);
                return RedirectToAction("Admin", "Group", new { groupid = groupid });
            }

            var teams = unitOfWork.TeamRepository.GetTeamsByGroup((int)groupid).ToList();
            // Random poradi tymu pro rozlosovani
            int n = teams.Count;
            Random rng = new Random();
            while (n > 1)
            {
                n--;
                int k = rng.Next(n + 1);
                Teams value = teams[k];
                teams[k] = teams[n];
                teams[n] = value;
            }

            if (teams.Count % 2 != 0)
            {
                var evenTeam = new Teams(){
                    ID = 0
                };
                teams.Add(evenTeam);
            }
            var games = ListMatches(teams);
            int currentRound = 1;
            foreach (var round in games)
            {
                foreach(var game in round)
                {
                    if (game.Item1.ID == 0 || game.Item2.ID == 0)
                        continue;

                    Fixtures fixture = new Fixtures()
                    {
                        Team1 = game.Item1.ID,
                        Team2 = game.Item2.ID,
                        Round = currentRound,
                        Group = (int)groupid
                    };
                    unitOfWork.FixtureRepository.Insert(fixture);
                }
                currentRound++;
            }
            unitOfWork.Save();
            AddApplicationMessage("Rozlosování skupiny " + group.Name + " bylo provedeno", MessageSeverity.Success);

            return RedirectToAction("Admin","Group", new { groupid = groupid});
        }
 public int CalculateRollingExpenses(Teams team)
 {
     return (team.Value - 1750000 < 0) ? 0 : ((int)team.Value - 1750000) / 150000 * 10000;
 }
 public void RemovePlayerInjuries(Teams team)
 {
     var players = unitOfWork.PlayerRepository.Get(filter: p => p.Team == team.ID && p.MNG == 1);
     foreach(var player in players)
     {
         if (player.MNG == 1)
         {
             player.MNG = 0;
             team.Value += player.Value;
             unitOfWork.PlayerRepository.Update(player);
         }
     }
     unitOfWork.TeamRepository.Update(team);
     unitOfWork.Save();
 }
 public ActionResult Add(AddTeamViewModel model)
 {
     var races = from Races r in Enum.GetValues(typeof(Races)) select new { ID = (int)r, Name = r.ToString() };
     model.races = new SelectList(races, "ID", "Name");
     var users = unitOfWork.UserRepository.Get(filter: u => u.Status == Status.Active).ToList();
     model.users = new SelectList(users, "ID", "Name");
     if (ModelState.IsValid)
     {
         Teams team = new Teams()
         {
             Race = (Races)model.race,
             Owner = model.owner,
             Name = model.name,
             Rerolls = 0,
             Fanfactor = 0,
             Asscoaches = 0,
             Cheerleaders = 0,
             Apothecary = 0,
             Value = 0,
             Treasury = model.startValue == null ? model.startValue : 1000000,
             Status = Status.Active
         };
         unitOfWork.TeamRepository.Insert(team);
         unitOfWork.Save();
         AddApplicationMessage("Tým byl úspěšně založen", MessageSeverity.Success);
         return RedirectToAction("Index", "Team");
     }
     AddApplicationMessage("Tým se nepodařilo založit, zkontrolujte formulář", MessageSeverity.Danger);
     return View(model);
 }