package com.social.media.service;

import com.social.media.dto.CompanyDto;
import com.social.media.domain.shared.PageResponse;

public interface CompanyService {
    
    PageResponse<CompanyDto> getAllCompanies(int page, int size);
    
    CompanyDto getCompanyById(Long id);
    
    CompanyDto createCompany(CompanyDto companyDto);
    
    CompanyDto updateCompany(Long id, CompanyDto companyDto);
    
    void deleteCompany(Long id);
    
    PageResponse<CompanyDto> searchCompanies(String query, int page, int size);
    
    // Additional methods for the enhanced schema
    PageResponse<CompanyDto> getCompaniesByStatus(String status, int page, int size);
    
    PageResponse<CompanyDto> getCompaniesByPlan(String plan, int page, int size);
    
    PageResponse<CompanyDto> getActiveCompanies(int page, int size);
    
    CompanyDto getCompanyByCnpj(String cnpj);
    
    CompanyDto getCompanyByEmail(String email);
    
    CompanyDto getCompanyByCompanyCode(String companyCode);
    
    boolean existsByCnpj(String cnpj);
    
    boolean existsByEmail(String email);
    
    Long countActiveCompanies();
    
    Long countCompaniesByPlan(String plan);
}
