<?php
if (!defined('BASEPATH')) exit('No direct script access allowed');
 
class CertificadosEletronicos extends CI_Controller
{
    protected $fpdf;

    public function __construct()
    {
        parent::__construct();
        $this->seguranca();
    }
    
    public function seguranca()
    {
        if (!isset($_SESSION['nome_facilitador']) && !isset($_SESSION['email_facilitador']) && !isset($_SESSION['login']))
        {
            redirect('login');
        }
    }
    
    public function set_lote_envio()
    {
        $id_lote_decodificado = decodifica( $this->input->post("id_lote", true) );
        
        if( !empty($id_lote_decodificado) )
        {
            $parse_lote = intval($id_lote_decodificado);

            if($parse_lote===0)
            {
                echo json_encode(['status'=>0,'msg'=>'Erro, valor não é um número inteiro']);
            }
            else
            {
                $this->load->model('CertificadosEletronicos_model', 'cem');
                echo $this->cem->set_lote_envio($id_lote_decodificado);
            }
        }
        else
        {
            echo json_encode(['status'=>0,'msg'=>'Id Lote vazio']);
        }
        
        
    }

    private function get_certificado_lote()
    {
         $this->load->model('CertificadosEletronicos_model', 'cem');
         return $this->cem->getCertificadoLote();
    }

    public function update_certificado_situacao()
    {
        $this->load->helper('criptografia');
        
        $id_certificado = decodifica($this->input->post("id_cert", true));
        
        $id_certificado = (int)$id_certificado;
        
        if( $id_certificado===0 )
        {
            echo json_encode(["status"=>1,"msg"=>"Valor invalido"]);
        }
        else
        {
            $is_id_certificado = is_int($id_certificado);
            
            if($is_id_certificado)
            {
                $this->load->model('CertificadosEletronicos_model', 'cem');
                $is_update = $this->cem->update_situacao_pendente($id_certificado);
                
                if($is_update)
                {
                    echo json_encode(["status"=>1,"msg"=>"sucesso"]);
                }
                else
                {
                    echo json_encode(["status"=>0,"msg"=>"Falha na atualizaçao da situaçao do certificado"]);
                }
            }
            else
            {
                echo json_encode(["status"=>0,"msg"=>"Número não Inteiro"]);
            }
        }
    }

    public function eletronicos_nao_enviados()
    {
        $quantidade_visualizar = $this->input->post("quantidade_visualizar",true);
        
        $this->load->library('form_validation');
        $this->form_validation->set_rules('quantidade_visualizar', 'quantidade_visualizar', 'trim|required|numeric|integer|is_natural_no_zero');
        
        $this->load->model('CertificadosEletronicos_model', 'cem');
        
        if( $this->form_validation->run()  )
        {
            
            $promocionais_nao_enviados = $this->cem->get_eletronicos_nao_enviados($quantidade_visualizar);
            
            $data['certificados_eletronicos'] = $promocionais_nao_enviados;
        }
        
        $lotes = $this->get_certificado_lote();
        
        $data['lotes'] = $lotes;
        $data['total_certificados_eletronicos'] = $this->cem->get_total_eletronicos_nao_enviados();
        
        $this->load->view('adm/inc/header');
        $this->load->view('adm/tela/certificados_eletronicos_nao_enviados',$data);
        //$this->output->enable_profiler(TRUE);
    }
    
    public function gerar_lote()
    {
        
        $nome_lote = $this->input->post('nome_lote', true);
        $quantidade_visualizar = $this->input->post('quantidade_visualizar',true);
        
        $this->load->model('CertificadosEletronicos_model', 'cem');
        $certificados = $this->cem->get_eletronicos_nao_enviados($quantidade_visualizar);
        
            if(count($certificados)>0)
            {
                
                
//                if( !empty($id_lote) )
//                {
                
                    $id_certificados = [];
                
                    foreach ($certificados as $certificado)
                    {
                        $ids_certificados[] = $certificado['id_certificado'];
                    }
                    
                    $is_lote_certificado = $this->cem->check_lote_certificado($ids_certificados);
                    
                    
                    if( $is_lote_certificado===false )
                    {
                        $id_lote = $this->add_certificado_lote();
                        $status_insert = $this->add_certificado_lote_certificado($id_lote, $ids_certificados);

                        $quantidade_status = count($status_insert);
                        $quantidade_ids_certificados = count($ids_certificados);

                        if( !in_array(false, $status_insert) && ($quantidade_status===$quantidade_ids_certificados) )
                        {
                            $is_update_certificado = $this->cem->update_situacao_certificado($ids_certificados);
                            
                            if($is_update_certificado)
                            {
                                $this->gera_lote_pdf($certificados, $id_lote, $nome_lote);
                                echo json_encode([ 'status' => 1, 'msg'=>'sucesso']);
                            }
                            else
                            {
                                echo json_encode([ 'status' => 0, 'msg'=>'Falha em criar a copia de certificados']);
                            }
                        }
                        else
                        {
                            echo json_encode([ 'status' => 0, 'msg'=>'Falha ao adicionar certificado ao lote' ]);
                        }
                    
                    }
                    else
                    {
                        echo json_encode([ 'status' => 0, 'msg'=>'Certificados ja pertencem a um lote' ]);
                    }
//                }
//                else
//                {
//                    echo json_encode([ 'status' =>0 , 'msg'=>'Falha ao criar lote' ]);
//                }
                
            }
            else
            {
                echo json_encode([ 'status' => 0, 'msg'=>'Não há certificados eletronicos não enviados na base']);
            }
    }
    
