public async Task <IActionResult> SelectVenue([FromForm][Bind("TeamId, VenueId")] TeamVenueSelectModel model, CancellationToken cancellationToken) { // model binding is not case-sensitive var teamEntity = await _appDb.TeamRepository.GetTeamEntityAsync(new PredicateExpression(TeamFields.Id == model.TeamId), cancellationToken); if (teamEntity == null || !model.VenueId.HasValue || !await _appDb.VenueRepository.IsValidVenueIdAsync(model.VenueId, cancellationToken)) { return(NotFound()); } if (!(await _authorizationService.AuthorizeAsync(User, new TeamEntity(teamEntity.Id), Authorization.TeamOperations.EditTeam)).Succeeded) { return(JsonAjaxRedirectForModal(Url.Action(nameof(Error.AccessDenied), nameof(Error), new { ReturnUrl = Url.Action(nameof(MyTeam), nameof(Team), new { Organization = _siteContext.UrlSegmentValue, model.TeamId }) }))); } model.TournamentId = _siteContext.TeamTournamentId; if (!ModelState.IsValid) { return(PartialView(ViewNames.Team._SelectVenueModalPartial, model)); } TempData.Put <MyTeamMessageModel.MyTeamMessage>(nameof(MyTeamMessageModel.MyTeamMessage), new MyTeamMessageModel.MyTeamMessage { AlertType = SiteAlertTagHelper.AlertType.Danger, MessageId = MyTeamMessageModel.MessageId.TeamDataFailure }); try { teamEntity.VenueId = model.VenueId; if (await _appDb.GenericRepository.SaveEntityAsync(teamEntity, false, false, cancellationToken)) { TempData.Put <MyTeamMessageModel.MyTeamMessage>(nameof(MyTeamMessageModel.MyTeamMessage), new MyTeamMessageModel.MyTeamMessage { AlertType = SiteAlertTagHelper.AlertType.Success, MessageId = MyTeamMessageModel.MessageId.VenueCreateSuccess }); } else { throw new Exception("Failed to save team entity"); } } catch (Exception e) { _logger.LogCritical(e, "Failed to save selected venue for team id {0}, venue id {1}", model.TeamId, model.VenueId); } return(JsonAjaxRedirectForModal(Url.Action(nameof(MyTeam), nameof(Team), new { Organization = _siteContext.UrlSegmentValue, model.TeamId }))); }
public async Task <IActionResult> SelectVenue([FromForm][Bind("TeamId, VenueId")] TeamVenueSelectModel selectVenueModel, CancellationToken cancellationToken) { // model binding is not case-sensitive // Note: TeamId is not taken from TeamVenueSelectModel, but from ApplicationSessionModel var sessionModel = await GetModelFromSession(cancellationToken); if (!sessionModel.IsFromSession) { return(RedirectToAction(nameof(SelectTeam), new { Organization = _tenantContext.SiteContext.UrlSegmentValue })); } ViewData["TournamentName"] = sessionModel.TournamentName; if (!sessionModel.Team.IsNew) { var teamEntity = await _appDb.TeamRepository.GetTeamEntityAsync( new PredicateExpression(TeamFields.Id == sessionModel.Team.Id), cancellationToken); if (teamEntity == null) { return(RedirectToAction(nameof(SelectTeam), new { Organization = _tenantContext.SiteContext.UrlSegmentValue })); } } if (selectVenueModel.VenueId.HasValue && !await _appDb.VenueRepository.IsValidVenueIdAsync(selectVenueModel.VenueId, cancellationToken)) { return(RedirectToAction(nameof(SelectVenue), new { Organization = _tenantContext.SiteContext.UrlSegmentValue })); } selectVenueModel.TournamentId = sessionModel.PreviousTournamentId ?? _tenantContext.TournamentContext.ApplicationTournamentId; if (!ModelState.IsValid) { return(View(ViewNames.TeamApplication.SelectVenue, selectVenueModel)); } sessionModel.Venue.IsNew = !selectVenueModel.VenueId.HasValue; sessionModel.Venue.Id = selectVenueModel.VenueId ?? 0; SaveModelToSession(sessionModel); return(RedirectToAction(nameof(EditVenue), new { Organization = _tenantContext.SiteContext.UrlSegmentValue })); }