public async Task <ActionResult> Create(
        string clubInitials,
        ScoreCodeWithOptionsViewModel model,
        string returnUrl)
    {
        var clubId = await _clubService.GetClubId(clubInitials);

        if (!await _authService.CanUserEdit(User, clubId))
        {
            return(Unauthorized());
        }
        var scoreSystem = await _scoringService.GetScoringSystemAsync(model.ScoringSystemId);

        if (scoreSystem.ClubId != clubId)
        {
            throw new InvalidOperationException("Score code is not for the current club.");
        }

        var coreObj = _mapper.Map <ScoreCode>(model);
        await _scoringService.SaveScoreCodeAsync(coreObj);

        if (Url.IsLocalUrl(returnUrl))
        {
            return(Redirect(returnUrl));
        }

        ViewData["ReturnUrl"] = returnUrl;
        return(View(model));
    }
    public async Task <ActionResult> Create(
        string clubInitials,
        Guid scoringSystemId,
        string returnUrl = null)
    {
        var clubId = await _clubService.GetClubId(clubInitials);

        ViewData["ReturnUrl"] = returnUrl;

        var scoringSystem = await _scoringService.GetScoringSystemAsync(scoringSystemId);

        if (scoringSystem.ClubId != clubId)
        {
            return(Unauthorized());
        }
        var vm = new ScoreCodeWithOptionsViewModel
        {
            ClubId          = clubId,
            ScoringSystemId = scoringSystemId
        };

        return(View(vm));
    }