    private function add_certificado_lote()
    {
        $data = date("Y-m-d H:i:s");
                
        $certificado_lote = ['url'=>'url', 'data_criacao'=> $data, 'situacao'=>0];
        
        $id_lote = $this->cem->add_lote_certificado($certificado_lote);
        return $id_lote;
    }
    
    private function add_certificado_lote_certificado($id_lote, $quantidade_certificado)
    {
        if( !empty($id_lote) && !empty($quantidade_certificado) )
        {
            return $this->cem->add_certificado_lote_certificado($id_lote, $quantidade_certificado);
        }
        else
        {
            return false;
        }
    }
    
    public function gera_lote_facil()
    {
        try
        {
            require_once realpath(__DIR__ . '/../..') . '/libraries/fpdf_v181/fpdf_protection.php';
            $pdf = new FPDF_Protection();
            
                $pdf->SetProtection(array('print','copy'), '');
             
             $RF = ['id_historico'=>1, 'situacao'=>2,'id_certificado'=>'2018-9cfd-7653','nome'=>'Otávio Danin','endereco'=>'Passagem Tancredo Neves', 'numero'=>'33', 
                    'complemento'=>'Vila Danin', 'bairro'=>'Telegrafo', 'cidade'=>'Belém', 'estado'=>'PA','cep'=>'66055080',
                    'nome_curso'=>'OS DIREITOS DAS PESSOAS PORTADORAS DE DEFICIÊNCIAS: PREVISÃO LEGAL E CONSTITUCIONAL CONSTITUCIONAL CONSTITUCIONAL CONSTITUCIONAL CONSTITUCIONAL CONSTITUCIONAL CONSTITUCIONAL CONSTITUCIONAL','carga_horaria'=>160, 'nota'=>100, 'rg'=>93235534253, 'data_cadastro_curso'=>'12/03/2018',
                    'data_aprovacao'=>'15/04/2018', 
                  'descricao'=>'
1 - INTRODUÇÃO
2 - RECURSOS EDUCACIONAIS ESPECIAIS
3 - CLASSIFICAÇÃO E CARACTERIZAÇÃO DOS ALUNOS EXCEPCIONAIS OU PORTADORES DE NECESSIDADES ESPECIAIS - Parte 1
4 - CLASSIFICAÇÃO E CARACTERIZAÇÃO DOS ALUNOS EXCEPCIONAIS OU PORTADORES DE NECESSIDADES ESPECIAIS - Parte 2
5 - CLASSIFICAÇÃO E CARACTERIZAÇÃO DOS ALUNOS EXCEPCIONAIS OU PORTADORES DE NECESSIDADES ESPECIAIS - Parte 3
6 - O QUE DIZ A PRINCIPAL LEI DA NAÇÃO QUANTO À EDUCAÇÃO ESPECIAL 
7 - A ESCOLA E A EDUCAÇÃO INCLUSIVA - PARTE 1
8 - A ESCOLA E A EDUCAÇÃO INCLUSIVA - PARTE 2
9 - O PAPEL DO GESTOR EM BUSCA DE UMA ESCOLA DEMOCRÁTICA - PARTE 1
10 - O PAPEL DO GESTOR EM BUSCA DE UMA ESCOLA DEMOCRÁTICA - PARTE 2
11 - EDUCAÇÃO INCLUSIVA
12 - BENEFÍCIOS DA EDUCAÇÃO INCLUSIVA PARA PESSOAS COM NEE EM CLASSES COMUNS
13 - A ESCOLA INCLUSIVA DO SÉCULO XXI: AS CRIANÇAS PODEM ESPERAR TANTO TEMPO?
14 - AVANÇANDO NAS PRÁTICAS INCLUSIVAS - PARTE 1
15 - AVANÇANDO NAS PRÁTICAS INCLUSIVAS - PARTE 2 
16 - INCLUSÃO OU EXCLUSÃO NA CRECHE - PARTE 1
17 - CUIDADO E EDUCAÇÃO NA CRECHE: ELEMENTOS INDISSOCIÁVEIS E POSSIBILITADORES DA INCLUSÃO DA CRIANÇA REMANEJADA - Parte 1
18 - CUIDADO E EDUCAÇÃO NA CRECHE: ELEMENTOS INDISSOCIÁVEIS E POSSIBILITADORES DA INCLUSÃO DA CRIANÇA REMANEJADA - PARTE 2
19 - INTEGRAÇÃO VERSUS INCLUSÃO
20 - ESCOLA INCLUSIVA É POSSÍVEL', 'codigo_autenticacao'=>'2017-484c-58c8'];
        


    $pdf->AddPage();
                $pdf->SetFont('Arial','B',7);
                $pdf->setXY("130","46");
                $pdf->setXY("130","50");
                $pdf->SetFont('Arial','B',12);
                $pdf->setXY("20","42");

                $pdf->Cell(0,5, utf8_decode("Endereçado"),0,1,' ');
                $pdf->EAN13(90,270,'123456789012');
                $pdf->SetFont('Arial','B',10);
                $pdf->setXY(23,48);
                $pdf->SetFont('Arial','',10);
                $pdf->MultiCell(85, 5, strtoupper ( utf8_decode( mb_strtoupper($RF['nome']) ))."\n". strtoupper ( utf8_decode( mb_strtoupper($RF['endereco']) ) ).", ".$RF['numero'].", ".utf8_decode( mb_strtoupper($RF['complemento']) )."\n".strtoupper (utf8_decode( mb_strtoupper($RF['bairro']) ) )."\n".strtoupper ( utf8_decode( mb_strtoupper($RF['cidade']) )).", ".strtoupper ( utf8_decode( mb_strtoupper($RF['estado']) ) )."\n"."CEP: ".strtoupper ($RF['cep']),0,'');

                $pdf->AddPage();

                $pdf->SetFont('Arial','',8);
                $pdf->setXY("23","71");//77,73
                $pdf->MultiCell(0,3,"Curso: " .strtoupper (utf8_decode( mb_strtoupper( $RF['nome_curso']))),0,' ');
                $pdf->setXY(23,77);//81

                if($RF['situacao']=="2")
                {
                    $pdf->MultiCell(120,4,"Aluno(a): " .strtoupper (utf8_decode(mb_strtoupper($RF['nome']) ))."\n".utf8_decode("Carga Horária: ".$RF['carga_horaria'])." Horas"."\n".utf8_decode("Tipo: Capacitação/ Atualização")."\n"."Aproveitamento: ".number_format($RF['nota'],1,',','.'),0,'');
                }
                else
                {
                    $pdf->MultiCell(120,3.2,"Curso: " .strtoupper (utf8_decode( mb_strtoupper($RF['nome_curso']) ))."\n".utf8_decode("Carga Horária: ".$RF['carga_horaria']." Horas")."\n".utf8_decode("Tipo: Capacitação/ Atualização"),0,'');
                }
                
                $rg='';
                if( !empty($RF['rg']) )
                {
                    $rg =  "RG: ".$RF['rg'];
                }
                
                $situacao = '';
                if($RF['situacao']=="2")
                {
                    $situacao = 'Situação: Aprovado';
                }

                
                $pdf->SetFont('Arial','',8);
                $pdf->setXY(158,77);//77
        
                $pdf->MultiCell(120,3.2,$rg."\n".utf8_decode('Período: ')."\n".date( "d/m/Y", strtotime($RF['data_cadastro_curso'])). utf8_decode(' à ').date( "d/m/Y", strtotime($RF['data_aprovacao']))."\n".
                        utf8_decode('Cert. Nº').$RF['id_historico']."\n".utf8_decode($situacao),0,'');
//                if( !empty($RF['rg']) )
//                {
//                    $pdf->Cell(0,5,"RG: " .strtoupper ($RF['rg']),0,1,'L');
//                }
//                $pdf->setXY(158,77);//81
//                $pdf->Cell(0,5,utf8_decode('Período: '),0,1,'L');
//                $pdf->setXY(158,81);//85
//                $pdf->Cell(0,5,date( "d/m/Y", strtotime($RF['data_cadastro_curso'])). utf8_decode(' à ').date( "d/m/Y", strtotime($RF['data_aprovacao'])),0,1,'L');
//                $pdf->setXY(158,85);//89
//                $pdf->Cell(0,5,utf8_decode('Cert. Nº').$RF['id_historico'],0,1,'L');
                $pdf->setXY(158,89);//93
        
//                if($RF['situacao']=="2")
//                {
//                    $pdf->Cell(0,5,utf8_decode('Situação: Aprovado'),0,1,'L');
//                }

                $pdf->Line(20, 94, 190, 94);//20, 102, 190, 102
                $pdf->Line(20, 94, 190, 94);//20, 102, 190, 102

                $pdf->setY(94);//103
                $pdf->SetFont('Arial','B',9);
                $pdf->setX(92);
                $pdf->Cell(0,5,utf8_decode('Conteúdo do Curso '));

                $pdf->setY(98);//114
                $pdf->SetFont('Arial','',8);
                $pdf->setX(25);

                $implode_descricao = str_replace("\n", "; ", $RF['descricao'] );

                $implode_descricao = utf8_decode($implode_descricao);
                $pdf->MultiCell(160, 3.5, $implode_descricao, 0,'J');

                $pdf->Line(20, 160, 191, 160);//20, 156, 200, 156
                $pdf->Line(20, 160, 191, 160);//20, 156, 200, 156

                $pdf->SetFont('Arial','',8);
                $texto = utf8_decode("Base Legal: Lei Nº 9394/96, Art 40, Resolução CNE/CEB Nº 6/2012, Art. 25º.") ;
                $texto_decreto = utf8_decode('Decreto 5154/2004, Art. 3º.');
                $texto_autenticar = utf8_decode("Autenticar em: https://imazoncursos.com.br/autenticacao");
                $text_atutenticacao = utf8_decode('Código de Autenticação: ').$RF['codigo_autenticacao'];
                $texto_eletronicamente = utf8_decode(' Certificado gerado eletronicamente.');
                
                $pdf->SetFont('Arial','',8);
                $pdf->setXY(20,160);
                $pdf->MultiCell(0, 3.5,$texto."\n".$texto_decreto."\n".$texto_autenticar."\n".$text_atutenticacao.$texto_eletronicamente,0,'L');
//                $pdf->setXY(20,160);
//                $pdf->MultiCell(0,5,'Autenticar em: https://imazoncursos.com.br/autenticacao',0,'L');
//                $pdf->setXY(20,164);
//                $pdf->MultiCell(0,5,utf8_decode('Código de Autenticação: ').$RF['codigo_autenticacao'],0,'L');
//                $pdf->setXY(20,168);
//                $pdf->MultiCell(0,5,utf8_decode('Certificado gerado eletronicamente.'),0,'L');

        $pdf->Output();
        }
        catch (Exception $e)
        {
            echo json_encode(['status'=>0, 'msg'=>'Problemas na geracao do arquivo de Lote, excecao: '.$e->getMessage()] );
        }
    }

    private function gera_lote_pdf($certificados, $id_lote, $nome_lote)
    {
        
        try
        {
            require_once realpath(__DIR__ . '/../..') . '/libraries/fpdf_v181/fpdf_protection.php';
            $pdf = new FPDF_Protection();
            
             $pdf->SetProtection( array('print','copy'), 'imazoncursos10910194000116');
             
             foreach ($certificados as $RF)
             {
                $pdf->AddPage();
                $pdf->SetFont('Arial','B',7);
                $pdf->setXY("130","46");
                $pdf->setXY("130","50");
                $pdf->SetFont('Arial','B',12);
                $pdf->setXY("20","42");

                $pdf->Cell(0,5, utf8_decode("Endereçado"),0,1,' ');
//                $pdf->EAN13(90,270, $RF['id_certificado']);
                $pdf->SetFont('Arial','B',10);
                $pdf->setXY(23,48);
                $pdf->SetFont('Arial','',10);
                $pdf->MultiCell(85, 5, strtoupper ( utf8_decode( mb_strtoupper($RF['nome_aluno']." (ID ". $RF['id_certificado'].")") ))."\n". strtoupper ( utf8_decode( mb_strtoupper($RF['endereco_aluno']) ) ).", ".$RF['numero'].", ".utf8_decode( mb_strtoupper($RF['complemento']) )."\n".strtoupper (utf8_decode( mb_strtoupper($RF['bairro']) ) )."\n".strtoupper ( utf8_decode( mb_strtoupper($RF['cidade']) )).", ".strtoupper ( utf8_decode( mb_strtoupper($RF['estado']) ) )."\n"."CEP: ".strtoupper ($RF['cep']),0,'');

                $pdf->AddPage();

                $pdf->SetFont('Arial','',8);
                $pdf->setXY("23","71");//77,73
                $pdf->MultiCell(0,3,"Curso: " .strtoupper (utf8_decode( mb_strtoupper( $RF['nome_curso']))),0,' ');
                $pdf->setXY(23,77);//81

                if($RF['situacao']=="2")
                {
                    $pdf->MultiCell(120,4,"Aluno(a): " .strtoupper (utf8_decode(mb_strtoupper($RF['nome_aluno']) ))."\n".utf8_decode("Carga Horária: ".$RF['carga_horaria'])." Horas"."\n".utf8_decode("Tipo: Capacitação/ Atualização")."\n"."Aproveitamento: ".number_format($RF['nota'],1,',','.'),0,'');
                }
                else
                {
                    $pdf->MultiCell(120,3.2,"Aluno(a): " .strtoupper (utf8_decode( mb_strtoupper($RF['nome_aluno']) ))."\n".utf8_decode("Carga Horária: ".$RF['carga_horaria']." Horas")."\n".utf8_decode("Tipo: Capacitação/ Atualização"),0,'');
                }
                
                $rg='';
                if( !empty($RF['rg']) )
                {
                    $rg =  "RG: ".$RF['rg'];
                }
                
                $situacao = '';
                if($RF['situacao']=="2")
                {
                    $situacao = 'Situação: Aprovado';
                }

                
                $pdf->SetFont('Arial','',8);
                $pdf->setXY(158,77);//77
        
                $pdf->MultiCell(120,3.2,$rg."\n".utf8_decode('Período: ')."\n".date( "d/m/Y", strtotime($RF['data_cadastro_curso'])). utf8_decode(' à ').date( "d/m/Y", strtotime($RF['data_aprovacao']))."\n".
                        utf8_decode('Cert. Nº').$RF['id_historico']."\n".utf8_decode($situacao),0,'');

        
                $pdf->Line(20, 94, 190, 94);//20, 102, 190, 102
                $pdf->Line(20, 94, 190, 94);//20, 102, 190, 102

                $pdf->setY(94);//103
                $pdf->SetFont('Arial','B',9);
                $pdf->setX(92);
                $pdf->Cell(0,5,utf8_decode('Conteúdo do Curso '));

                $pdf->setY(98);//114
                $pdf->SetFont('Arial','',8);
                $pdf->setX(25);

                $implode_descricao = str_replace("\n", "; ", $RF['descricao'] );

                $implode_descricao = utf8_decode($implode_descricao);
                $pdf->MultiCell(160, 3.5, $implode_descricao, 0,'J');

                $pdf->Line(20, 160, 191, 160);//20, 156, 200, 156
                $pdf->Line(20, 160, 191, 160);//20, 156, 200, 156

                $pdf->SetFont('Arial','',8);
                $texto = utf8_decode("Base Legal: Lei Nº 9394/96, Art 40, Resolução CNE/CEB Nº 6/2012, Art. 25º.") ;
                $texto_decreto = utf8_decode('Decreto 5154/2004, Art. 3º.');
                $texto_autenticar = utf8_decode("Autenticar em: https://imazoncursos.com.br/autenticacao");
                $text_atutenticacao = utf8_decode('Código de Autenticação: ').$RF['codigo_autenticacao'];
                $texto_eletronicamente = utf8_decode(' Certificado gerado eletronicamente.');
                
                $pdf->SetFont('Arial','',8);
                $pdf->setXY(20,160);
                $pdf->MultiCell(0, 3.5,$texto."\n".$texto_decreto."\n".$texto_autenticar."\n".$text_atutenticacao.$texto_eletronicamente,0,'L');
            }
        
            $data = date("Y-m-d H:i:s");
            $data_fomatada = date("d-m-Y_H:i:s", strtotime($data));
                
            $filename = "certificado_eletronico/Lote_".$id_lote."_".$nome_lote."_".$data_fomatada.".pdf";
                
            $this->cem->update_url_by_idLote($id_lote, $filename);
                
                
            $pdf->Output($filename,'F');

        }
        catch (Exception $e)
        {
            echo json_encode(['status'=>0, 'msg'=>'Problemas na geração do arquivo de Lote, exceção: '.$e->getMessage()] );
        }
    }
    
}