Campaign Module (A2P) - TypeScript Functions

Angular Admin Panel Documentation

Campaign Module (A2P) - TypeScript Functions

📢 CampaignComponent Functions

Main campaign management interface and dashboard for Application-to-Person (A2P) SMS marketing campaigns.

Component Properties

export class CampaignComponent implements OnInit, OnDestroy {
  // Data Properties
  campaigns: Campaign[] = [];
  filteredCampaigns: Campaign[] = [];
  selectedCampaign: Campaign | null = null;
  loading: boolean = false;
  error: string | null = null;
  
  // Filter Properties
  statusFilter: CampaignStatus = CampaignStatus.ALL;
  typeFilter: CampaignType = CampaignType.ALL;
  dateRangeFilter: DateRange | null = null;
  searchTerm: string = '';
  
  // Pagination Properties
  currentPage: number = 1;
  itemsPerPage: number = 10;
  totalItems: number = 0;
  
  // UI State Properties
  showCampaignDetails: boolean = false;
  showCreateModal: boolean = false;
  showScheduleModal: boolean = false;
  
  // Analytics Properties
  campaignStats: CampaignStatistics | null = null;
  performanceMetrics: PerformanceMetrics[] = [];
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

/**
 * Component cleanup
 */
ngOnDestroy(): void

📥 Data Loading Methods

/**
 * Load all campaigns
 */
loadCampaigns(): void

/**
 * Load campaigns with pagination
 * @param page - Page number
 * @param pageSize - Items per page
 */
loadCampaignsWithPagination(page: number, pageSize: number): void

/**
 * Load campaign by ID
 * @param campaignId - Campaign ID
 */
loadCampaignById(campaignId: string): void

/**
 * Refresh campaign list
 */
refreshCampaigns(): void

/**
 * Load campaign statistics
 */
loadCampaignStatistics(): void

/**
 * Load performance metrics
 * @param period - Time period for metrics
 */
loadPerformanceMetrics(period: TimePeriod): void

📢 Campaign Management Methods

/**
 * Create new campaign
 * @param campaignData - Campaign creation data
 */
createCampaign(campaignData: CreateCampaignRequest): void

/**
 * Update existing campaign
 * @param campaignId - Campaign ID
 * @param updateData - Updated campaign data
 */
updateCampaign(campaignId: string, updateData: UpdateCampaignRequest): void

/**
 * Delete campaign
 * @param campaignId - Campaign ID
 */
deleteCampaign(campaignId: string): void

/**
 * Duplicate campaign
 * @param campaignId - Campaign ID to duplicate
 */
duplicateCampaign(campaignId: string): void

/**
 * Archive campaign
 * @param campaignId - Campaign ID
 */
archiveCampaign(campaignId: string): void

/**
 * Restore archived campaign
 * @param campaignId - Campaign ID
 */
restoreCampaign(campaignId: string): void

▶️ Campaign Execution Methods

/**
 * Start campaign immediately
 * @param campaignId - Campaign ID
 */
startCampaign(campaignId: string): void

/**
 * Schedule campaign for later
 * @param campaignId - Campaign ID
 * @param scheduleTime - Scheduled execution time
 */
scheduleCampaign(campaignId: string, scheduleTime: Date): void

/**
 * Pause running campaign
 * @param campaignId - Campaign ID
 */
pauseCampaign(campaignId: string): void

/**
 * Resume paused campaign
 * @param campaignId - Campaign ID
 */
resumeCampaign(campaignId: string): void

/**
 * Stop campaign execution
 * @param campaignId - Campaign ID
 */
stopCampaign(campaignId: string): void

/**
 * Test campaign with sample data
 * @param campaignId - Campaign ID
 * @param testRecipients - Test recipient list
 */
testCampaign(campaignId: string, testRecipients: string[]): void

🔍 Search and Filter Methods

/**
 * Search campaigns by term
 * @param searchTerm - Search term
 */
searchCampaigns(searchTerm: string): void

/**
 * Filter campaigns by status
 * @param status - Campaign status
 */
filterByStatus(status: CampaignStatus): void

/**
 * Filter campaigns by type
 * @param type - Campaign type
 */
filterByType(type: CampaignType): void

/**
 * Filter campaigns by date range
 * @param dateRange - Date range filter
 */
filterByDateRange(dateRange: DateRange): void

/**
 * Apply all filters
 */
applyFilters(): void

/**
 * Clear all filters
 */
clearFilters(): void

✨ CreateCampaignComponent Functions

Multi-step campaign creation wizard with message design, audience targeting, and scheduling.

Component Properties

export class CreateCampaignComponent implements OnInit {
  // Form Properties
  campaignForm: FormGroup;
  messageForm: FormGroup;
  audienceForm: FormGroup;
  scheduleForm: FormGroup;
  
