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)); }
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())); }