@model PowderCoating.Web.ViewModels.Platform.OnboardingProgressIndexViewModel @using PowderCoating.Web.ViewModels.Platform @{ ViewData["Title"] = "Onboarding Progress"; Layout = "~/Views/Shared/_Layout.cshtml"; }

Onboarding Progress

Activation funnel across all tenant companies

@* Summary KPI strip *@
@Model.TotalCompanies
Total Companies
@Model.WizardCompleted
Wizard Completed
@Model.FullyActivated
Fully Activated
@Model.InProgress
In Progress
@foreach (var row in Model.Rows) { var oPct = row.TotalSteps == 0 ? 0 : row.StepsCompleted * 100 / row.TotalSteps;
@row.CompanyName
@switch (row.Status) { case OnboardingStatus.Complete: Complete break; case OnboardingStatus.InProgress: In Progress break; case OnboardingStatus.Dismissed: Dismissed break; default: Not Started break; }
Wizard @if (row.WizardCompleted) { Done } else { Pending }
Milestones
@row.StepsCompleted/@row.TotalSteps
@{ var oFirstActivity = row.FirstJobCreatedAt ?? row.FirstQuoteCreatedAt; } @if (oFirstActivity.HasValue) {
First Activity @oFirstActivity.Value.ToString("MMM d, yyyy")
}
} @if (!Model.Rows.Any()) {
No companies found.
}
@foreach (var row in Model.Rows) { } @if (!Model.Rows.Any()) { }
Company Wizard Path Milestones First Job / Quote First Invoice Workflow Done Widget Dismissed Status
@row.CompanyName @if (row.WizardCompleted) { } else { } @if (!string.IsNullOrEmpty(row.OnboardingPath)) { @row.OnboardingPath } else { } @{ var pct = row.TotalSteps == 0 ? 0 : row.StepsCompleted * 100 / row.TotalSteps; var barColor = pct == 100 ? "bg-success" : "bg-primary"; }
@row.StepsCompleted/@row.TotalSteps
@{ var firstActivity = row.FirstJobCreatedAt ?? row.FirstQuoteCreatedAt; } @(firstActivity.HasValue ? firstActivity.Value.ToString("MMM d, yyyy") : "—") @(row.FirstInvoiceCreatedAt.HasValue ? row.FirstInvoiceCreatedAt.Value.ToString("MMM d, yyyy") : "—") @(row.FirstWorkflowCompletedAt.HasValue ? row.FirstWorkflowCompletedAt.Value.ToString("MMM d, yyyy") : "—") @(row.GuidedActivationDismissedAt.HasValue ? row.GuidedActivationDismissedAt.Value.ToString("MMM d, yyyy") : "—") @switch (row.Status) { case OnboardingStatus.Complete: Complete break; case OnboardingStatus.InProgress: In Progress break; case OnboardingStatus.Dismissed: Dismissed break; default: Not Started break; }
No companies found.