<?php

class Diaria
{
    private $db;

    public function __construct()
    {
        $this->db = new Database();
    }

    // Lista todas as diárias (por função e condição)
    public function listarTodas()
    {
        $this->db->query("
            SELECT d.*, f.descricao AS nome_funcao, c.descricao AS condicao
            FROM diarias d
            INNER JOIN funcoes f ON f.id_funcao = d.id_cargo
            INNER JOIN condicao_diaria c ON c.id_condicao_diaria = d.condicao_diaria
            WHERE d.removido IS NULL
            ORDER BY f.descricao, c.descricao
        ");
        return $this->db->resultados();
    }

    // Busca valor da diária por função/cargo e condição
    public function valorPorFuncaoCondicao($id_cargo, $id_condicao_diaria)
    {
        $this->db->query("
            SELECT valor 
            FROM diarias 
            WHERE id_cargo = :id_cargo AND condicao_diaria = :id_condicao_diaria AND removido IS NULL
            LIMIT 1
        ");
        $this->db->bind("id_cargo", $id_cargo);
        $this->db->bind("id_condicao_diaria", $id_condicao_diaria);
        $res = $this->db->resultado();
        return $res ? $res->valor : null;
    }

    // Insere nova diária
    public function armazenar($dados)
    {
        $this->db->query("
            INSERT INTO diarias (id_cargo, condicao_diaria, valor, criado_em, id_usuario)
            VALUES (:id_cargo, :condicao_diaria, :valor, NOW(), :id_usuario)
        ");
        $this->db->bind("id_cargo", $dados['id_cargo']);
        $this->db->bind("condicao_diaria", $dados['condicao_diaria']);
        $this->db->bind("valor", $dados['valor']);
        $this->db->bind("id_usuario", $dados['id_usuario']);
        return $this->db->executa();
    }

    // Atualiza diária existente
    public function atualizar($dados)
    {
        $this->db->query("
            UPDATE diarias SET 
                id_cargo = :id_cargo, 
                condicao_diaria = :condicao_diaria, 
                valor = :valor,
                alterado = NOW()
            WHERE id_diaria = :id_diaria
        ");
        $this->db->bind("id_cargo", $dados['id_cargo']);
        $this->db->bind("condicao_diaria", $dados['condicao_diaria']);
        $this->db->bind("valor", $dados['valor']);
        $this->db->bind("id_diaria", $dados['id_diaria']);
        return $this->db->executa();
    }

    // Marca diária como removida (soft delete)
    public function remover($id)
    {
        $this->db->query("UPDATE diarias SET removido = NOW() WHERE id_diaria = :id_diaria");
        $this->db->bind("id_diaria", $id);
        return $this->db->executa();
    }

    // Busca diária por ID
    public function lerDiariaPorId($id)
    {
        $this->db->query("
            SELECT d.*, f.descricao AS nome_funcao, c.descricao AS condicao
            FROM diarias d
            INNER JOIN funcoes f ON f.id_funcao = d.id_cargo
            INNER JOIN condicao_diaria c ON c.id_condicao_diaria = d.condicao_diaria
            WHERE d.id_diaria = :id_diaria
        ");
        $this->db->bind("id_diaria", $id);
        return $this->db->resultado();
    }
}
