@model List @{ ViewData["Title"] = "Product Catalog"; ViewData["PageIcon"] = "bi-book"; ViewData["PageHelpTitle"] = "Product Catalog"; ViewData["PageHelpContent"] = "The Product Catalog is a library of standard items (wheels, brackets, panels, etc.) that your shop regularly quotes and invoices. Each item has a fixed price — when a catalog item is added to a quote or job, that price is used exactly as entered. No markup, no prep services, and no complexity charges are added on top. Organize items into categories to keep the catalog easy to browse."; var totalItemsCount = ViewBag.TotalItemsCount ?? 0; var activeItemsCount = ViewBag.ActiveItemsCount ?? 0; var averagePrice = ViewBag.AveragePrice ?? 0m; var categoryCount = ViewBag.CategoryCount ?? 0; var currentCategoryId = ViewBag.CurrentCategoryId; var searchTerm = ViewBag.SearchTerm ?? ""; var hasFilters = ViewBag.HasFilters ?? false; var filteredItemsCount = ViewBag.FilteredItemsCount ?? 0; } @section Styles { } @section Scripts { }
AI Price Check AI Export Product Catalog to PDF PDF

Total Items

@totalItemsCount

Active Items

@activeItemsCount

Average Price

@averagePrice.ToString("C")

Categories

@categoryCount

@if (hasFilters) {
Showing @filteredItemsCount item(s) @if (!string.IsNullOrEmpty(searchTerm)) { matching "@searchTerm" } @if (currentCategoryId != null) { var categoryName = (ViewBag.Categories as List)?.FirstOrDefault(c => c.Value == currentCategoryId.ToString())?.Text; in category "@categoryName" }
Clear Filters
}
@if (hasFilters) { }
@if (!Model.Any()) {
No catalog items found
@if (hasFilters) {

Try adjusting your filters

Clear Filters } else {

Get started by creating your first catalog item

Create Your First Item }
} else {
@foreach (var categoryWithItems in Model) { }
}