<?php if (!defined('BASEPATH')) exit('No direct script access allowed');

class Relatorios_model extends CI_Model
{

    function __construct() {
        parent::__construct();
    }


    function get($table, $fields, $where = '', $perpage = 0, $start = 0, $one = false, $array = 'array') {

        $this->db->select($fields);
        $this->db->from($table);
        $this->db->limit($perpage, $start);
        $this->db->order_by('idMorador', 'desc');

        if ($where) {
            $this->db->where($where);
        }

        $query = $this->db->get();

        $result = !$one ? $query->result() : $query->row();
        return $result;
    }

    function getById($id) {
        //$this->db->join('fotos','fotos.membro_id = membros.idMembro');
        $this->db->where('idMorador', $id);
        $this->db->limit(1);
        return $this->db->get('morador')->row();
    }

    function getMorador($id) {
        $this->db->join('morador as proprietario', 'morador.proprietario_id = proprietario.idMorador', 'left');
        $this->db->where('idMorador', $id);
        $this->db->limit(1);
        $this->db->order_by('idMorador', 'desc');

        return $this->db->get('morador')->row();
    }


    function add($table, $data, $returnId = false) {
        $this->db->insert($table, $data);
        if ($this->db->affected_rows() == '1') {
            if ($returnId == true) {
                return $this->db->insert_id($table);
            }
            return TRUE;
        }

        return FALSE;
    }


    function edit($table, $data, $fieldID, $ID) {
        $this->db->where($fieldID, $ID);
        $this->db->update($table, $data);

        if ($this->db->affected_rows() >= 0) {
            return TRUE;
        }

        return FALSE;
    }

    function delete($table, $fieldID, $ID) {
        $this->db->where($fieldID, $ID);
        $this->db->delete($table);
        if ($this->db->affected_rows() == '1') {
            return TRUE;
        }
        return FALSE;
    }

    function count($table) {
        return $this->db->count_all($table);
    }

    public function relatorioFinanceiroMesAtual() {
        $this->db->select('*');
        $this->db->from('lancamentos');
        $this->db->where('Month(data_vencimento) = Month(Now())');
        $this->db->where('year(data_vencimento) = year(Now())');
        $query = $this->db->get();
        return $query->result();
    }

    public function moradoresAniversariosMesAtual() {
        $query = "SELECT nm_morador, nr_celular, nr_apartamento, blocoApartamento, dataNascimento, idMorador   FROM morador Where Month(dataNascimento) = Month(Now()) and DAY(dataNascimento) = DAY(Now())
                  UNION
                  SELECT nomeFamiliar as nm_morador,telefoneParente as nr_celular,nr_apartamento, blocoApartamento,dataNascimentoParente AS dataNascimento, idMorador
                  FROM familiaresmorador
                  INNER JOIN morador ON morador.idMorador = familiaresmorador.morador_id
                  Where Month(dataNascimentoParente) = Month(Now())
                  ORDER BY DAY(  `dataNascimento` )";
        return $this->db->query($query)->result();
    }

    public function moradoresAniversariosMes($mesConsulta) {
        $query = "SELECT nm_morador, nr_celular, nr_apartamento, blocoApartamento, dataNascimento, idMorador
                  FROM morador Where Month(dataNascimento) = Month('" . $mesConsulta . "') and DAY(dataNascimento) = DAY(Now())
                  UNION
                  SELECT nomeFamiliar as nm_morador,telefoneParente as nr_celular,nr_apartamento, blocoApartamento,dataNascimentoParente AS dataNascimento, idMorador
                  FROM familiaresmorador
                  INNER JOIN morador ON morador.idMorador = familiaresmorador.morador_id
                  Where Month(dataNascimentoParente) = Month('" . $mesConsulta . "')
                  ORDER BY DAY(  `dataNascimento` )";

        return $this->db->query($query)->result();
    }

    public function ocorrenciasModelMesAtual() {
        $query = "SELECT * FROM (`livro_ocorrencia`) LEFT JOIN `morador` ON `livro_ocorrencia`.`morador_id` = `morador`.`idMorador` LEFT JOIN `funcionario` ON `livro_ocorrencia`.`funcionario_id` = `funcionario`.`idFuncionario` WHERE month(dataOcorrencia) = month(NOW()) ORDER BY `idOcorrencia` desc";
        return $this->db->query($query)->result();
    }

    public function ocorrenciasModelMes($mesConsulta) {
        $query = "SELECT * FROM (`livro_ocorrencia`) LEFT JOIN `morador` ON `livro_ocorrencia`.`morador_id` = `morador`.`idMorador` LEFT JOIN `funcionario` ON `livro_ocorrencia`.`funcionario_id` = `funcionario`.`idFuncionario` WHERE month(dataOcorrencia) ='" . $mesConsulta . "' ORDER BY `idOcorrencia` desc";
        return $this->db->query($query)->result();
    }


    public function notificaoModelMesAtual() {
        $query = "SELECT * FROM (`multanotificacao`) LEFT JOIN `morador` ON `multanotificacao`.`morador_id` = `morador`.`idMorador`  WHERE month(data) = month(NOW()) ORDER BY `idMultanotificacao` desc";
        return $this->db->query($query)->result();
    }

    public function notificacaoModelMes($mesConsulta) {
        $query = "SELECT * FROM (`multanotificacao`) LEFT JOIN `morador` ON `multanotificacao`.`morador_id` = `morador`.`idMorador`  WHERE month(data) ='" . $mesConsulta . "' ORDER BY `idMultanotificacao` desc";
        return $this->db->query($query)->result();
    }

