in src/Saas.SignupAdministration/Saas.SignupAdministration.Web/Services/StateMachine/OnboardingWorkflowState.cs [46:78]
private States ChangeState(States current, Triggers trigger) =>
CurrentState = ((current, trigger) switch
{
// Step 1 - Submit the organization name
(States.OrganizationNameEntry, Triggers.OnOrganizationNamePosted) => States.OrganizationCategoryEntry,
(States.OrganizationCategoryEntry, Triggers.OnOrganizationNamePosted) => States.OrganizationCategoryEntry,
(States.TenantRouteNameEntry, Triggers.OnOrganizationNamePosted) => States.OrganizationCategoryEntry,
(States.ServicePlanEntry, Triggers.OnOrganizationNamePosted) => States.OrganizationCategoryEntry,
(States.OrganizationNameEntry, Triggers.OnError) => States.Error,
// Step 2 - Organization Category
(States.OrganizationCategoryEntry, Triggers.OnOrganizationCategoryPosted) => States.TenantRouteNameEntry,
(States.OrganizationNameEntry, Triggers.OnOrganizationCategoryPosted) => States.TenantRouteNameEntry,
(States.TenantRouteNameEntry, Triggers.OnOrganizationCategoryPosted) => States.TenantRouteNameEntry,
(States.ServicePlanEntry, Triggers.OnOrganizationCategoryPosted) => States.TenantRouteNameEntry,
(States.OrganizationCategoryEntry, Triggers.OnError) => States.Error,
// Step 3 - Tenant Route Name
(States.TenantRouteNameEntry, Triggers.OnTenantRouteNamePosted) => States.ServicePlanEntry,
(States.OrganizationNameEntry, Triggers.OnTenantRouteNamePosted) => States.ServicePlanEntry,
(States.OrganizationCategoryEntry, Triggers.OnTenantRouteNamePosted) => States.ServicePlanEntry,
(States.ServicePlanEntry, Triggers.OnTenantRouteNamePosted) => States.ServicePlanEntry,
(States.TenantRouteNameEntry, Triggers.OnError) => States.Error,
// Step 4 - Service Plan
(States.ServicePlanEntry, Triggers.OnServicePlanPosted) => States.TenantDeploymentRequested,
(States.OrganizationNameEntry, Triggers.OnServicePlanPosted) => States.TenantDeploymentRequested,
(States.OrganizationCategoryEntry, Triggers.OnServicePlanPosted) => States.TenantDeploymentRequested,
(States.TenantRouteNameEntry, Triggers.OnServicePlanPosted) => States.TenantDeploymentRequested,
(States.ServicePlanEntry, Triggers.OnError) => States.Error,
// Step 5 - Tenant Created Confirmation
(States.TenantDeploymentRequested, Triggers.OnTenantDeploymentSuccessful) => States.TenantDeploymentConfirmation,
(States.TenantDeploymentRequested, Triggers.OnError) => States.Error,
_ => throw new NotSupportedException($"{current} has no transition on {trigger}")
});