package com.social.media.domain.company.valueobject;

/**
 * Value Object representing company plans
 */
public enum CompanyPlan {
    BASICO("Básico"),
    PREMIUM("Premium"),
    ENTERPRISE("Enterprise");
    
    private final String description;
    
    CompanyPlan(String description) {
        this.description = description;
    }
    
    public String getDescription() {
        return description;
    }
    
    public boolean hasAdvancedFeatures() {
        return this == PREMIUM || this == ENTERPRISE;
    }
    
    public boolean hasUnlimitedAccounts() {
        return this == ENTERPRISE;
    }
    
    public int getAccountLimit() {
        return switch (this) {
            case BASICO -> 3;
            case PREMIUM -> 10;
            case ENTERPRISE -> Integer.MAX_VALUE;
        };
    }
    
    public int getMonthlyPostLimit() {
        return switch (this) {
            case BASICO -> 100;
            case PREMIUM -> 500;
            case ENTERPRISE -> Integer.MAX_VALUE;
        };
    }
}
