public PairMatchViewModel(PairTournament tournament)
 {
     Tournament = tournament;
     TournamentId = tournament.Id;
     BaseTournamentId = tournament.GetBaseTournamentId();
 }
Example #2
0
        public static void Main(string[] args)
        {
            try
            {
                System.Data.Entity.Database.SetInitializer(new DataAccessInitializer());
                var dataAccess = new DataAccess();

                var pairTouranment = new PairTournament()
                {
                    Name = "Парный",
                    NumberOfPlayers = 4
                };

                dataAccess.PairTournaments.Add(pairTouranment);
                dataAccess.SaveChanges();

                var player1 = dataAccess.Players.FirstOrDefault(p => p.Id == 1);
                var player2 = dataAccess.Players.FirstOrDefault(p => p.Id == 2);
                var player3 = dataAccess.Players.FirstOrDefault(p => p.Id == 3);
                var player4 = dataAccess.Players.FirstOrDefault(p => p.Id == 4);

                pairTouranment.Participants.Add(new PairInTournament()
                {
                    Number = 1,
                    Player1 = player1,
                    Player2 = player2,
                    Seed = true
                });

                pairTouranment.Participants.Add(new PairInTournament()
                {
                    Number = 2,
                    Player1 = player3,
                    Player2 = player4,
                    Seed = true
                });

                dataAccess.SaveChanges();

                //pairTouranment.Matches.Add(new PairMatch()
                //{
                //    Player1 = player1,
                //    Player2 = player2,
                //    Player3 = player3,
                //    Player4 = player4,
                //    Winner1 = player1,
                //    Winner2 = player2,
                //    Stage = Stage.Final,
                //    Time = DateTime.Now,
                //    Score = "6:4;"
                //});

                //dataAccess.SaveChanges();

                //pairTouranment.Places.Add(new PairPlace()
                //{
                //    Player1 = player1,
                //    Player2 = player2,
                //    Position = 1
                //});

                dataAccess.SaveChanges();

                dataAccess.PairTournaments.Remove(pairTouranment);
                dataAccess.SaveChanges();
            }
            catch (Exception e)
            {

            }

            System.Console.ReadLine();
        }
        protected void UpdatePlacesFromConsolationTournament(PairTournament tournament, PairTournament baseTournament)
        {
            foreach (var t in tournament.ConsolationTournaments)
            {
                var final = t.GetMatchesByStage(Stage.Final)[0];

                //DataAccess.Entry(final).Reference(f => f.Player1).Load();
                //DataAccess.Entry(final).Reference(f => f.Player2).Load();
                //DataAccess.Entry(final).Reference(f => f.Winner).Load();

                if (final.Winner != null)
                {
                    baseTournament.Places.Add(new PairPlace()
                    {
                        Pair = final.Winner,
                        Position = t.WinnerPlace,
                        Tournament = baseTournament
                    });
                }
                if (final.Looser != null)
                {
                    baseTournament.Places.Add(new PairPlace()
                    {
                        Pair = final.Looser,
                        Position = t.WinnerPlace + 1,
                        Tournament = baseTournament
                    });
                }

                UpdatePlacesFromConsolationTournament(t, baseTournament);
            }
        }
 protected void DeleteConsolationTournaments(PairTournament tournament)
 {
     var tournaments = DataAccess.PairTournaments.Where(t => t.BaseTournament.Id == tournament.Id).ToList();
     foreach (var tourn in tournaments)
     {
         DataAccess.PairTournaments.Remove(tourn);
         DeleteConsolationTournaments(tourn);
     }
 }
        protected void CreateConsolationTournaments(PairTournament tournament)
        {
            var stage = tournament.FirstStage.GetNext();
            while (stage != Stage.None)
            {
                var newTournament = new PairTournament()
                {
                    NumberOfPlayers = stage.GetNumberOfParticipants(),
                    Name = stage.GetPrev().GetDisplayName()
                };

                switch (stage)
                {
                    case Stage.Final:
                        newTournament.WinnerPlace = tournament.WinnerPlace + 2;
                        break;
                    case Stage.SemiFinal:
                        newTournament.WinnerPlace = tournament.WinnerPlace + 4;
                        break;
                    case Stage.QuarterFinal:
                        newTournament.WinnerPlace = tournament.WinnerPlace + 8;
                        break;
                    case Stage.OneEighthFinals:
                        newTournament.WinnerPlace = tournament.WinnerPlace + 16;
                        break;
                    case Stage.OneSixteenthFinals:
                        newTournament.WinnerPlace = tournament.WinnerPlace + 32;
                        break;
                }

                //newTournament.WinnerPlace = tournament.WinnerPlace + stage.GetNumberOfParticipants();

                newTournament.BaseTournament = tournament;
                DataAccess.PairTournaments.Add(newTournament);
                DataAccess.SaveChanges();

                newTournament.CreateMatches();
                DataAccess.SaveChanges();

                CreateConsolationTournaments(newTournament);

                stage = stage.GetNext();
            }
        }
        public ActionResult Create(TournamentViewModel model, int? page, int? count)
        {
            ViewBag.Page = page = page.HasValue && page > 1 ? page : 1;
            ViewBag.Count = count = count.HasValue && count > 1 ? count : __default_count;

            if (model.Document != null && !DocumentHelper.ValidExtension(model.Document.FileName))
            {
                ModelState.AddModelError("Document", "Необходимо загружать документы формата doc (MS Word) или pdf.");
            }

            if (!ModelState.IsValid)
            {
                model.Categories = InitCategories();
                return View(model);
            }

            var tournament = new PairTournament()
            {
                Name = model.Name,
                StartDate = model.StartDate,
                EndDate = model.EndDate,
                NumberOfPlayers = model.NumberOfPlayers,
                EndOfRegistration = model.EndOfRegistration,
                Type = model.Type
            };

            var category = DataAccess.Categories.Find(model.CategoryId);
            if (category != null)
            {
                tournament.Category = category;
            }

            if (model.Document != null)
            {
                var helper = new DocumentHelper(DocumentStoragePath);
                if (!string.IsNullOrEmpty(tournament.DocumentName))
                {
                    helper.Delete(tournament.DocumentName);
                }
                tournament.DocumentName = helper.Upload(model.Document);
            }

            tournament.CreateMatches();

            DataAccess.PairTournaments.Add(tournament);
            DataAccess.SaveChanges();

            CreateConsolationTournaments(tournament);

            return RedirectToAction("index", new { page = page, count = count });
        }