public void And_Has_Ukprn_And_Manage_True_Then_Redirects_To_Provider_Manage(
            ReservationsRouteModel routeModel,
            DeleteCompletedViewModel viewModel,
            ManageReservationsController controller)
        {
            viewModel.Manage = true;

            var result = controller.PostDeleteCompleted(routeModel, viewModel) as RedirectToRouteResult;

            result.RouteName.Should().Be(RouteNames.ProviderManage);
        }
        public void And_Has_Ukprn_And_Model_Invalid_Then_Returns_Provider_Completed_View(
            ReservationsRouteModel routeModel,
            DeleteCompletedViewModel viewModel,
            ManageReservationsController controller)
        {
            controller.ModelState.AddModelError("key", "error message");

            var result = controller.PostDeleteCompleted(routeModel, viewModel) as ViewResult;

            result.ViewName.Should().Be(ViewNames.ProviderDeleteCompleted);
            result.Model.Should().Be(viewModel);
        }
        public void And_Has_Ukprn_And_Manage_False_Then_Redirects_To_Provider_Dashboard(
            ReservationsRouteModel routeModel,
            DeleteCompletedViewModel viewModel,
            string providerDashboardUrl,
            [Frozen] Mock <IExternalUrlHelper> externalUrlHelper,
            ManageReservationsController controller)
        {
            routeModel.EmployerAccountId = null;
            externalUrlHelper.Setup(x => x.GenerateDashboardUrl(null)).Returns(providerDashboardUrl);
            viewModel.Manage = false;

            var result = controller.PostDeleteCompleted(routeModel, viewModel) as RedirectResult;

            result.Url.Should().Be(providerDashboardUrl);
        }
        public void And_No_Ukprn_And_Manage_False_Then_Redirects_To_Employer_Dashboard(
            ReservationsRouteModel routeModel,
            DeleteCompletedViewModel viewModel,
            string expectedUrl,
            [Frozen] Mock <IExternalUrlHelper> mockUrlHelper,
            ManageReservationsController controller)
        {
            routeModel.UkPrn = null;
            viewModel.Manage = false;
            mockUrlHelper
            .Setup(helper => helper.GenerateDashboardUrl(routeModel.EmployerAccountId))
            .Returns(expectedUrl);

            var result = controller.PostDeleteCompleted(routeModel, viewModel) as RedirectResult;

            result.Url.Should().Be(expectedUrl);
        }
        public IActionResult PostDeleteCompleted(ReservationsRouteModel routeModel, DeleteCompletedViewModel viewModel)
        {
            var isProvider = routeModel.UkPrn.HasValue;
            var deleteCompletedViewName = isProvider ? ViewNames.ProviderDeleteCompleted : ViewNames.EmployerDeleteCompleted;
            var manageRouteName         = isProvider ? RouteNames.ProviderManage : RouteNames.EmployerManage;
            var dashboardUrl            = _urlHelper.GenerateDashboardUrl(routeModel.EmployerAccountId);

            if (!ModelState.IsValid)
            {
                return(View(deleteCompletedViewName, viewModel));
            }

            if (viewModel.Manage.HasValue && viewModel.Manage.Value)
            {
                return(RedirectToRoute(manageRouteName));
            }

            return(Redirect(dashboardUrl));
        }