namespace MarketingDAL.DTO.MarketingCampaign;
///
/// MarketMind AI execution layer — a Marketing Campaign (MMKTCAMPAIGN). Named
/// "MarketingCampaign"/"MMKTCAMPAIGN" (not bare "Campaign"/"MCAMPAIGN") deliberately: CMS already
/// owns a same-named "Campaign" entity (GB5Solution/CMS/CMSDAL/DTO/Campaign/CampaignDTO.cs) that is
/// an internal employee learning/content-assignment campaign (targets EmployeeId/LearningPathId),
/// not a customer/lead-facing marketing campaign — same word, different domain. This entity is the
/// external, customer-facing one referenced by (physical
/// column TLEAD.CAMPAIGNID) — see the plan
/// (~/.claude/plans/in-entitlement-also-we-async-charm.md, Phase 0 — MarketMind AI) and this
/// session's migration for how TLEAD.CAMPAIGNID was wired to this table.
///
public class MarketingCampaignDTO
{
#region MarketingCampaign
public int CampaignId { get; set; }
public string CampaignCode { get; set; } = string.Empty;
public string CampaignName { get; set; } = string.Empty;
/// 1=Digital, 2=Event, 3=Content, 4=Email, 5=Social — see CK_MMKTCAMPAIGN_CAMPAIGNTYPE.
public byte CampaignType { get; set; }
/// Free text/CSV of channels — too varied across tenants to enumerate.
public string? ChannelPlan { get; set; }
/// Optional FK to MSEGMENT — -1 sentinel = not applicable.
public int SegmentId { get; set; } = -1;
public string? SegmentCode { get; set; }
public string? SegmentName { get; set; }
public DateTime StartDate { get; set; }
public DateTime EndDate { get; set; }
public decimal BudgetAmount { get; set; }
public string? Remarks { get; set; }
#endregion
#region Base
public int CreatedById { get; set; }
public DateTime CreatedOn { get; set; }
public string? CreatedByName { get; set; }
public int ModifiedById { get; set; }
public DateTime ModifiedOn { get; set; }
public string? ModifiedByName { get; set; }
#endregion
#region Standard
public short SortOrder { get; set; }
public byte Status { get; set; }
public short Version { get; set; }
public int TenantId { get; set; }
#endregion
}