public async Task<ActionResult> AddTournament(AddTournamentViewModel viewModel) { if (ModelState.IsValid) { int[] taskCountPerPhase = new int[viewModel.Phases.Count]; for (int i = 0; i < taskCountPerPhase.Length; i++) taskCountPerPhase[i] = viewModel.TaskContainer[i].Tasks.Count; DAL.Tables.Tournament tour = new DAL.Tables.Tournament { Title = viewModel.Tournament.Title, Description = viewModel.Tournament.Description, StartDate = viewModel.Tournament.StartDate.Add(viewModel.Tournament.StartTime), EndDate = viewModel.Tournament.EndDate.Add(viewModel.Tournament.EndTime), MaxUsers = viewModel.Tournament.MaxUsers }; List<Phase> phases = new List<Phase>(); viewModel.Phases.ForEach(x => { phases.Add(new Phase { MaxUsers = x.MaxUsers, Name = x.Name, Order = x.Order, MaxTasks = x.TaskCount }); }); List<Tasks> tasks = new List<Tasks>(); viewModel.TaskContainer.ForEach(x => { x.Tasks.ForEach(y => { var task = new Tasks { Title = y.Title, Order = y.Order, Description = y.Description, EndDate = y.EndDate.Add(y.EndTime), StartDate = y.StartDate.Add(y.StartTime), Input = y.Input, Output = y.Output, Example = y.Example, MaxExecuteMemory = y.MaxExecutedMemory, MaxExecuteTime = y.MaxExecutedTime, InputDataTypeId = y.InputDataId }; if (y.PDF != null) { byte[] pdf = new byte[y.PDF.ContentLength]; y.PDF.InputStream.Read(pdf, 0, y.PDF.ContentLength); task.PDF = pdf; } tasks.Add(task); }); }); bool result = await _tournamentManager.AddTournamnetAsync(tour, phases, tasks, taskCountPerPhase); if (result) { TempData["Alert"] = SetAlert.Set("Poprawnie dodano turniej! Teraz skonfiguruj dane testowe do poszczególnych zadań, by móc poprawnie aktywować turniej.", "Sukces", AlertType.Info); return RedirectToAction("Index"); } else { TempData["Alert"] = SetAlert.Set("Wystąpił błąd z bazą danych. Spróbuj ponownie później.", "Błąd", AlertType.Danger); return View(viewModel); } } else { TempData["Alert"] = SetAlert.Set("Wystąpił błąd, proszę sprawdź wszystkie kroki.", "Błąd!", AlertType.Danger); return View(viewModel); } }
public async Task <ActionResult> AddTournament(AddTournamentViewModel viewModel) { if (ModelState.IsValid) { int[] taskCountPerPhase = new int[viewModel.Phases.Count]; for (int i = 0; i < taskCountPerPhase.Length; i++) { taskCountPerPhase[i] = viewModel.TaskContainer[i].Tasks.Count; } DAL.Tables.Tournament tour = new DAL.Tables.Tournament { Title = viewModel.Tournament.Title, Description = viewModel.Tournament.Description, StartDate = viewModel.Tournament.StartDate.Add(viewModel.Tournament.StartTime), EndDate = viewModel.Tournament.EndDate.Add(viewModel.Tournament.EndTime), MaxUsers = viewModel.Tournament.MaxUsers }; List <Phase> phases = new List <Phase>(); viewModel.Phases.ForEach(x => { phases.Add(new Phase { MaxUsers = x.MaxUsers, Name = x.Name, Order = x.Order, MaxTasks = x.TaskCount }); }); List <Tasks> tasks = new List <Tasks>(); viewModel.TaskContainer.ForEach(x => { x.Tasks.ForEach(y => { var task = new Tasks { Title = y.Title, Order = y.Order, Description = y.Description, EndDate = y.EndDate.Add(y.EndTime), StartDate = y.StartDate.Add(y.StartTime), Input = y.Input, Output = y.Output, Example = y.Example, MaxExecuteMemory = y.MaxExecutedMemory, MaxExecuteTime = y.MaxExecutedTime, InputDataTypeId = y.InputDataId }; if (y.PDF != null) { byte[] pdf = new byte[y.PDF.ContentLength]; y.PDF.InputStream.Read(pdf, 0, y.PDF.ContentLength); task.PDF = pdf; } tasks.Add(task); }); }); bool result = await _tournamentManager.AddTournamnetAsync(tour, phases, tasks, taskCountPerPhase); if (result) { TempData["Alert"] = SetAlert.Set("Poprawnie dodano turniej! Teraz skonfiguruj dane testowe do poszczególnych zadań, by móc poprawnie aktywować turniej.", "Sukces", AlertType.Info); return(RedirectToAction("Index")); } else { TempData["Alert"] = SetAlert.Set("Wystąpił błąd z bazą danych. Spróbuj ponownie później.", "Błąd", AlertType.Danger); return(View(viewModel)); } } else { TempData["Alert"] = SetAlert.Set("Wystąpił błąd, proszę sprawdź wszystkie kroki.", "Błąd!", AlertType.Danger); return(View(viewModel)); } }