public async Task <IActionResult> Edit(string name, EditContestViewModel editViewModel)
        {
            if (ModelState.IsValid)
            {
                try
                {
                    var updateContestDTO = new UpdateContestDTO();
                    updateContestDTO.CategoryName = editViewModel.Category;
                    updateContestDTO.IsOpen       = editViewModel.IsContestOpen;
                    updateContestDTO.Phase1       = editViewModel.Phase1;
                    updateContestDTO.Phase2       = editViewModel.Phase2;
                    updateContestDTO.Finished     = editViewModel.Finished;
                    await this.contestService.UpdateAsync(name, updateContestDTO);

                    return(RedirectToAction(nameof(Index)));
                }
                catch (Exception e)
                {
                    toastNotification.AddErrorToastMessage(e.Message, new NotyOptions());
                    var path = Request.Path.Value.ToString() + "?name=" + editViewModel.Name;
                    return(Redirect(path));
                }
            }
            var categories = await this.categoryService.GetAllBaseAsync();

            ViewData["Categories"] = new SelectList(categories, "Name", "Name");
            return(View());
        }
        public async Task <IActionResult> UpdateContest(string contestName, [FromBody] UpdateContestDTO model)
        {
            try
            {
                var contest = await this.contestService.UpdateAsync(contestName, model);

                return(Ok(contest));
            }
            catch (Exception e)
            {
                return(BadRequest(e.Message));
            }
        }
Beispiel #3
0
        /// <summary>
        /// Update a contest by a certain ID and data.
        /// </summary>
        /// <param name="id">ID of the contest to update.</param>
        /// <param name="dto">Details of the contest to be updated.</param>
        /// <returns>Returns the updated contest or an appropriate error message.</returns>
        public async Task <ContestDTO> UpdateAsync(string contestName, UpdateContestDTO dto)
        {
            var contest = await FindContestByNameAsync(contestName);

            if (dto.CategoryName != null)
            {
                var category = await this.categoryService.FindCategoryByNameAsync(dto.CategoryName);

                contest.CategoryId = category.Id;
                contest.Category   = category;
            }
            if (dto.Phase1 != null)
            {
                ValidatePhase1(DateTime.ParseExact(dto.Phase1, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture),
                               DateTime.ParseExact(dto.Phase2, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture));
                contest.Phase1 = DateTime.ParseExact(dto.Phase1, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture);
            }
            if (dto.Phase2 != null)
            {
                ValidatePhase2(DateTime.ParseExact(dto.Phase1, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture),
                               DateTime.ParseExact(dto.Phase2, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture),
                               DateTime.ParseExact(dto.Finished, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture));
                contest.Phase2 = DateTime.ParseExact(dto.Phase2, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture);
            }
            if (dto.Finished != null)
            {
                ValidateFinished(DateTime.ParseExact(dto.Finished, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture),
                                 DateTime.ParseExact(dto.Phase2, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture));
                contest.Finished = DateTime.ParseExact(dto.Finished, "dd.MM.yy HH:mm", CultureInfo.InvariantCulture);
            }
            contest.Name = dto.Name ?? contest.Name;

            contest.IsOpen = dto.IsOpen;

            contest.ModifiedOn = DateTime.UtcNow;
            await this.dbContext.SaveChangesAsync();

            return(new ContestDTO(contest));
        }