public async Task <ActionResult> StepThreePost([FromForm] StepThreeFormModel form, CancellationToken cancellationToken) { var user = await _authService.GetCurrentUser(HttpContext, cancellationToken); string correctPage = GetCorrectPage(user); if (!correctPage.StartsWith("/registration/step-three")) { // A different step needs to be completed at this point return(Redirect(correctPage)); } if (form.HasCustomDistance) { form.VolunteerDistance = form.CustomDistance; } var registrationFormVariant = await GetRegistrationJourney(user.ID, cancellationToken); try { _logger.LogInformation($"Step 3 submission for {user.ID}"); await _userService.CreateUserStepThreeAsync( user.ID, form.VolunteerOptions, form.VolunteerDistance, registrationFormVariant, cancellationToken); await _groupMemberService.AddUserToDefaultGroups(user.ID); if (user.ReferringGroupId.HasValue && user.ReferringGroupId != -1) { return(Redirect($"/community/joinandgo/{Base64Utils.Base64Encode(user.ReferringGroupId.Value)}")); } else { return(Redirect("/account")); } } catch (Exception ex) { _logger.LogError("Error executing step 3"); _logger.LogError(ex.ToString()); return(Redirect("/registration/step-three?failure=error")); } }