  // Data Properties
  availableTemplates: MessageTemplate[] = [];
  audienceSegments: AudienceSegment[] = [];
  contactLists: ContactList[] = [];
  
  // UI State Properties
  currentStep: number = 1;
  totalSteps: number = 5;
  loading: boolean = false;
  isSubmitting: boolean = false;
  
  // Preview Properties
  messagePreview: string = '';
  audienceCount: number = 0;
  estimatedCost: number = 0;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

📝 Form Management Methods

/**
 * Initialize all forms
 */
initializeForms(): void

/**
 * Validate current step
 */
validateCurrentStep(): boolean

/**
 * Move to next step
 */
nextStep(): void

/**
 * Move to previous step
 */
previousStep(): void

/**
 * Submit campaign creation
 */
submitCampaign(): void

/**
 * Save as draft
 */
saveAsDraft(): void

/**
 * Load draft campaign
 * @param draftId - Draft campaign ID
 */
loadDraft(draftId: string): void

📱 Message Design Methods

/**
 * Load message templates
 */
loadMessageTemplates(): void

/**
 * Apply message template
 * @param template - Message template
 */
applyTemplate(template: MessageTemplate): void

/**
 * Preview message with sample data
 * @param messageContent - Message content
 */
previewMessage(messageContent: string): void

/**
 * Validate message content
 * @param content - Message content to validate
 */
validateMessageContent(content: string): ValidationResult

/**
 * Calculate message cost
 * @param content - Message content
 * @param recipientCount - Number of recipients
 */
calculateMessageCost(content: string, recipientCount: number): number

/**
 * Add personalization tag
 * @param tag - Personalization tag
 */
addPersonalizationTag(tag: string): void

👥 Audience Targeting Methods

/**
 * Load audience segments
 */
loadAudienceSegments(): void

/**
 * Load contact lists
 */
loadContactLists(): void

/**
 * Add audience segment
 * @param segmentId - Segment ID
 */
addAudienceSegment(segmentId: string): void

/**
 * Remove audience segment
 * @param segmentId - Segment ID
 */
removeAudienceSegment(segmentId: string): void

/**
 * Calculate audience size
 */
calculateAudienceSize(): void

/**
 * Validate phone numbers
 * @param phoneNumbers - List of phone numbers
 */
validatePhoneNumbers(phoneNumbers: string[]): ValidationResult[]

/**
 * Upload contact list
 * @param file - CSV file with contacts
 */
uploadContactList(file: File): void

⏰ Scheduling Methods

/**
 * Schedule campaign for immediate sending
 */
scheduleImmediate(): void

/**
 * Schedule campaign for specific time
 * @param scheduleTime - Scheduled time
 */
scheduleForTime(scheduleTime: Date): void

/**
 * Set up recurring campaign
 * @param recurringData - Recurring configuration
 */
setupRecurringCampaign(recurringData: RecurringConfig): void

/**
 * Validate schedule time
 * @param scheduleTime - Time to validate
 */
validateScheduleTime(scheduleTime: Date): boolean

📊 CampaignAnalyticsComponent Functions

Comprehensive campaign performance analytics with detailed metrics and reporting.

Component Properties

export class CampaignAnalyticsComponent implements OnInit {
  // Data Properties
  campaignMetrics: CampaignMetrics | null = null;
  deliveryStats: DeliveryStatistics | null = null;
  engagementData: EngagementData | null = null;
  conversionMetrics: ConversionMetrics | null = null;
  
  // Filter Properties
  selectedCampaign: string = '';
  dateRange: DateRange | null = null;
  metricType: MetricType = MetricType.DELIVERY;
  
  // Chart Properties
  chartData: ChartData[] = [];
  chartOptions: ChartOptions = {};
  
  // Export Properties
  isExporting: boolean = false;
  exportFormat: ExportFormat = ExportFormat.PDF;
}

🔄 Lifecycle Methods

/**
 * Component initialization
 */
ngOnInit(): void

📊 Analytics Methods

/**
 * Load campaign metrics
 * @param campaignId - Campaign ID
 */
loadCampaignMetrics(campaignId: string): void

/**
 * Load delivery statistics
 * @param campaignId - Campaign ID
 */
loadDeliveryStatistics(campaignId: string): void

/**
 * Load engagement data
 * @param campaignId - Campaign ID
 */
loadEngagementData(campaignId: string): void

/**
 * Load conversion metrics
 * @param campaignId - Campaign ID
 */
loadConversionMetrics(campaignId: string): void

/**
 * Compare campaign performance
 * @param campaignIds - Array of campaign IDs
 */
compareCampaigns(campaignIds: string[]): void

/**
 * Generate performance report
 * @param reportConfig - Report configuration
 */
generatePerformanceReport(reportConfig: ReportConfig): void

📈 Chart and Visualization Methods

/**
 * Update chart data
 * @param metricType - Type of metric to display
 */
updateChartData(metricType: MetricType): void

/**
 * Export chart as image
 * @param format - Image format
 */
exportChart(format: string): void

/**
 * Toggle chart view
 * @param viewType - Chart view type
 */
toggleChartView(viewType: ChartViewType): void

/**
 * Apply date range filter
 * @param dateRange - Date range to apply
 */
applyDateRangeFilter(dateRange: DateRange): void

⚙️ CampaignService Functions

Core campaign service providing CRUD operations, execution management, and analytics integration.

Service Properties

export class CampaignService {
  // Private properties
  private readonly apiUrl = 'api/campaigns';
  private campaignsSubject = new BehaviorSubject<Campaign[]>([]);
  private activeExecutionsSubject = new BehaviorSubject<CampaignExecution[]>([]);
  
