namespace EntitlementDAL.DTOs; // MENTITLEMENTPLAN — partner-product-scoped commercial tier. public class PlanDTO { public int PlanId { get; set; } public string PlanCode { get; set; } = string.Empty; public string PlanName { get; set; } = string.Empty; public int? PartnerProductId { get; set; } // NULL = GoodBooks default product public string PieConfigProfileCode { get; set; } = string.Empty; public string? Remarks { get; set; } // Pricing (20260901_Entitlement_Plan_Pricing) — tracker §42 / Docs/Platform-Architecture- // Integration-Reference.md §9.1. NULL PlanPrice = not yet priced (custom/enterprise, // "contact sales"), a legitimate state, not an error. public decimal? PlanPrice { get; set; } public string PlanCurrency { get; set; } = "INR"; // audit tail public short Version { get; set; } public byte Status { get; set; } = 1; public int SortOrder { get; set; } public int CreatedById { get; set; } public DateTime CreatedOn { get; set; } public int ModifiedById { get; set; } public DateTime ModifiedOn { get; set; } public byte SourceType { get; set; } public int TenantId { get; set; } = -1; } // MENTITLEMENTPLANFEATURE (detail) public class PlanFeatureDTO { public int PlanFeatureId { get; set; } public int PlanId { get; set; } public int FeatureId { get; set; } public short SlNo { get; set; } = 1; public byte IsEnabled { get; set; } = 1; public string? FeatureValue { get; set; } // JSON e.g. {"quota":1000} } // Read projection for Plan.svc/GetPlanFeatures — MENTITLEMENTPLANFEATURE joined to // MENTITLEMENTFEATURE so the (anonymous) pricing page can render a real feature-group-grouped // matrix (feature code/name/group + enabled/value) instead of the client-side-only workaround. public class PlanFeatureDetailDTO { public int PlanFeatureId { get; set; } public int PlanId { get; set; } public int FeatureId { get; set; } public string FeatureCode { get; set; } = string.Empty; public string FeatureName { get; set; } = string.Empty; public int FeatureGroupId { get; set; } = -1; public byte IsEnabled { get; set; } = 1; public string? FeatureValue { get; set; } public short SlNo { get; set; } = 1; }