예제 #1
0
        private void BtnAddCity_OnClick(object sender, RoutedEventArgs e)
        {
            Cities cities = new Cities(context);

            cities.ShowDialog();
            context.SaveChanges();
            cmbBoxCity.ItemsSource = context.Cities.Local.OrderBy(p => p.CityName).ToList();
        }
예제 #2
0
        private void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            JudgesAdd judgesAdd = new JudgesAdd(context);

            judgesAdd.ShowDialog();
            if (judgesAdd.NewJudge != null)
            {
                context.Judges.Local.Add(judgesAdd.NewJudge);
            }
            context.SaveChanges();
        }
        public void btnAdd_Click(object sender, RoutedEventArgs e)
        {
            TournamentAdd tournamentAdd = new TournamentAdd();

            tournamentAdd.ShowDialog();
            if (tournamentAdd.NewTournament != null)
            {
                context.Tournaments.Local.Add(tournamentAdd.NewTournament);
            }
            context.SaveChanges();
            context.Judges.Load();
            context.Cities.Load();
            cmbBoxJudges.ItemsSource = context.Judges.Local.OrderBy(p => p.JudgeLastName).ToList();
            cmbBoxCities.ItemsSource = context.Cities.Local.OrderBy(p => p.CityName).ToList();
        }
예제 #4
0
 static void Main(string[] args)
 {
     try
     { // Стратегия работы с базой данных
         Database.SetInitializer(new DropCreateDatabaseAlways <BadmintonContext>());
         var cities = new List <City>()
         {
             new City()
             {
                 CityName = "Kharkov"
             }
         };
         using (var context = new BadmintonContext())
         {
             cities.ForEach(c => context.Cities.Add(c));
             context.SaveChanges();
         }
         Console.WriteLine("База данных на SQL Server создана");
     }
     catch (System.Exception ex)
     {
         Console.WriteLine("База данных не создана. \n Ошибка:\n " + ex.ToString());
     }
     Console.WriteLine("Нажмите любую клавишу, чтобы выйти...");
     Console.ReadKey();
 }
 public ActionResult Create(PlayerModels model)
 {
     if (ModelState.IsValid)
     {
         db.Players.Add(model);
         db.SaveChanges();
         return(RedirectToAction("Details", model.ID));
     }
     return(RedirectToAction("List"));
 }
예제 #6
0
        private void btnAddJudge_Click(object sender, RoutedEventArgs e)
        {
            JudgesAdd judgesAdd = new JudgesAdd(context);

            judgesAdd.ShowDialog();
            if (judgesAdd.NewJudge != null)
            {
                context.Judges.Local.Add(judgesAdd.NewJudge);
            }
            context.SaveChanges();
            cmbBoxJudges.ItemsSource = context.Judges.Local.OrderBy(p => p.JudgeLastName).ToList();
        }
 /* Adds player to ActivePlayers table */
 public static void AddActivePlayer(Player model, BadmintonContext db)
 {
     if (db.ActivePlayers.SingleOrDefault(x => x.PlayerID == model.ID) == null)
     {
         ActivePlayer newPlayer = new ActivePlayer();
         newPlayer.OnCourt     = false;
         newPlayer.PlayerID    = model.ID;
         newPlayer.Waits       = 0;
         newPlayer.GamesPlayed = 0;
         db.ActivePlayers.Add(newPlayer);
         db.SaveChanges();
     }
 }
        /* Updates player view model
         * when a player is assigned to a court
         */
        public static void UpdatePlayerOnCourt(Player player, BadmintonContext context)
        {
            var id = player.ID;

            player.Waits   = 0;
            player.OnCourt = true;
            player.GamesPlayed++;
            ActivePlayer updated = context.ActivePlayers.Single(x => x.PlayerID == id);

            updated.Waits   = 0;
            updated.OnCourt = true;
            updated.GamesPlayed++;
            context.SaveChanges();
        }
예제 #9
0
        /* Assigns every player to be off court
         * Assigns new players to courts
         */
        public static void Rotate(BadmintonContext db, List <Player> players, TimeSlot ts)
        {
            foreach (var p in db.ActivePlayers)
            {
                p.OnCourt = false;
                db.SaveChanges();
            }
            List <ActivePlayer> temp = db.ActivePlayers.ToList();

            foreach (var i in temp)
            {
                players.Add(PlayerHelper.ActivePlayertoPlayer(i, db));
            }
            MakeTimeSlot(ts, players, db);
        }