    public function funcionariosAniversariosDia() {
        $query = "SELECT * FROM funcionario WHERE month(dataNascimento) = month(NOW()) AND day(dataNascimento) = day(NOW())";
        return $this->db->query($query)->result();
    }

    public function PCfinanceiroMesAtual($mes, $ano) {
        $query = "SELECT * FROM lancamentos WHERE month(data_vencimento) = '" . $mes . "' and year(data_vencimento) = '" . $ano . "'";
        return $this->db->query($query)->result();
    }

    public function PCNotificacaoMesAtual($mes, $ano) {
        $query = "SELECT * FROM multanotificacao WHERE month(data) = '" . $mes . "'  and year(data) = '" . $ano . "' and tipo = 'Notificacao'";
        return $this->db->query($query)->result();

    }

    public function PCAdvertenciaMesAtual($mes, $ano) {
        $query = "SELECT * FROM multanotificacao WHERE month(data) = '" . $mes . "'  and year(data) = '" . $ano . "' and tipo = 'Advertencia'";
        return $this->db->query($query)->result();

    }

    public function PCOcorrenciaMesAtual($mes, $ano) {
        $query = "SELECT * FROM (`livro_ocorrencia`) LEFT JOIN `morador` ON `livro_ocorrencia`.`morador_id` = `morador`.`idMorador` LEFT JOIN `funcionario` ON `livro_ocorrencia`.`funcionario_id` = `funcionario`.`idFuncionario` WHERE month(dataOcorrencia) ='" . $mes . "' AND year(dataOcorrencia) ='" . $ano . "' ORDER BY `idOcorrencia` desc";
        return $this->db->query($query)->result();
    }

    public function PCMultaMesAtual($mes, $ano) {
        $query = "SELECT * FROM multanotificacao WHERE month(data) = '" . $mes . "'  and year(data) = '" . $ano . "' and tipo = 'Multa'";
        return $this->db->query($query)->result();

    }

    /////// aqui

    public function PCMfinanceiroMesAtual() {
        $query = "SELECT * FROM lancamentos WHERE month(data_vencimento) = MONTH(now()) and year(data_vencimento) = YEAR(NOW()) ";
        return $this->db->query($query)->result();
    }

    public function PCMNotificacaoMesAtual() {
        $query = "SELECT * FROM multanotificacao WHERE month(data) = MONTH(now())  and year(data) = YEAR(now()) and tipo = 'Notificacao'";
        return $this->db->query($query)->result();

    }

    public function PCMAdvertenciaMesAtual() {
        $query = "SELECT * FROM multanotificacao WHERE month(data) = MONTH(now())  and year(data) = year(now()) and tipo = 'Advertencia'";
        return $this->db->query($query)->result();

    }

    public function PCMOcorrenciaMesAtual() {
        $query = "SELECT * FROM (`livro_ocorrencia`)  WHERE month(dataOcorrencia) =MONTH(now()) AND year(dataOcorrencia) =year(now()) ORDER BY `idOcorrencia` desc";
        return $this->db->query($query)->result();
    }

    public function PCMMultaMesAtual() {
        $query = "SELECT * FROM multanotificacao WHERE month(data) = MONTH(now())  and year(data) = YEAR(now()) and tipo = 'Multa'";
        return $this->db->query($query)->result();

    }

    public function funcionarioAniversariosMes($mesConsulta) {
        $query = "SELECT * FROM funcionario WHERE month(dataNascimento) = month('" . $mesConsulta . "')";
        return $this->db->query($query)->result();
    }

    public function relatorioGeral($table, $where = '', $ordem = '') {
        $this->db->select('*');
        $this->db->from($table);
        $this->db->order_by($ordem);

        if ($where) {
            $this->db->where($where);
        }

        $query = $this->db->get();

        return $query->result();
    }

    function relatorioMoradores($table, $where = '') {
        $this->db->select('*');
        $this->db->from($table);
        $this->db->order_by('blocoApartamento', 'asc');
        $this->db->order_by('nr_apartamento', 'asc');


        if ($where) {
            $this->db->where($where);
        }

        $query = $this->db->get();

        return $query->result();
    }

    function relatorioMoradoresDetalhado($where) {
        $this->db->select('*');
        $this->db->from('familiaresmorador');
        $this->db->join('morador', 'familiaresmorador.morador_id = morador.idMorador', 'left');

        $this->db->order_by('blocoApartamento', 'asc');
        $this->db->order_by('nr_apartamento', 'asc');

        $this->db->where($where);

        $query = $this->db->get();

        return $query->result();
    }


    function buscarDadosDetalhados($where) {
        $this->db->select('*');
        $this->db->from('familiaresmorador');
        $this->db->join('morador', 'familiaresmorador.morador_id = morador.idMorador', 'left');

        $this->db->order_by('blocoApartamento', 'asc');
        $this->db->order_by('nr_apartamento', 'asc');

        $this->db->where($where);

        $query = $this->db->get();

        return $query->result();
    }


    function relatorioFuncionarios($table, $where = '') {

        $this->db->select('*');
        $this->db->from($table);

        if ($where) {
            $this->db->where($where);
        }

        $query = $this->db->get();

        return $query->result();
    }

    public function financeiroCustom($dataInicial, $dataFinal, $tipo = null, $situacao = null, $categoria=null) {
        $this->db->select('*');
        $this->db->from('lancamentos');
        $this->db->where('data_vencimento >= ',$dataInicial);
        $this->db->where('data_vencimento <= ',$dataFinal);
        $tipo == null?null:$this->db->where('tipo',$tipo);
        $situacao == null?null:$this->db->where('baixado',$situacao);
        $categoria == null?null:$this->db->where('categoria',$categoria);
        $query = $this->db->get();
        return $query->result();
    }


}