  // Public observables
  public campaigns$ = this.campaignsSubject.asObservable();
  public activeExecutions$ = this.activeExecutionsSubject.asObservable();
}

📊 Campaign CRUD Operations

/**
 * Get all campaigns
 * @param filters - Campaign filters
 */
getCampaigns(filters?: CampaignFilters): Observable<Campaign[]>

/**
 * Get campaign by ID
 * @param campaignId - Campaign ID
 */
getCampaignById(campaignId: string): Observable<Campaign>

/**
 * Create new campaign
 * @param campaignData - Campaign creation data
 */
createCampaign(campaignData: CreateCampaignRequest): Observable<Campaign>

/**
 * Update campaign
 * @param campaignId - Campaign ID
 * @param updateData - Campaign update data
 */
updateCampaign(campaignId: string, updateData: UpdateCampaignRequest): Observable<Campaign>

/**
 * Delete campaign
 * @param campaignId - Campaign ID
 */
deleteCampaign(campaignId: string): Observable<void>

/**
 * Duplicate campaign
 * @param campaignId - Campaign ID
 * @param duplicateData - Duplication options
 */
duplicateCampaign(campaignId: string, duplicateData: DuplicateCampaignRequest): Observable<Campaign>

▶️ Campaign Execution

/**
 * Start campaign execution
 * @param campaignId - Campaign ID
 */
startCampaign(campaignId: string): Observable<CampaignExecution>

/**
 * Schedule campaign
 * @param campaignId - Campaign ID
 * @param scheduleData - Schedule configuration
 */
scheduleCampaign(campaignId: string, scheduleData: ScheduleRequest): Observable<void>

/**
 * Pause campaign execution
 * @param campaignId - Campaign ID
 */
pauseCampaign(campaignId: string): Observable<void>

/**
 * Resume paused campaign
 * @param campaignId - Campaign ID
 */
resumeCampaign(campaignId: string): Observable<void>

/**
 * Stop campaign execution
 * @param campaignId - Campaign ID
 */
stopCampaign(campaignId: string): Observable<void>

/**
 * Get campaign execution status
 * @param campaignId - Campaign ID
 */
getCampaignStatus(campaignId: string): Observable<CampaignStatus>

📊 Analytics and Reporting

/**
 * Get campaign metrics
 * @param campaignId - Campaign ID
 * @param period - Time period
 */
getCampaignMetrics(campaignId: string, period: TimePeriod): Observable<CampaignMetrics>

/**
 * Get delivery statistics
 * @param campaignId - Campaign ID
 */
getDeliveryStatistics(campaignId: string): Observable<DeliveryStatistics>

/**
 * Get engagement analytics
 * @param campaignId - Campaign ID
 */
getEngagementAnalytics(campaignId: string): Observable<EngagementData>

/**
 * Get conversion tracking
 * @param campaignId - Campaign ID
 */
getConversionTracking(campaignId: string): Observable<ConversionMetrics>

/**
 * Export campaign report
 * @param campaignId - Campaign ID
 * @param format - Export format
 */
exportCampaignReport(campaignId: string, format: ExportFormat): Observable<Blob>

📝 Template Management

/**
 * Get message templates
 */
getMessageTemplates(): Observable<MessageTemplate[]>

/**
 * Create message template
 * @param templateData - Template data
 */
createMessageTemplate(templateData: CreateTemplateRequest): Observable<MessageTemplate>

/**
 * Update message template
 * @param templateId - Template ID
 * @param updateData - Update data
 */
updateMessageTemplate(templateId: string, updateData: UpdateTemplateRequest): Observable<MessageTemplate>

/**
 * Delete message template
 * @param templateId - Template ID
 */
deleteMessageTemplate(templateId: string): Observable<void>

👥 Audience Management

/**
 * Get audience segments
 */
getAudienceSegments(): Observable<AudienceSegment[]>

/**
 * Create audience segment
 * @param segmentData - Segment data
 */
createAudienceSegment(segmentData: CreateSegmentRequest): Observable<AudienceSegment>

/**
 * Get contact lists
 */
getContactLists(): Observable<ContactList[]>

/**
 * Upload contact list
 * @param listData - Contact list data
 */
uploadContactList(listData: UploadContactListRequest): Observable<ContactList>

/**
 * Validate phone numbers
 * @param phoneNumbers - Phone numbers to validate
 */
validatePhoneNumbers(phoneNumbers: string[]): Observable<ValidationResult[]>

📦 Campaign Class

Campaign model class with validation, execution tracking, and utility methods.

Class Properties

export class Campaign {
  // Basic Properties
  public id: string;
  public name: string;
  public description: string;
  public type: CampaignType;
  public status: CampaignStatus;
  