예제 #10
0
 private void BtnOk_OnClick(object sender, RoutedEventArgs e)
 {
     context.SaveChanges();
     Close();
 }
예제 #11
0
        /* Creates a TimeSlot using a list of activeplayers
         * Assigns players on Courts based on wait-time(primary factor) and level of player
         * Time of arrival is automatically taken care of
         * Algorithm:
         * 1.Get a players with the highest wait-time
         * 2.Get players with the same level as the player in 1.
         * 3.Assign the players to a court
         * 4.If not enough players in that player's level or the wait-time difference is greater than 2,
         *   find players with the highest wait-time in other levels
         * 5.Repeat 1-4 until all courts are filled
         * 6.Update the players on the court to "on court" and reset their wait-time to zero
         * 7.Increment the wait-time of the off court players by 1
         * The ActivePlayersTable is updated afterwards
         */
        public static void MakeTimeSlot(TimeSlot ts, List <Player> players, BadmintonContext context)
        {
            Random random      = new Random();
            int    numOfCourts = TimeSlot.getNumOfCourts();
            List <List <Player> > playergrid = new List <List <Player> >();
            List <int>            onCourtIDs = new List <int>();
            int numOfLevels = 5;
            int count;
            int lvl;

            for (int i = 0; i < numOfLevels; i++)
            {
                playergrid.Add(new List <Player>());
            }

            for (int j = 0; j < players.Count; j++)
            {
                playergrid[players.ElementAt(j).Level - 1].Add(players.ElementAt(j));
            }

            for (int i = 0; i < numOfCourts; i++)
            {
                Court court = new Court();
                count = 0;

                players = players.OrderByDescending(x => x.Waits).ToList();

                for (int j = 0; j < players.Count; j++)
                {
                    if (count >= Court.intGetNumOfPlayersOnCourt())
                    {
                        break;
                    }
                    lvl             = players.ElementAt(j).Level - 1;
                    playergrid[lvl] = playergrid[lvl].OrderByDescending(x => x.Waits).ToList();
                    for (int k = 0; k < playergrid[lvl].Count; k++)
                    {
                        if (count >= Court.intGetNumOfPlayersOnCourt())
                        {
                            break;
                        }
                        if (playergrid[lvl][k].OnCourt == false)
                        {
                            PlayerHelper.UpdatePlayerOnCourt(playergrid[lvl][k], context);
                            court.addPlayer(playergrid[lvl][k]);
                            count++;
                        }
                    }

                    if (count < Court.intGetNumOfPlayersOnCourt())
                    {
                        lvl++;
                        if (lvl < 5)
                        {
                            playergrid[lvl] = playergrid[lvl].OrderByDescending(x => x.Waits).ToList();
                            for (int k = 0; k < playergrid[lvl].Count; k++)
                            {
                                if (count >= Court.intGetNumOfPlayersOnCourt())
                                {
                                    break;
                                }
                                if (playergrid[lvl][k].OnCourt == false)
                                {
                                    PlayerHelper.UpdatePlayerOnCourt(playergrid[lvl][k], context);
                                    court.addPlayer(playergrid[lvl][k]);
                                    count++;
                                }
                            }
                        }

                        if (count < Court.intGetNumOfPlayersOnCourt())
                        {
                            lvl = lvl - 2;
                            if (lvl >= 0)
                            {
                                playergrid[lvl] = playergrid[lvl].OrderByDescending(x => x.Waits).ToList();
                                for (int k = 0; k < playergrid[lvl].Count; k++)
                                {
                                    if (count >= Court.intGetNumOfPlayersOnCourt())
                                    {
                                        break;
                                    }
                                    if (playergrid[lvl][k].OnCourt == false)
                                    {
                                        PlayerHelper.UpdatePlayerOnCourt(playergrid[lvl][k], context);
                                        court.addPlayer(playergrid[lvl][k]);
                                        count++;
                                    }
                                }
                            }
                        }
                    }
                }
                ts.addCourt(court);
            }
            for (int q = 0; q < playergrid.Count; q++)
            {
                for (int p = 0; p < playergrid[q].Count; p++)
                {
                    if (playergrid[q][p].OnCourt == false)
                    {
                        playergrid[q][p].Waits++;           //update every player's wait times
                    }
                }
            }

            foreach (var p in players)
            {
                if (p.OnCourt == false)
                {
                    ActivePlayer updated = context.ActivePlayers.Single(x => x.PlayerID == p.ID);
                    updated.Waits++;
                    context.SaveChanges();
                }
            }
        }