<?php

class FuncionariosController extends Controller
{
    private $funcionarioModel;
    private $pessoaModel;
    private $departamentoModel;
     private $db;

    public function __construct()
    {
        if (!Sessao::estaLogado()) {
            URL::redirecionar('usuarios/login');
        }
        $this->funcionarioModel = $this->model('Funcionario');
        $this->pessoaModel = $this->model('Pessoa');
        $this->departamentoModel = $this->model('Departamento');
    }

    public function index()
    {
        $dados = [
            'funcionarios' => $this->funcionarioModel->lerFuncionarios()
        ];
        $this->view('layout', [
            'conteudo' => __DIR__ . '/../Views/funcionarios/index.php',
            'dados'    => $dados
        ]);
    }

    public function cadastrar()
{
    if ($_SERVER['REQUEST_METHOD'] == 'POST') {
        $formulario = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS);

        $dados = [
            'id_pessoa' => $formulario['id_pessoa'] ?? null,
            'matricula' => strtoupper($formulario['matricula'] ?? ''),
            'admissao' => $formulario['admissao'] ?? '',
            'pis' => $formulario['pis'] ?? '',
            'salario' => str_replace(',', '.', $formulario['salario'] ?? 0),
            'horas' => $formulario['horas'] ?? null,
            'estagio_probatorio' => $formulario['estagio_probatorio'] ?? null,
            'regime' => $formulario['regime'] ?? '',
            'id_departamento' => $formulario['id_departamento'] ?? null,
            'id_funcoes' => $formulario['id_funcoes'] ?? null,
            'id_usuario' => $_SESSION['id_usuario'] ?? 1
        ];

        if ($this->funcionarioModel->armazenar($dados)) {
            Sessao::mensagem('funcionario', 'Funcionário cadastrado com sucesso!');
            URL::redirecionar('funcionarios');
        } else {
            Sessao::mensagem('funcionario', 'Erro ao cadastrar funcionário', 'alert alert-danger');
        }
    }

    $dados = [
        'pessoas' => $this->funcionarioModel->lerPessoasDisponiveis(),
        'departamentos' => $this->departamentoModel->lerDepartamentos(),
        'funcoes' => $this->funcionarioModel->listarFuncoes()
    ];

    $this->view('layout', [
        'conteudo' => __DIR__ . '/../Views/funcionarios/cadastrar.php',
        'dados'    => $dados
    ]);
}



    
    public function editar($id)
    {
        if ($_SERVER['REQUEST_METHOD'] == 'POST') {
            $formulario = filter_input_array(INPUT_POST, FILTER_SANITIZE_SPECIAL_CHARS);

            $dados = [
                'id_funcionario'    => $id,
                'id_pessoa'         => $formulario['id_pessoa'] ?? null,
                'matricula'         => strtoupper($formulario['matricula'] ?? ''),
                'admissao'          => $formulario['admissao'] ?? '',
                'pis'               => $formulario['pis'] ?? '',
                'salario'           => str_replace(',', '.', $formulario['salario'] ?? 0),
                'horas'             => $formulario['horas'] ?? null,
                'estagio_probatorio'=> $formulario['estagio_probatorio'] ?? null,
                'regime'            => $formulario['regime'] ?? '',
                'id_departamento'   => $formulario['id_departamento'] ?? null,
                'id_funcoes'        => $formulario['id_funcoes'] ?? null,
            ];

            if ($this->funcionarioModel->atualizar($dados)) {
                Sessao::mensagem('funcionario', 'Funcionário atualizado com sucesso!');
                URL::redirecionar('funcionarios');
            } else {
                Sessao::mensagem('funcionario', 'Erro ao atualizar funcionário', 'alert alert-danger');
            }
        }

        $funcionario = $this->funcionarioModel->lerFuncionarioPorId($id);

        $dados = [
            'funcionario'   => $funcionario,
            'pessoas'       => $this->pessoaModel->lerPessoas(),
            'departamentos' => $this->departamentoModel->lerDepartamentos(),
            'funcoes'       => $this->funcionarioModel->listarFuncoes()
        ];

        $this->view('layout', [
            'conteudo' => __DIR__ . '/../Views/funcionarios/editar.php',
            'dados'    => $dados
        ]);
    }

    public function visualizar($id)
    {
        $dados = [
            'funcionario' => $this->funcionarioModel->lerFuncionarioPorId($id)
        ];

        $this->view('layout', [
            'conteudo' => __DIR__ . '/../Views/funcionarios/visualizar.php',
            'dados'    => $dados
        ]);
    }

    public function excluir($id)
    {
        if ($this->funcionarioModel->remover($id)) {
            Sessao::mensagem('funcionario', 'Funcionário removido com sucesso!');
        } else {
            Sessao::mensagem('funcionario', 'Erro ao remover funcionário', 'alert alert-danger');
        }

        URL::redirecionar('funcionarios');
    }
}


    


