public async Task <ActionResult> DeleteCompetition([Bind(Prefix = "ConfirmDeleteRequest", Include = "RequiredText,ConfirmationText")] MatchingTextConfirmation model) { if (model is null) { throw new ArgumentNullException(nameof(model)); } var viewModel = new DeleteCompetitionViewModel(CurrentPage, Services.UserService) { Competition = await _competitionDataSource.ReadCompetitionByRoute(Request.RawUrl).ConfigureAwait(false), }; viewModel.IsAuthorized = _authorizationPolicy.IsAuthorized(viewModel.Competition); if (viewModel.IsAuthorized[AuthorizedAction.DeleteCompetition] && ModelState.IsValid) { var memberGroup = Services.MemberGroupService.GetById(viewModel.Competition.MemberGroupKey.Value); if (memberGroup != null) { Services.MemberGroupService.Delete(memberGroup); } var currentMember = Members.GetCurrentMember(); await _competitionRepository.DeleteCompetition(viewModel.Competition, currentMember.Key, currentMember.Name).ConfigureAwait(false); _cacheOverride.OverrideCacheForCurrentMember(CacheConstants.CompetitionsPolicyCacheKeyPrefix); viewModel.Deleted = true; } else { var competitionIds = new List <Guid> { viewModel.Competition.CompetitionId.Value }; viewModel.TotalMatches = await _matchDataSource.ReadTotalMatches(new MatchFilter { CompetitionIds = competitionIds, IncludeTournamentMatches = true }).ConfigureAwait(false); viewModel.TotalTeams = await _teamDataSource.ReadTotalTeams(new TeamFilter { CompetitionIds = competitionIds }).ConfigureAwait(false); } viewModel.Metadata.PageTitle = $"Delete {viewModel.Competition.CompetitionName}"; viewModel.Breadcrumbs.Add(new Breadcrumb { Name = Constants.Pages.Competitions, Url = new Uri(Constants.Pages.CompetitionsUrl, UriKind.Relative) }); if (!viewModel.Deleted) { viewModel.Breadcrumbs.Add(new Breadcrumb { Name = viewModel.Competition.CompetitionName, Url = new Uri(viewModel.Competition.CompetitionRoute, UriKind.Relative) }); } return(View("DeleteCompetition", viewModel)); }
public async override Task <ActionResult> Index(ContentModel contentModel) { if (contentModel is null) { throw new ArgumentNullException(nameof(contentModel)); } var model = new DeleteCompetitionViewModel(contentModel.Content, Services?.UserService) { Competition = await _competitionDataSource.ReadCompetitionByRoute(Request.RawUrl).ConfigureAwait(false) }; if (model.Competition == null) { return(new HttpNotFoundResult()); } else { var competitionIds = new List <Guid> { model.Competition.CompetitionId.Value }; model.TotalMatches = await _matchDataSource.ReadTotalMatches(new MatchFilter { CompetitionIds = competitionIds, IncludeTournamentMatches = true }).ConfigureAwait(false); model.TotalTeams = await _teamDataSource.ReadTotalTeams(new TeamFilter { CompetitionIds = competitionIds }).ConfigureAwait(false); model.ConfirmDeleteRequest.RequiredText = model.Competition.CompetitionName; model.IsAuthorized = _authorizationPolicy.IsAuthorized(model.Competition); model.Metadata.PageTitle = "Delete " + model.Competition.CompetitionName; model.Breadcrumbs.Add(new Breadcrumb { Name = Constants.Pages.Competitions, Url = new Uri(Constants.Pages.CompetitionsUrl, UriKind.Relative) }); model.Breadcrumbs.Add(new Breadcrumb { Name = model.Competition.CompetitionName, Url = new Uri(model.Competition.CompetitionRoute, UriKind.Relative) }); return(CurrentTemplate(model)); } }