package com.social.media.domain.campaign.valueobject;

import com.social.media.domain.shared.BaseValueObject;
import lombok.Value;

import java.util.List;

/**
 * Action Configuration Value Object
 * Encapsulates campaign action parameters
 */
@Value
public class ActionConfiguration extends BaseValueObject {
    List<ActionType> actions;
    ActionSequence actionSequence;
    Integer actionsPerUser;
    List<String> commentTemplates;
    List<String> dmTemplates;
    List<String> customMessages;
    
    public enum ActionSequence {
        RANDOM("Execute actions in random order"),
        SEQUENTIAL("Execute actions in sequential order"),
        WEIGHTED("Execute actions based on weights");
        
        private final String description;
        
        ActionSequence(String description) {
            this.description = description;
        }
        
        public String getDescription() {
            return description;
        }
    }
    
    public static ActionConfiguration defaultConfig() {
        return new ActionConfiguration(
            List.of(),
            ActionSequence.RANDOM,
            1,
            List.of(),
            List.of(),
            List.of()
        );
    }
    
    public boolean hasActions() {
        return actions != null && !actions.isEmpty();
    }
    
    public boolean hasCommentTemplates() {
        return commentTemplates != null && !commentTemplates.isEmpty();
    }
    
    public boolean hasDmTemplates() {
        return dmTemplates != null && !dmTemplates.isEmpty();
    }
    
    public boolean requiresTextTemplates() {
        return actions != null && actions.stream().anyMatch(ActionType::requiresText);
    }
}
