@model List @section Styles { } @{ ViewData["Title"] = "Companies"; ViewData["PageIcon"] = "bi-building"; var planConfigs = ((IEnumerable)ViewBag.PlanConfigs) .OrderBy(c => c.SortOrder).ToList(); var planBadgeColors = planConfigs.Select((c, i) => (c.Plan, i)) .ToDictionary(x => x.Plan, x => x.i switch { 0 => "bg-secondary", 1 => "bg-primary", 2 => "bg-info", _ => "bg-success" }); var planNames = planConfigs.ToDictionary(c => c.Plan, c => c.DisplayName); string PlanBadge(int plan) => planBadgeColors.TryGetValue(plan, out var c) ? c : "bg-secondary"; string PlanName(int plan) => planNames.TryGetValue(plan, out var n) ? n : plan.ToString(); var searchTerm = (string?)ViewBag.SearchTerm; var sortColumn = (string)(ViewBag.SortColumn ?? "CompanyName"); var sortDirection = (string)(ViewBag.SortDirection ?? "asc"); var pageNumber = (int)(ViewBag.PageNumber ?? 1); var pageSize = (int)(ViewBag.PageSize ?? 25); var totalPages = (int)(ViewBag.TotalPages ?? 1); var totalCount = (int)(ViewBag.TotalCount ?? 0); var impersonatingId = (int?)(ViewBag.ImpersonatingCompanyId); string SortLink(string col) { var dir = (sortColumn == col && sortDirection == "asc") ? "desc" : "asc"; return Url.Action("Index", new { searchTerm, sortColumn = col, sortDirection = dir, pageNumber = 1, pageSize })!; } string SortIcon(string col) { if (sortColumn != col) return "bi-chevron-expand text-muted"; return sortDirection == "asc" ? "bi-chevron-up" : "bi-chevron-down"; } }
@if (!string.IsNullOrWhiteSpace(searchTerm)) { Clear }
@if (Model != null && Model.Any()) {
@foreach (var company in Model) { var isImpersonating = impersonatingId.HasValue && impersonatingId.Value == company.Id; var detailsUrl = Url.Action("Details", new { id = company.Id }); }
Company Name Code Contact Email Phone Plan Users Setup Wizard Status Created Actions
@company.CompanyName @if (isImpersonating) { Active } @if (!string.IsNullOrEmpty(company.CompanyCode)) { @company.CompanyCode } @company.PrimaryContactEmail @company.Phone @PlanName(company.SubscriptionPlan) @company.UserCount @if (company.WizardCompleted) { var tooltip = company.WizardCompletedByName != null ? $"Completed by {company.WizardCompletedByName}" + (company.WizardCompletedAt.HasValue ? $" on {company.WizardCompletedAt.Value.Tz(ViewBag.CompanyTimeZone as string):MMM d, yyyy}" : "") : "Completed"; Done } else { Pending } @if (company.IsActive) { Active } else { Inactive } @company.CreatedAt.ToString("MMM d, yyyy")
@Html.AntiForgeryToken()
@if (isImpersonating) {
@Html.AntiForgeryToken()
} else {
@Html.AntiForgeryToken()
}
@if (totalPages > 1) { } } else {

@if (!string.IsNullOrWhiteSpace(searchTerm)) { No companies match "@searchTerm". } else { No companies found. }

@if (string.IsNullOrWhiteSpace(searchTerm)) { Create Your First Company }
}
@section Scripts { }