package com.social.media.domain.campaign.valueobject;

import com.social.media.domain.shared.BaseValueObject;
import lombok.Value;

import java.util.List;
import java.util.Map;

/**
 * Target Configuration Value Object
 * Encapsulates campaign targeting parameters
 */
@Value
public class TargetConfiguration extends BaseValueObject {
    List<String> targetUsers;
    List<String> targetHashtags;
    List<String> targetLocations;
    List<String> excludeUsers;
    FilterCriteria filterCriteria;
    
    @Value
    public static class FilterCriteria {
        Integer minFollowers;
        Integer maxFollowers;
        Integer accountAge; // in days
        Double engagementRate; // as percentage
    }
    
    public static TargetConfiguration defaultConfig() {
        return new TargetConfiguration(
            List.of(),
            List.of(),
            List.of(),
            List.of(),
            new FilterCriteria(0, null, null, null)
        );
    }
    
    public boolean hasTargetUsers() {
        return targetUsers != null && !targetUsers.isEmpty();
    }
    
    public boolean hasTargetHashtags() {
        return targetHashtags != null && !targetHashtags.isEmpty();
    }
    
    public boolean hasTargetLocations() {
        return targetLocations != null && !targetLocations.isEmpty();
    }
    
    public boolean hasExcludeUsers() {
        return excludeUsers != null && !excludeUsers.isEmpty();
    }
}
