<?php
/**
 * Created by PhpStorm.
 * User: JairDev
 * Date: 30/08/2018
 * Time: 5:34 PM
 */

class Radicar extends GD_Controller
{
    private $respuesta;
    private $error_rta;

    function __construct()
    {
        parent::__construct();
        $this->auth();
        $this->load->database();
        $this->load->model('radicacion/radicar_model', 'bdRadicar');
        $this->error_rta = GD_Controller::HTTP_OK;
    }

    public function paginar_post()
    {
        $this->load->helper('paginador_helper');
        $cmps = ['ide_radicado as pk', 'cod_radicado', 'fecha_documento_radicado as fec_doc_rad',
            'numero_documento_radicado as nro_doc',
            'asunto_documento as asunto', 'fecha_radicado', 'nom_tercero_origen as dts_tercero', 'nom_unidad_administrativa_origen as nom_off_origen',
            'nom_unidad_administrativa_destino as nom_off_destino', 'ide_tipo_radicado as tipo_rad', 'nom_funcionario_destino nom_fun_destino',
            'nom_funcionario_origen nom_fun_origen', 'nom_tipo_documental as tipo_doc', 'fecha_documento_radicado as fec_doc'
        ];

        $nroPagina = $this->input->post('nro_pagina');
        $campoOrden = $this->input->post('cmp_orden');
        $orden = $this->input->post('orden');
        $parambus = $this->input->post('parambus');

        $filTc = $this->input->post('tiptc'); //categoria del radicado, 1=entrada, 2=salida 3 interno
        $filTd = $this->input->post('tiptd'); //Tipo docto radicado

        $orden = $orden == 'true' ? 'DESC' : 'ASC';
        $condicion = "activo_radicado = 'S'";

        if (!empty($filTc)) {
            $condicion .= ' and ide_tipo_radicado=' . (int)$filTc;
        }
        if (!empty($filTd)) {
            $condicion .= ' and ide_tipo_documental=' . (int)$filTd;
        }


        $data = paginar_todos('rad_radicados', $cmps, null, $parambus, $condicion,
            $nroPagina, 15, $campoOrden, $orden);
        unset($data['sql']);
        $datax = [];
        foreach ($data['rows'] as $reg) {
            $reg['dts_tercero'] = json_decode($reg['dts_tercero']);
            $datax[] = $reg;
        }
        $data['rows'] = $datax;
        $this->respuesta = $data;// json_decode(json_encode($data), true);
        $this->respuesta($this->respuesta, $this->error_rta); // OK (200) being the HTTP respuesta code
    }

    public function saveEntrada_put()
    {
        $data = $this->put();
        $this->load->library('form_validation');
        $data['ide_tipo_radicado'] = 1;
        $data['activo_radicado'] = 'S';
        $data['nom_usuario'] = $this->certAut->us;

        $data['fecha_registro'] = date('YYYY-mm-dd H:m:s');
        $data['ide_anexo_a'] = null;


        $this->form_validation->set_data($data);
        if ($this->form_validation->run('rad_entrada_put')) {

            $radicado = $this->bdRadicar->set_data($data);
            $this->respuesta = $radicado->insertEntrada();

            if ($this->respuesta['error']) {
                $this->error_rta = GD_Controller::HTTP_INTERNAL_SERVER_ERROR;
            }

        } else {
            $this->error_rta = GD_Controller::HTTP_BAD_REQUEST;
            $this->respuesta = [
                'error' => $this->form_validation->error_array(),
                'msg' => 'Hay errores en la información del formulario',
                'errores' => [],
            ];
        }

        $this->respuesta($this->respuesta, $this->error_rta); // OK (200) being the HTTP respuesta code
    }

    public function saveSalida_put()
    {
        $data = $this->put();
        $this->load->library('form_validation');
        $data['ide_tipo_radicado'] = 2;
        $data['activo_radicado'] = 'S';
        $data['nom_usuario'] = $this->certAut->us;

        $data['fecha_registro'] = date('YYYY-mm-dd H:m:s');
        $data['ide_anexo_a'] = null;

        $this->form_validation->set_data($data);
        if ($this->form_validation->run('rad_entrada_put')) {

            $radicado = $this->bdRadicar->set_data($data);
            $this->respuesta = $radicado->insertEntrada();

            if ($this->respuesta['error']) {
                $this->error_rta = GD_Controller::HTTP_INTERNAL_SERVER_ERROR;
            }

        } else {
            $this->error_rta = GD_Controller::HTTP_BAD_REQUEST;
            $this->respuesta = [
                'error' => $this->form_validation->error_array(),
                'msg' => 'Hay errores en la información del formulario',
                'errores' => [],
            ];
        }

        $this->respuesta($this->respuesta, $this->error_rta); // OK (200) being the HTTP respuesta code
    }

