<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class diario_oficial_model extends CI_Model {
    public function __construct()
    {
        parent::__construct();
    }
    public function get_advogados()
    { return $this->db->order_by('nome','ASC')->get('pje_advogados')->result(); }
    public function get_advogados_ativos()
    { return $this->db->where('ativo',1)->get('pje_advogados')->result(); }
    public function get_advogado($id)
    { return $this->db->where('id',$id)->get('pje_advogados')->row(); }
    public function add_advogado(array $d)
    { $this->db->insert('pje_advogados',$d); return $this->db->insert_id(); }
    public function delete_advogado($id)
    { $this->db->where('id',$id)->delete('pje_advogados'); }
    public function advogado_existe($oab, $uf)
    { return $this->db->where('oab',$oab)->where('uf_oab',$uf)->count_all_results('pje_advogados') > 0; }
    public function get_publicacoes(array $f = [])
    {
        $this->db->select('p.*, a.nome AS advogado_nome, a.oab, a.uf_oab');
        $this->db->from('pje_publicacoes p');
        $this->db->join('pje_advogados a','a.id = p.advogado_id','left');
        if (!empty($f['advogado_id'])) $this->db->where('p.advogado_id',$f['advogado_id']);
        if (isset($f['lida']) && $f['lida'] !== '') $this->db->where('p.lida',(int)$f['lida']);
        $this->db->order_by('p.created_at','DESC');
        return $this->db->get()->result();
    }
    public function get_publicacao($id)
    {
        $this->db->select('p.*, a.nome AS advogado_nome, a.oab, a.uf_oab');
        $this->db->from('pje_publicacoes p');
        $this->db->join('pje_advogados a','a.id = p.advogado_id','left');
        $this->db->where('p.id',$id);
        return $this->db->get()->row();
    }
    public function add_publicacao(array $d)
    { $this->db->insert('pje_publicacoes',$d); return $this->db->insert_id(); }
    public function publicacao_existe($cid, $adv_id)
    { return $this->db->where('comunicacao_id',$cid)->where('advogado_id',$adv_id)->count_all_results('pje_publicacoes') > 0; }
    public function marcar_lida($id)
    { $this->db->where('id',$id)->update('pje_publicacoes',['lida'=>1]); }
    public function marcar_todas_lidas($adv_id = null)
    {
        if ($adv_id) $this->db->where('advogado_id',$adv_id);
        $this->db->where('lida',0)->update('pje_publicacoes',['lida'=>1]);
    }
    public function count_nao_lidas()
    { return $this->db->where('lida',0)->count_all_results('pje_publicacoes'); }
    public function get_publicacoes_recentes($limit = 50)
    {
        $this->db->select('p.*, a.nome AS advogado_nome, a.oab, a.uf_oab');
        $this->db->from('pje_publicacoes p');
        $this->db->join('pje_advogados a','a.id = p.advogado_id','left');
        $this->db->order_by('p.created_at','DESC');
        $this->db->limit($limit);
        return $this->db->get()->result();
    }
    public function get_publicacoes_advogado($advogado_id, $limit = 100)
    {
        $this->db->select('p.*, a.nome AS advogado_nome, a.oab, a.uf_oab');
        $this->db->from('pje_publicacoes p');
        $this->db->join('pje_advogados a','a.id = p.advogado_id','left');
        $this->db->where('p.advogado_id', $advogado_id);
        $this->db->order_by('p.created_at','DESC');
        $this->db->limit($limit);
        return $this->db->get()->result();
    }
    public function salvar_advogado(array $d)
    { return $this->add_advogado($d); }
    public function salvar_publicacao(array $d)
    { $this->db->insert('pje_publicacoes', $d); return $this->db->insert_id(); }
}
