<?php
require_once __DIR__ . '/../Core/Database.php';

class RelatoriosController extends Controller
{
    public function ordens_aprovadas()
    {
        $ordemModel = $this->model('Ordem');
        $dados = $ordemModel->listarAprovadasPorPeriodo();
        $this->view('relatorios/ordens_aprovadas', ['dados' => ['ordens' => $dados]]);
    }

    public function veiculos_uso()
    {
        $ordemModel = new Ordem();
        $dados = $ordemModel->listarVeiculosEmUso();
        $this->view('relatorios/veiculos_uso', ['dados' => $dados]);
    }

    public function despesas_gerais()
    {
        $ordemModel = new Ordem();
        $dados = $ordemModel->listarDespesasGerais();
        $this->view('relatorios/despesas_gerais', ['dados' => $dados]);
    }

    public function pdf_completo($id = null)
    {
        if ($id) {
            $ordemModel = new Ordem();
            $dados = $ordemModel->lerOrdemCompleta($id);

            ob_start();
            include __DIR__ . '/../Views/ordens/pdf_completo.php';
            $html = ob_get_clean();

            require_once __DIR__ . '/../../vendor/autoload.php';
            $mpdf = new \Mpdf\Mpdf();
            $mpdf->WriteHTML($html);
            $mpdf->Output('ordem_completa.pdf', 'I');
        }
    }

    public function pdf_financeiro($id = null)
    {
        if ($id) {
            $ordemModel = new Ordem();
            $dados = $ordemModel->lerOrdemFinanceira($id);

            ob_start();
            include __DIR__ . '/../Views/ordens/relatorio_financeiro_pdf.php';
            $html = ob_get_clean();

            require_once __DIR__ . '/../../vendor/autoload.php';
            $mpdf = new \Mpdf\Mpdf();
            $mpdf->WriteHTML($html);
            $mpdf->Output('relatorio_financeiro.pdf', 'I');
        }
    }

    public function exportar_excel($tipo)
    {
        header("Content-type: application/vnd.ms-excel");
        header("Content-Disposition: attachment; filename={$tipo}.xls");

        $ordemModel = new Ordem();

        switch ($tipo) {
            case 'funcionarios_viagem':
                $dados = $ordemModel->listarFuncionariosEmViagem();
                include 'Views/relatorios/excel_funcionarios_viagem.php';
                break;
            case 'veiculos_uso':
                $dados = $ordemModel->listarVeiculosEmUso();
                include 'Views/relatorios/excel_veiculos_uso.php';
                break;
            case 'diarias_funcionarios':
                $dados = $ordemModel->listarDiariasPorFuncionario();
                include 'Views/relatorios/excel_diarias_funcionarios.php';
                break;
            case 'despesas_gerais':
                $dados = $ordemModel->listarDespesasGerais();
                include 'Views/relatorios/excel_despesas_gerais.php';
                break;
        }
    }

    public function index()
    {
        $ordemModel = new Ordem();
        $filtros = [
            'data_inicio' => $_GET['data_inicio'] ?? '',
            'data_fim' => $_GET['data_fim'] ?? '',
            'cidade_destino' => $_GET['cidade_destino'] ?? '',
            'departamento' => $_GET['departamento'] ?? '',
            'status' => $_GET['status'] ?? '',
        ];

        $ordens = (!empty($filtros['data_inicio']) || !empty($filtros['data_fim']) || !empty($filtros['status']))
            ? $ordemModel->filtrarRelatorios($filtros)
            : [];

        $this->carregarTemplate('relatorios/relatorio', [
            'dados' => ['ordens' => $ordens, 'filtros' => $filtros]
        ]);
    }

    public function pdf_relatorio_geral()
    {
        $ordemModel = new Ordem();
        $filtros = [
            'data_inicio' => $_GET['data_inicio'] ?? '',
            'data_fim' => $_GET['data_fim'] ?? '',
            'cidade_destino' => $_GET['cidade_destino'] ?? '',
            'departamento' => $_GET['departamento'] ?? '',
            'status' => $_GET['status'] ?? '',
        ];

        $ordens = $ordemModel->filtrarRelatorios($filtros);

        ob_start();
        include __DIR__ . '/../Views/relatorios/pdf_relatorio_geral.php';
        $html = ob_get_clean();

        require_once __DIR__ . '/../../vendor/autoload.php';

        $mpdf = new \Mpdf\Mpdf();
        $mpdf->WriteHTML($html);
        $mpdf->Output('relatorio_ordens.pdf', 'I');
    }

    public function diarias_funcionarios()
    {
        $nome = $_GET['nome'] ?? '';
        $filtros = ['nome' => $nome];

        $ordemModel = new Ordem();
        $diarias = $ordemModel->listarDiariasPorFuncionario($filtros);

        $this->carregarTemplate('relatorios/diarias_funcionarios', [
            'dados' => ['diarias' => $diarias, 'filtros' => $filtros]
        ]);
    }

    public function pdf_diariasPorFuncionario()
    {
        $nome = $_GET['nome'] ?? '';
        $ordemModel = new Ordem();
        $filtros = ['nome' => $nome];
        $diarias = $ordemModel->listarDiariasPorFuncionario($filtros);

        ob_start();
        require_once __DIR__ . '/../Views/relatorios/pdf_diarias_funcionarios.php';
        $html = ob_get_clean();

        $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']);
        $mpdf->WriteHTML($html);
        $mpdf->Output('relatorio_diarias_funcionario.pdf', 'I');
    }

   public function funcionarios_viagem()
{
    $status = $_GET['status'] ?? '';
$status = ($status === 'Todos') ? '' : $status;

$filtros = [
    'nome' => $_GET['nome'] ?? '',
    'status' => $status,
    'data_inicio' => !empty($_GET['data_inicio']) ? date('Y-m-d', strtotime($_GET['data_inicio'])) : '',
    'data_fim' => !empty($_GET['data_fim']) ? date('Y-m-d', strtotime($_GET['data_fim'])) : '',
    'em_andamento_agora' => isset($_GET['em_andamento_agora']) ? true : false
];


    $ordemModel = new Ordem();
    $dados = $ordemModel->listarFuncionariosEmViagem($filtros);

    $this->carregarTemplate('relatorios/funcionarios_viagem', [
        'dados' => [
            'viagens' => $dados,
            'filtros' => $filtros
        ]
    ]);
}


    public function pdf_funcionarios_viagem()
    {
        $filtros = [
            'nome' => $_GET['nome'] ?? '',
            'status' => $_GET['status'] ?? '',
            'data_inicio' => $_GET['data_inicio'] ?? '',
            'data_fim' => $_GET['data_fim'] ?? '',
        ];

        $ordemModel = new Ordem();
        $dados = $ordemModel->listarFuncionariosEmViagem($filtros);

        ob_start();
        require_once __DIR__ . '/../Views/relatorios/pdf_funcionarios_viagem.php';
        $html = ob_get_clean();

        require_once __DIR__ . '/../../vendor/autoload.php';
        $mpdf = new \Mpdf\Mpdf(['mode' => 'utf-8', 'format' => 'A4']);
        $mpdf->WriteHTML($html);
        $mpdf->Output('relatorio_funcionarios_viagem.pdf', 'I');
    }
}
