namespace EntitlementDAL.DTOs; // MENTITLEMENTCHANGEREQUEST — a proposed change, pending review. Nothing is applied to // MENTITLEMENTSUBSCRIPTION/MENTITLEMENTBETACLIENT until RequestStatus transitions to Approved. public class ChangeRequestDTO { public int ChangeRequestId { get; set; } public int ClientId { get; set; } public byte RequestType { get; set; } // ChangeRequestTypeEnum public int? SubscriptionId { get; set; } // ChangePlan/Renew only public int? ProposedPlanId { get; set; } // ChangePlan only public DateTime? ProposedValidTill { get; set; } // Renew only public string? BetaProgramName { get; set; } // BetaEnrol/BetaOptOut only public byte RequestStatus { get; set; } // ChangeRequestStatusEnum public int RequestedByClientUserId { get; set; } public DateTime RequestedOn { get; set; } public int? ReviewedByUserId { get; set; } public DateTime? ReviewedOn { get; set; } public string? ReviewComments { get; set; } // 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; } /// Lightweight view for GetMyRequests/GetList — no need for the full audit tail on a /// list row. public class ChangeRequestListDTO { public int ChangeRequestId { get; set; } public int ClientId { get; set; } public byte RequestType { get; set; } public int? SubscriptionId { get; set; } public int? ProposedPlanId { get; set; } public DateTime? ProposedValidTill { get; set; } public string? BetaProgramName { get; set; } public byte RequestStatus { get; set; } public int RequestedByClientUserId { get; set; } public DateTime RequestedOn { get; set; } public int? ReviewedByUserId { get; set; } public DateTime? ReviewedOn { get; set; } public string? ReviewComments { get; set; } }