<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class diligencias extends MX_Controller {

    public function __construct()
    {
        parent::__construct();
        $this->auth->check_session();
        $this->load->model('diligencias_model');
        $this->load->model('cases_model');
        $this->load->model('clients_model');
        $this->load->model('employees_model');
        $this->load->helper('url');
    }

    public function index()
    {
        $filtros = [
            'status'    => $this->input->get('status') ?: '',
            'tipo'      => $this->input->get('tipo') ?: '',
            'client_id' => $this->input->get('client_id') ?: '',
            'data_ini'  => $this->input->get('data_ini') ?: date('Y-m-01'),
            'data_fim'  => $this->input->get('data_fim') ?: date('Y-m-t'),
        ];
        $data['diligencias'] = $this->diligencias_model->get_all($filtros);
        $data['proximas']    = $this->diligencias_model->get_proximas(5);
        $data['clientes']    = $this->clients_model->get_all_clients();
        $data['filtros']     = $filtros;
        $data['totais']      = $this->diligencias_model->get_totais();
        $data['page_title']  = 'Diligências Jurídicas';
        $data['body']        = 'diligencias/index';
        $this->load->view('template/main', $data);
    }

    public function add($id = 0)
    {
        if ($this->input->post('submitted')) {
            $dados = [
                'titulo'         => $this->input->post('titulo'),
                'tipo'           => $this->input->post('tipo'),
                'status'         => $this->input->post('status') ?: 'agendada',
                'case_id'        => $this->input->post('case_id') ?: null,
                'client_id'      => $this->input->post('client_id') ?: null,
                'responsavel_id' => $this->input->post('responsavel_id') ?: null,
                'local'          => $this->input->post('local'),
                'data_hora'      => $this->input->post('data_hora') ?: null,
                'data_prazo'     => $this->input->post('data_prazo') ?: null,
                'descricao'      => $this->input->post('descricao'),
                'valor_custo'    => (float)str_replace(['.', ','], ['', '.'], $this->input->post('valor_custo') ?: '0'),
                'created_by'     => $this->session->userdata('admin')['id'],
            ];
            if ($id > 0) {
                $dados['updated_at'] = date('Y-m-d H:i:s');
                $this->diligencias_model->update($id, $dados);
                $this->session->set_flashdata('message', 'Diligência atualizada.');
            } else {
                $dados['created_at'] = date('Y-m-d H:i:s');
                $this->diligencias_model->save($dados);
                $this->session->set_flashdata('message', 'Diligência registrada.');
            }
            redirect('admin/diligencias');
        }
        $diligencia = $id > 0 ? $this->diligencias_model->get($id) : null;
        $data['diligencia']  = $diligencia;
        $data['cases']       = $this->cases_model->get_all();
        $data['clientes']    = $this->clients_model->get_all_clients();
        $data['advogados']   = $this->employees_model->get_all();
        $data['page_title']  = $id > 0 ? 'Editar Diligência' : 'Nova Diligência';
        $data['body']        = 'diligencias/add';
        $this->load->view('template/main', $data);
    }

    public function view($id = 0)
    {
        if (!$id) redirect('admin/diligencias');
        $data['diligencia'] = $this->diligencias_model->get($id);
        if (!$data['diligencia']) { redirect('admin/diligencias'); return; }
        $data['page_title'] = 'Diligência';
        $data['body']       = 'diligencias/view';
        $this->load->view('template/main', $data);
    }

    public function concluir($id = 0)
    {
        if (!$id) redirect('admin/diligencias');
        $this->diligencias_model->update($id, [
            'status'     => 'concluida',
            'resultado'  => $this->input->post('resultado'),
            'updated_at' => date('Y-m-d H:i:s'),
        ]);
        $this->session->set_flashdata('message', 'Diligência concluída.');
        redirect('admin/diligencias');
    }

    public function delete($id = 0)
    {
        if (!$id) redirect('admin/diligencias');
        $this->diligencias_model->delete($id);
        $this->session->set_flashdata('message', 'Diligência excluída.');
        redirect('admin/diligencias');
    }
}
