package com.social.media.application.campaign.command;

import lombok.Builder;
import lombok.Value;

import java.time.LocalDate;
import java.time.LocalTime;
import java.util.List;
import java.util.Map;

/**
 * Create Automation Campaign Command
 */
@Value
@Builder
public class CreateAutomationCampaignCommand {
    Long companyId;
    Long socialAccountId;
    String name;
    String description;
    String campaignType; // ENGAGEMENT, GROWTH, CONTENT_INTERACTION
    
    // Target Configuration
    List<String> targetUsers;
    List<String> targetHashtags;
    List<String> targetLocations;
    List<String> excludeUsers;
    FilterCriteriaCommand filterCriteria;
    
    // Action Configuration  
    List<String> actions;
    String actionSequence; // RANDOM, SEQUENTIAL, WEIGHTED
    Integer actionsPerUser;
    List<String> commentTemplates;
    List<String> dmTemplates;
    List<String> customMessages;
    
    // Schedule Configuration
    LocalDate startDate;
    LocalDate endDate;
    Integer dailyLimit;
    Integer hourlyLimit;
    Integer actionsPerHour;
    Integer delayBetweenActions;
    WorkingHoursCommand workingHours;
    RandomizationCommand randomization;
    
    @Value
    @Builder
    public static class FilterCriteriaCommand {
        Integer minFollowers;
        Integer maxFollowers;
        Integer accountAge;
        Double engagementRate;
    }
    
    @Value
    @Builder
    public static class WorkingHoursCommand {
        Boolean enabled;
        LocalTime start;
        LocalTime end;
        List<Integer> workDays;
    }
    
    @Value
    @Builder
    public static class RandomizationCommand {
        Boolean enabled;
        Integer minDelay;
        Integer maxDelay;
    }
}
