<?php

class Matricula_Model extends CI_Model {

    function __construct() {
        parent::__construct();
    }
    
    public function obtemCursoMatriculadoporID($id) {
        $this->db->select('a.id_curso,a.nome,a.carga_horaria as carga,a.ementa, b.carga_horaria, b.primeiro_dia, b.nota, b.id_historico, b.concluido, b.certificado, b.id_aluno');
        $this->db->where('b.id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->where('b.id_curso', $id);
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b');
        return $query->result();
    }
    
    public function obtemCursoMatriculadoporIDhistorico($id) {
        $this->db->select('b.id_aluno,a.id_curso,a.nome,a.carga_horaria as carga,a.ementa, b.carga_horaria, b.primeiro_dia, b.nota, b.id_historico, b.concluido, b.certificado, b.id_aluno');
        //$this->db->where('b.id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->where('b.id_historico', $id);
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b');
        return $query->result();
//        echo $this->db->last_query();
    }
    
     public function obtemCursoMatriculadoporHistorico($id) {
        $this->db->select('a.id_curso,a.nome,a.carga_horaria as carga,a.ementa, b.carga_horaria, b.primeiro_dia, b.nota, b.id_historico, b.concluido, b.certificado, b.num_cliques, b.id_aluno');
        $this->db->where('b.id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->where('b.id_historico', $id);
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b');
        return $query->result();
    }
    
    public function obtemCursoMatriculadoporHistorico_aluno($id,$id_aluno) {
        $this->db->select('a.id_curso,a.nome,a.carga_horaria as carga,a.ementa, b.carga_horaria, b.primeiro_dia, b.nota, b.id_historico, b.concluido, b.certificado, b.num_cliques, b.id_aluno');
        $this->db->where('b.id_aluno', $id_aluno);
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->where('b.id_historico', $id);
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b');
        return $query->result();
    }
    
        public function get_total_matriculas($id_aluno) {
            $this->db->select('count( * ) as num_matriculas');
            $this->db->where('id_aluno', $id_aluno);
            $this->db->where('primeiro_dia', date('Y-m-d'));
            $query = $this->db->get('historico');
            return $query->result();
        
        }
    // REALIZA A MATRÍCULA DO ALUNO
    public function realizamatricula($id_aluno, $aut) {
        $total_matricula = $this->get_total_matriculas($id_aluno);
        /*
         * Verifica se o aluno atingiu o numero de matriculas para o dia
         */
        if($total_matricula[0]->num_matriculas >= NUM_TOTAL_MATRICULAS){
           $data = array('situacao' => 'falha-matricula-total');
           echo json_encode($data);
           die;
        }
        
        
        $id_curso = $_SESSION['matricula-aluno']['id_curso'];
        $ch = $_SESSION['matricula-aluno']['carga'];
        $ph = date('H:i:s');
        $pd = date('Y-m-d ');
        
        $ultimo=date('Y-m-d', strtotime('+' . ceil($ch / 8) . ' days', strtotime(date("Y-m-d", strtotime($pd)))));
      

        $dados = array('id_aluno' => $id_aluno, 'id_curso' => $id_curso, 'carga_horaria' => $ch, 'primeira_hora' => $ph, 'primeiro_dia' => $pd,'ultimo_dia' => $ultimo, 'cod_autenticacao' => $aut, 'concluido' => 0, 'num_cliques' => 0);
        $verificamat = $this->obtemCursoMatriculadoporID($id_curso);
       
        $this->db->insert('historico', $dados);
        
    }

    public function obtemCursoMatriculado_todos() {
       
        
        $this->db->select('al.id_aluno,a.id_curso,a.nome,a.carga_horaria as carga, b.carga_horaria,b.ultimo_dia, b.primeiro_dia, FORMAT(b.nota,1) as nota, b.id_historico, b.concluido, b.certificado');
        $this->db->where('al.nome', $_SESSION['aluno']['nome']);
        //$this->db->where('al.situacao<>', '0');
        $this->db->where('al.ddd', $_SESSION['aluno']['ddd']);
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->where('b.id_aluno = al.id_aluno');
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b,aluno al');
//        echo $this->db->last_query();
//        exit();
        return $query->result();
    }
    
    public function obtemCursoMatriculado() {
        $this->db->select('a.id_curso,a.nome,a.carga_horaria as carga, b.carga_horaria,b.ultimo_dia, b.primeiro_dia, FORMAT(b.nota,1) as nota, b.id_historico, b.concluido, b.certificado');
        $this->db->where('b.id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b');

        return $query->result();
    }
    
    public function obtemCursoConcluido($id_curso) {
        $this->db->select('a.id_curso,a.nome,a.carga_horaria as carga, b.carga_horaria, b.primeiro_dia, b.nota, b.id_historico, b.concluido, b.certificado');
        $this->db->where('a.id_curso = b.id_curso');
        $this->db->where('b.id_aluno', $_SESSION['aluno']['id_aluno']);
        $this->db->where('b.id_curso', $id_curso);
        $this->db->order_by('b.primeiro_dia,b.primeira_hora', 'DESC');
        $query = $this->db->get('curso a,historico b');
        return $query->row_array();
    }

    /**
     * Gera a altenticacao a partir do hash do aluno
     *
     * @param string
     * @return string
     */
    public function gera_autenticacao($hash) {
        $autenticacao = strtoupper(substr(md5($hash), 0, 8));
        $autenticacao = date('Y') . '-' . substr($autenticacao, 0, 4) . '-' . substr($autenticacao, 4, 9);
        return $autenticacao;
    }

    // ----------------------------------------------------------------------------------------------

    /**
     * Gera um hash code para o cadastro do aluno
     *
     * @param int
     * @return string
     */
    public function gera_hash() {
        $id_aluno = $_SESSION['aluno']['id_aluno'];
        return date('Y') . '-' . strtoupper(substr(md5($id_aluno . ':' . microtime() . '-' . microtime()), 0, 4) . '-' . substr(md5($id_aluno . ':' . microtime()), 0, 4));
    }
   
}
