public async Task <IActionResult> CreateTournament([FromForm] TournamentManagementViewModel tournament) { if (!ModelState.IsValid) { tournament.Result = new BaseResponseWrapper { StatusCode = Models.Responses.StatusCode.BadRequest, Message = "The tournament team data sent is not valid" }; TempData.Set("ViewModel", tournament); return(RedirectToAction(nameof(CreateTournament))); } try { await fantasySoccerService.AddTournamentAsync(new Tournament { Name = tournament.Name, StartDate = tournament.StartDate, EndDate = tournament.EndDate }); tournament.Result = new BaseResponseWrapper { StatusCode = Models.Responses.StatusCode.OK, Message = "The tournament team has been created successfully" }; TempData.Set("Result", tournament.Result); return(RedirectToAction(nameof(TournamentManagement))); } catch (Exception exception) { var statusCode = exception is TournamentStartDateMustBeOlderThanEndDateException ? Models.Responses.StatusCode.BadRequest : Models.Responses.StatusCode.InternalServerError; tournament.Result = new BaseResponseWrapper { StatusCode = statusCode, Message = exception.Message }; TempData.Set("ViewModel", tournament); return(RedirectToAction(nameof(CreateTournament))); } }