edd7389d7d
- IJobItemAssemblyService / IQuotePricingAssemblyService: centralize job item and quote pricing construction that was duplicated across create, rework copy, and quote-to-job conversion paths - BlobFileHelper: single ValidateUpload/GetContentType/SanitizeFileName used by 6 blob services (JobPhoto, QuotePhoto, ProfilePhoto, CompanyLogo, Equipment, Catalog) and BillsController + ExpensesController, removing 8 private copies - PagedResult<T>.From(): static factory eliminates 6-line boilerplate in 11 controllers (Appointments, Customers, Equipment, Inventory, Invoices, Jobs, Maintenance, CompanyUsers, PlatformUsers, Quotes, Vendors) - AccountingDropdownHelper: single LoadAsync() call replaces duplicate vendor/account/job queries in BillsController and ExpensesController - JobTemplateItem: add IsSalesItem + Sku fields with migration; propagate through JobTemplatesController snapshot copy and GetTemplatesJson projection, and JobsController template-application path - Test assertions updated for standardized BlobFileHelper error messages Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
29 lines
1.2 KiB
C#
29 lines
1.2 KiB
C#
namespace PowderCoating.Core.Entities;
|
|
|
|
public class JobTemplateItem : BaseEntity
|
|
{
|
|
public int JobTemplateId { get; set; }
|
|
public string Description { get; set; } = string.Empty;
|
|
public decimal Quantity { get; set; } = 1;
|
|
public decimal SurfaceAreaSqFt { get; set; }
|
|
public int? CatalogItemId { get; set; }
|
|
public bool IsGenericItem { get; set; }
|
|
public bool IsLaborItem { get; set; }
|
|
public bool IsSalesItem { get; set; }
|
|
public string? Sku { get; set; }
|
|
public decimal? ManualUnitPrice { get; set; }
|
|
public bool RequiresSandblasting { get; set; }
|
|
public bool RequiresMasking { get; set; }
|
|
public bool IncludePrepCost { get; set; }
|
|
public int EstimatedMinutes { get; set; }
|
|
public string? Complexity { get; set; }
|
|
public string? Notes { get; set; }
|
|
public int DisplayOrder { get; set; }
|
|
|
|
// Navigation properties
|
|
public virtual JobTemplate JobTemplate { get; set; } = null!;
|
|
public virtual CatalogItem? CatalogItem { get; set; }
|
|
public virtual ICollection<JobTemplateItemCoat> Coats { get; set; } = new List<JobTemplateItemCoat>();
|
|
public virtual ICollection<JobTemplateItemPrepService> PrepServices { get; set; } = new List<JobTemplateItemPrepService>();
|
|
}
|