    public function printPlanillaDia_get($tipo, $cat)
    {
        $dataPaquetePrint = [
            'numero_hoja' => '',
            'cod_radicado_inicio' => '',
            'cod_radicado_final' => '',
            'ide_radicado_inicio' => null,
            'ide_radicado_final' => null,
            'ide_tipo_radicado' => (int)$cat,
            'fecha_impresion' => date('Y-m-d H:i:s')
        ];

        $this->load->model('radicacion/paquete_impresion_model', 'tb_impresion');
        if ($tipo == 'list' || $tipo == 'ver') {
            $datos = $this->bdRadicar->listPrintRadicados($cat);

            $datax = [];
            $nroReg = count($datos['data']);

            if ($nroReg > 0 && $tipo != 'ver') {
                $dataPaquetePrint['nro_resgistros'] = $nroReg;
                $dataPaquetePrint['cod_radicado_inicio'] = $datos['data'][0]['nro_rad'];
                $dataPaquetePrint['cod_radicado_final'] = $datos['data'][$nroReg - 1]['nro_rad'];
                $dataPaquetePrint['ide_radicado_inicio'] = $datos['data'][0]['pk'];
                $dataPaquetePrint['ide_radicado_final'] = $datos['data'][$nroReg - 1]['pk'];

                $pqImpreso = $this->tb_impresion->set_data($dataPaquetePrint);
                $regImp = $pqImpreso->insert();
            }

            foreach ($datos['data'] as $reg) {
                $reg['dts_tercero'] = json_decode($reg['dts_tercero']);
                $datax[] = $reg;
            }
            $datos['data'] = $datax;
            $this->respuesta = $datos;

            $this->respuesta($this->respuesta, $this->error_rta); // OK (200) being the HTTP respuesta code
        } else {
            $this->load->library('pdf');
            $pdf = new Pdf('L', PDF_UNIT, PDF_PAGE_FORMAT, true, 'UTF-8', false);
            $pdf->titulo = "";
            $pdf->encabezado = $this->load->view("encabezados_reps/pdf_carta_h", null, true);
            // set margins
            $pdf->SetMargins(PDF_MARGIN_LEFT, 35, PDF_MARGIN_RIGHT);
            $pdf->SetHeaderMargin(5);
            $pdf->SetFooterMargin(PDF_MARGIN_FOOTER);
            $pdf->setImageScale(PDF_IMAGE_SCALE_RATIO);

            // set some language-dependent strings (optional)
            if (@file_exists(dirname(__FILE__) . '/lang/eng.php')) {
                require_once(dirname(__FILE__) . '/lang/eng.php');
                $pdf->setLanguageArray($l);
            }
            $datos = $this->bdRadicar->listPrintRadicados($cat);

            $nroReg = count($datos['data']);
            if ($nroReg > 0 && $tipo != 'ver') {
                $dataPaquetePrint['nro_resgistros'] = $nroReg;
                $dataPaquetePrint['cod_radicado_inicio'] = $datos['data'][0]['nro_rad'];
                $dataPaquetePrint['cod_radicado_final'] = $datos['data'][$nroReg - 1]['nro_rad'];
                $dataPaquetePrint['ide_radicado_final'] = $datos['data'][$nroReg - 1]['pk'];
                $dataPaquetePrint['ide_radicado_inicio'] = $datos['data'][0]['pk'];


                $pqImpreso = $this->tb_impresion->set_data($dataPaquetePrint);
                $regImp = $pqImpreso->insert();
            }

            $html = $this->load->view('reportes_radicados/print_planilla_pdf', $datos, true);

            $pdf->AddPage('L');
            $pdf->SetAutoPageBreak(TRUE, PDF_MARGIN_BOTTOM);
            $pdf->writeHTML($html, true, false, true, false, '');
            $pdf->lastPage();

            $nombrePdf = 'Lista Radicados_' . date('Ymd_Hi') . '.pdf';

            $pdf->Output($nombrePdf, 'I');
        }
    }

    #permite optener la iformacion del documento radicado.
    public function radicado_get()
    {
        $codigo = (int)$this->uri->segment(4);

        $data = $this->bdRadicar->getRadicado($codigo);
        #var_dump($data);
        $data['data']['nom_tercero_origen'] = json_decode($data['data']['nom_tercero_origen']);
        $data = json_decode(json_encode($data, JSON_NUMERIC_CHECK), true);
        $this->respuesta = $data;
        if ($this->respuesta['error']) {
            $this->error_rta = GD_Controller::HTTP_INTERNAL_SERVER_ERROR;
        }

        $this->respuesta($this->respuesta, $this->error_rta); // OK (200) being the HTTP respuesta code

    }

    public function verArchivo_get()
    {
        $codigo = (int)$this->uri->segment(4);

        $data = $this->bdRadicar->getNombreArchivo($codigo);

        #var_dump($data);
        #var_dump($_SERVER);
        #echo APPPATH;
        $ruta = ROOTPATH . DIRECTORY_SEPARATOR . CLOUD_FILE . DIRECTORY_SEPARATOR . $data['nom_arc'];

        if (!file_exists($ruta)) {
            $ruta = '';
        }
        $this->output
            ->set_content_type('application/pdf')
            ->set_output(file_get_contents($ruta));

    }


}