  // Message Properties
  public messageContent: string;
  public messageTemplate?: MessageTemplate;
  public personalizationTags: string[];
  
  // Audience Properties
  public audienceSegments: AudienceSegment[];
  public contactLists: ContactList[];
  public recipientCount: number;
  
  // Scheduling Properties
  public scheduleType: ScheduleType;
  public scheduledAt?: Date;
  public recurringConfig?: RecurringConfig;
  
  // Execution Properties
  public executionHistory: CampaignExecution[];
  public currentExecution?: CampaignExecution;
  
  // Metadata
  public createdAt: Date;
  public updatedAt: Date;
  public createdBy: string;
}

🏗️ Constructor and Factory Methods

/**
 * Constructor for Campaign
 * @param data - Campaign data
 */
constructor(data: CampaignData)

/**
 * Create campaign from API response
 * @param response - API response data
 */
static fromApiResponse(response: any): Campaign

/**
 * Create campaign with default values
 * @param name - Campaign name
 * @param type - Campaign type
 */
static createDefault(name: string, type: CampaignType): Campaign

✅ Validation Methods

/**
 * Validate campaign configuration
 */
validate(): ValidationResult

/**
 * Check if campaign is ready to execute
 */
isReadyToExecute(): boolean

/**
 * Validate message content
 */
validateMessage(): ValidationResult

/**
 * Validate audience configuration
 */
validateAudience(): ValidationResult

/**
 * Validate schedule configuration
 */
validateSchedule(): ValidationResult

📊 Status and Metrics Methods

/**
 * Check if campaign is currently running
 */
isRunning(): boolean

/**
 * Check if campaign is scheduled
 */
isScheduled(): boolean

/**
 * Get campaign completion percentage
 */
getCompletionPercentage(): number

/**
 * Get estimated cost
 */
getEstimatedCost(): number

/**
 * Get delivery rate
 */
getDeliveryRate(): number

/**
 * Get engagement rate
 */
getEngagementRate(): number

📋 Interface Definitions

Core Interfaces

interface Campaign {
  id: string;
  name: string;
  description: string;
  type: CampaignType;
  status: CampaignStatus;
  messageContent: string;
  audienceSegments: AudienceSegment[];
  scheduledAt?: Date;
  createdAt: Date;
  updatedAt: Date;
  metrics: CampaignMetrics;
}

interface CampaignMetrics {
  totalSent: number;
  delivered: number;
  failed: number;
  deliveryRate: number;
  opened: number;
  clicked: number;
  conversions: number;
  engagementRate: number;
  cost: number;
  roi: number;
}

interface MessageTemplate {
  id: string;
  name: string;
  content: string;
  variables: string[];
  category: string;
  isActive: boolean;
  createdAt: Date;
}

interface AudienceSegment {
  id: string;
  name: string;
  description: string;
  criteria: SegmentCriteria[];
  size: number;
  lastUpdated: Date;
}

interface CampaignExecution {
  id: string;
  campaignId: string;
  status: ExecutionStatus;
  startedAt: Date;
  completedAt?: Date;
  progress: number;
  metrics: ExecutionMetrics;
}

Enums

enum CampaignType {
  PROMOTIONAL = 'promotional',
  TRANSACTIONAL = 'transactional',
  NOTIFICATION = 'notification',
  REMINDER = 'reminder'
}

enum CampaignStatus {
  DRAFT = 'draft',
  SCHEDULED = 'scheduled',
  RUNNING = 'running',
  PAUSED = 'paused',
  COMPLETED = 'completed',
  CANCELLED = 'cancelled',
  FAILED = 'failed'
}

enum ScheduleType {
  IMMEDIATE = 'immediate',
  SCHEDULED = 'scheduled',
  RECURRING = 'recurring'
}

enum ExecutionStatus {
  PENDING = 'pending',
  RUNNING = 'running',
  COMPLETED = 'completed',
  FAILED = 'failed',
  CANCELLED = 'cancelled'
}

Related Documentation

📦 Module Overview