<?php
// app/Helpers/ConfigHelper.php


use App\Services\FitConfigService;
use Illuminate\Support\Facades\App;
use Illuminate\Support\Facades\Auth;

if (!function_exists('fit_config')) {
    /**
     * Obtener una configuración para la empresa del usuario actual
     * 
     * @param string $key
     * @param mixed $default
     * @return mixed
     */
    function fit_config(string $key, $default = null)
    {
        try {
            $service = App::make(FitConfigService::class);
            $companyId = get_current_company_id();
            
            if (!$companyId) {
                return $default;
            }
            
            return $service->get($companyId, $key, $default);
        } catch (\Exception $e) {
            return $default;
        }
    }
}

if (!function_exists('fit_config_for_company')) {
    /**
     * Obtener una configuración para una empresa específica
     * 
     * @param int $companyId
     * @param string $key
     * @param mixed $default
     * @return mixed
     */
    function fit_config_for_company(int $companyId, string $key, $default = null)
    {
        try {
            $service = App::make(FitConfigService::class);
            return $service->get($companyId, $key, $default);
        } catch (\Exception $e) {
            return $default;
        }
    }
}

if (!function_exists('fit_config_group')) {
    /**
     * Obtener todas las configuraciones de un grupo para la empresa actual
     * 
     * @param string $group
     * @return array
     */
    function fit_config_group(string $group)
    {
        try {
            $service = App::make(FitConfigService::class);
            $companyId = get_current_company_id();
            
            if (!$companyId) {
                return [];
            }
            
            return $service->getByGroup($companyId, $group)->toArray();
        } catch (\Exception $e) {
            return [];
        }
    }
}

if (!function_exists('get_current_company_id')) {
    /**
     * Obtener el ID de la empresa del usuario autenticado
     * 
     * @return int|null
     */
    function get_current_company_id()
    {
        if (!Auth::check()) {
            return null;
        }
        
        $companyUser = Auth::user()->company_user;
        
        return $companyUser?->company_id;
    }
}