package com.social.media.domain.socialnetwork.valueobject;

import java.util.List;

/**
 * Value Object representing platform capabilities
 */
public record PlatformCapabilities(
    boolean supportsPosts,
    boolean supportsStories,
    boolean supportsVideos,
    boolean supportsReels,
    boolean supportsLive,
    boolean supportsDirectMessages,
    int characterLimitPost,
    int characterLimitBio,
    List<String> supportedMediaFormats
) {
    
    public PlatformCapabilities {
        if (characterLimitPost < 0) {
            throw new IllegalArgumentException("Character limit for post cannot be negative");
        }
        if (characterLimitBio < 0) {
            throw new IllegalArgumentException("Character limit for bio cannot be negative");
        }
        supportedMediaFormats = supportedMediaFormats != null ? List.copyOf(supportedMediaFormats) : List.of();
    }
    
    public boolean supportsMediaFormat(String format) {
        return supportedMediaFormats.contains(format.toLowerCase());
    }
    
    public boolean hasCharacterLimit() {
        return characterLimitPost > 0;
    }
    
    public boolean isWithinPostLimit(String content) {
        return !hasCharacterLimit() || content.length() <= characterLimitPost;
    }
    
    public boolean isWithinBioLimit(String bio) {
        return characterLimitBio <= 0 || bio.length() <= characterLimitBio;
    }
}
