public ActionResult Create(CompetitionVM viewModel)
        {
            if (ModelState.IsValid)
            {
                var validator = new CompetitionValidator();
                var result    = validator.Validate(viewModel.Competition);

                if (result.Errors.Any())
                {
                    foreach (var item in result.Errors)
                    {
                        ModelState.AddModelError("", item.ErrorMessage);
                    }
                }
                else
                {
                    if (viewModel.ImageFile != null)
                    {
                        string extension = Path.GetExtension(viewModel.ImageFile.FileName);
                        string fileName  = viewModel.Competition.Name.Replace(" ", string.Empty) + DateTime.Now.ToString("yymmdd") + extension;
                        viewModel.Competition.PathImage = "~/Image/" + fileName;
                        fileName = Path.Combine(Server.MapPath("~/Image/"), fileName);
                        viewModel.ImageFile.SaveAs(fileName);
                    }

                    viewModel.Competition.IsCompetitionActvie = false;
                    viewModel.Competition.IsRegistrationOpen  = false;
                    _competitionsRepository.Create(viewModel.Competition);

                    viewModel.EventRoundNumberList.RemoveAll(x => string.IsNullOrEmpty(x));


                    for (int i = 0; i < viewModel.SelectedEventsList.Count; i++)
                    {
                        var competitionsEventsVM = new CompetitionEvents();

                        competitionsEventsVM.CompetitionID = viewModel.Competition.ID;
                        competitionsEventsVM.EventID       = int.Parse(viewModel.SelectedEventsList[i]);
                        competitionsEventsVM.RoundNumber   = int.Parse(viewModel.EventRoundNumberList[i]);

                        _comeptitionEventsRepository.Create(competitionsEventsVM);
                    }

                    return(RedirectToAction("Index"));
                }
            }
            viewModel.EventsList = _eventsRepository.GetWhere(x => x.ID > 0);
            return(View(viewModel));
        }
Exemplo n.º 2
0
        public async Task <ICommandResult> Handler(NewCompetitionCommand command)
        {
            var movies = await _movieRepository.GetByIdsAsync(command.PlayerIds);

            var competition = new Competition(Guid.NewGuid(), command.NumberOfPlayers);

            competition.AddPlayers(movies.ToList());

            var validator      = new CompetitionValidator();
            var validateResult = validator.Validate(competition);

            if (!validateResult.IsValid)
            {
                return(new ValidationFailureEvent(validateResult.Errors));
            }

            competition.Start();
            var ranking = competition.GetBracketByRound(competition.NumberOfRounds).Ranking;

            return(new CompetitionCompletedEvent(ranking.ToList()));
        }