<?php

class Estatistica_Model extends CI_Model {

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

    public function transacaopaga() {
        $this->db->select('COUNT(*) as quantidade, data_transacao');
        $this->db->where('situacao', 1);
        $this->db->where('data_transacao BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->group_by('data_transacao');
        $this->db->order_by("data_transacao", "desc");
        $query = $this->db->get('transacao');

        return $query->result();
    }

    public function transacaopagas() {
        $this->db->select('COUNT(*) as quantidade');
        $this->db->where('situacao', 1);
        $this->db->where('data_transacao BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $query = $this->db->get('transacao');

        return $query->row_array();
    }

    public function getTransacaoPendente() {

        $sql = "SELECT COUNT( * ) AS total
                FROM transacao
                WHERE (
                situacao =2
                OR situacao =3
                OR situacao =6
                OR situacao =8
                )
                AND data_transacao
                BETWEEN DATE_SUB( CURDATE( ) , INTERVAL 30 
                DAY ) 
                AND CURDATE( )";

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

        return $query->row_array();
    }
    
    public function getTransacaoCancelada() {

        $sql = "SELECT COUNT( * ) AS total
                FROM transacao
                WHERE 
                situacao = 5
                AND data_transacao
                BETWEEN DATE_SUB( CURDATE( ) , INTERVAL 30 
                DAY ) 
                AND CURDATE( )";

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

        return $query->row_array();
    }
    
    public function alunosmatriculados() {
        
        $this->db->select('COUNT(h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
    public function alunosemestudo() {
        
        $this->db->select('COUNT(DISTINCT h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->where('num_cliques', 0);
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
    public function matriculacancelada() {
        
        $this->db->select('COUNT(h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->where('concluido', 2);
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
    public function alunocomestudo() {
        
        $this->db->select('COUNT(DISTINCT h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->where('num_cliques > 0');
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
    public function alunoscomatricula() {
        
        $this->db->select('COUNT(DISTINCT h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
    public function matriculacanceladaporaluno() {
        
        $this->db->select('COUNT(DISTINCT h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 30 DAY) AND curdate()');
        $this->db->where('concluido', 2);
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
     public function alunojubilado() {
        
        $this->db->select('COUNT(DISTINCT h.id_aluno) as quantidade, h.primeiro_dia');
        $this->db->join('aluno a', 'a.id_aluno = h.id_aluno');
        $this->db->where('primeiro_dia BETWEEN DATE_SUB(curdate(), INTERVAL 120 DAY) AND curdate()');
        $this->db->where('concluido', 3);
        $this->db->group_by('primeiro_dia');
        $this->db->order_by("primeiro_dia", "desc");
        $query = $this->db->get('historico h');

        return $query->result();
    }
    
    public function getListaCursoRepetido($ordem, $limit, $pesquisa) {

        $SQL = "SELECT ac.id_aluno, ac.id_curso, count(ac.id_curso) quantidade, curso.nome as nome_curso, aluno.nome as nome FROM historico ac ";
        $SQL .= "JOIN curso USING(id_curso) ";
        $SQL .= "JOIN aluno USING(id_aluno) ";
        $SQL .= "LEFT JOIN aluno_curso_repetido acr ON acr.id_aluno = ac.id_aluno ";
        $SQL .= "WHERE aluno.nome IS NOT NULL ";

        if (!empty($pesquisa)) {
            $SQL .= "AND aluno.nome LIKE '%" . $pesquisa . "%' ";
            $SQL .= "OR curso.nome LIKE '%" . $pesquisa . "%' ";
        }
        $SQL .= "GROUP BY ac.id_aluno, ac.id_curso ";
        $SQL .= "HAVING COUNT(ac.id_curso) >=5 ";
        if (!empty($limit)) {
            $SQL .= " ORDER BY COUNT( ac.id_curso ) DESC, " . $ordem . ", TRIM(aluno.nome)  LIMIT " . $limit . "   ";
        }
        
        $result = $this->db->query($SQL)->result();
        
        return $result;
    }
    
    public function total_listaCursoRepetido($pesquisa) {
        $this->db->select('ac.id_aluno, ac.id_curso, count(ac.id_curso) as quantidade, c.nome as nome_curso, a.nome as nome');
        $this->db->join('aluno a', 'a.id_aluno = ac.id_aluno');
        $this->db->join('curso c', 'c.id_curso = ac.id_curso');
        $this->db->join('aluno_curso_repetido acr', 'acr.id_aluno = ac.id_aluno', 'LEFT');
        $this->db->where('a.nome IS NOT NULL');
        if (!empty($pesquisa)) {
        $SQL = "a.nome LIKE '%" . $pesquisa . "%' ";
        $SQL .= "OR c.nome LIKE '%" . $pesquisa . "%' ";
        $this->db->where($SQL);
        }
        $this->db->group_by('ac.id_aluno, ac.id_curso');
        $this->db->having('COUNT( ac.id_curso ) >=5');
        $result = $this->db->get('historico ac')->result();
        return $result;
    }
    
    public function verificado($id_aluno) {
        
        $this->db->where('id_aluno', $id_aluno);
        return $this->db->get('aluno_curso_repetido')->row_array();
        
    }

}
