public async Task <ActionResult> DeleteMatchLocation([Bind(Prefix = "ConfirmDeleteRequest", Include = "RequiredText,ConfirmationText")] MatchingTextConfirmation model) { if (model is null) { throw new System.ArgumentNullException(nameof(model)); } var viewModel = new DeleteMatchLocationViewModel(CurrentPage, Services.UserService) { MatchLocation = await _matchLocationDataSource.ReadMatchLocationByRoute(Request.RawUrl, true).ConfigureAwait(false), }; viewModel.IsAuthorized = _authorizationPolicy.IsAuthorized(viewModel.MatchLocation); if (viewModel.IsAuthorized[AuthorizedAction.DeleteMatchLocation] && ModelState.IsValid) { var memberGroup = Services.MemberGroupService.GetById(viewModel.MatchLocation.MemberGroupKey.Value); if (memberGroup != null) { Services.MemberGroupService.Delete(memberGroup); } var currentMember = Members.GetCurrentMember(); await _matchLocationRepository.DeleteMatchLocation(viewModel.MatchLocation, currentMember.Key, currentMember.Name).ConfigureAwait(false); _cacheOverride.OverrideCacheForCurrentMember(CacheConstants.MatchLocationsCacheKeyPrefix); viewModel.Deleted = true; } else { viewModel.TotalMatches = await _matchDataSource.ReadTotalMatches(new MatchFilter { MatchLocationIds = new List <Guid> { viewModel.MatchLocation.MatchLocationId.Value }, IncludeTournamentMatches = true }).ConfigureAwait(false); } viewModel.Metadata.PageTitle = $"Delete " + viewModel.MatchLocation.NameAndLocalityOrTown(); viewModel.Breadcrumbs.Add(new Breadcrumb { Name = Constants.Pages.MatchLocations, Url = new Uri(Constants.Pages.MatchLocationsUrl, UriKind.Relative) }); if (!viewModel.Deleted) { viewModel.Breadcrumbs.Add(new Breadcrumb { Name = viewModel.MatchLocation.NameAndLocalityOrTownIfDifferent(), Url = new Uri(viewModel.MatchLocation.MatchLocationRoute, UriKind.Relative) }); } return(View("DeleteMatchLocation", viewModel)); }
public async override Task <ActionResult> Index(ContentModel contentModel) { if (contentModel is null) { throw new System.ArgumentNullException(nameof(contentModel)); } var model = new DeleteMatchLocationViewModel(contentModel.Content, Services?.UserService) { MatchLocation = await _matchLocationDataSource.ReadMatchLocationByRoute(Request.RawUrl, true).ConfigureAwait(false), }; if (model.MatchLocation == null) { return(new HttpNotFoundResult()); } else { model.TotalMatches = await _matchDataSource.ReadTotalMatches(new MatchFilter { MatchLocationIds = new List <Guid> { model.MatchLocation.MatchLocationId.Value }, IncludeTournamentMatches = true }).ConfigureAwait(false); model.ConfirmDeleteRequest.RequiredText = model.MatchLocation.NameAndLocalityOrTownIfDifferent(); model.IsAuthorized = _authorizationPolicy.IsAuthorized(model.MatchLocation); model.Metadata.PageTitle = "Delete " + model.MatchLocation.NameAndLocalityOrTown(); model.Breadcrumbs.Add(new Breadcrumb { Name = Constants.Pages.MatchLocations, Url = new Uri(Constants.Pages.MatchLocationsUrl, UriKind.Relative) }); model.Breadcrumbs.Add(new Breadcrumb { Name = model.MatchLocation.NameAndLocalityOrTownIfDifferent(), Url = new Uri(model.MatchLocation.MatchLocationRoute, UriKind.Relative) }); return(CurrentTemplate(model)); } }