<?php

namespace Predial\Http\Controllers;

use Illuminate\Http\Request;
use Predial\Predio;
use Predial\PropietarioPredio;
use Predial\FacturaPredial;
use Predial\PagoPredial;
use Illuminate\Support\Facades\DB;
use DateTime;
use PDF;
use Predial\ParametrizacionAnio;


class CertificadoCInfController extends Controller
{
    public function index(){
        return view('informesPredial.generarCertificadoC');
    }

    public function view_inf(Request $request){

        $param = ParametrizacionAnio::find(session()->get('anno'));
        $valParamA= $param->id_unico;
        $facturaUl  = DB::table('gr_factura_predial')
        ->select('parametrizacionanno')                               
        ->orderBy('id_unico', 'desc')
        ->take(1)
        ->first();
        $valParamU= $facturaUl->parametrizacionanno;
        if ($valParamA<$valParamU) {
            $valAnnoPa= $param->anno;
            $annoPu  = DB::table('gf_parametrizacion_anno')
            ->select('anno')                               
            ->Where('id_unico', '=', $valParamU)
            ->first();
            $valAnnoPU= $annoPu->anno;
            flash()->overlay("No se pueden generar certificados con parametrización año anterior ($valAnnoPa) a la ya creada ($valAnnoPU).", "Información");
            return back();
        }else{

        $anno = session()->get('anno');     
        $vige = ParametrizacionAnio::find($anno); 
    	$NomS = ($request->txtNom);
        $id = decrypt($request->txtId);
        $estado = 3;

    	$compania = DB::table('gf_tercero as ter')
                            ->select( DB::raw('UPPER(ter.razonsocial) as razonsocial'),
                                      DB::raw('UPPER(ti.nombre) as tipodoc'),
                                      DB::raw('CONCAT_WS(" - ",ter.numeroidentificacion,ter.digitoverficacion) as numeroi'),
                                      'dir.direccion', 'tel.valor as telefono','ter.ruta_logo as logo'
                              )
                            ->leftJoin('gf_tipo_identificacion as ti' ,'ter.tipoidentificacion', '=', 'ti.id_unico')
                            ->leftJoin('gf_direccion as dir', 'dir.tercero', '=', 'ter.id_unico')
                            ->leftJoin('gf_telefono as tel', 'tel.tercero', '=', 'ter.id_unico')
                            ->where('ter.id_unico', '=', session()->get('compania'))
                            ->first();

        $anno = session()->get('anno');     
        $vige = ParametrizacionAnio::find($anno);       
            
        $propi = "0";    
        echo $predio = DB::table('gp_tercero_predio as tp')
                        ->select('p.nombres as nomp',
                                 'p.numero as niden',
                                 'pr.direccion as dir'  , 
                                 'ba.nombre as nomb',
                                 'pr.codigo_catastral as codc',
                                 'ti.nombre as nomtd',
                                 'tpr.nombre as nomtp',
                                 'pr.id_unico as pidp'
                                )
                        ->leftjoin('gp_predio1 as pr', 'tp.predio', '=', 'pr.id_unico')
                        ->leftjoin('gr_propietarios as  p', 'tp.tercero', '=', 'p.id_unico')
                        ->leftjoin('gp_barrio as ba', 'pr.barrio', '=', 'ba.id_unico')
                        ->leftjoin('gp_tipo_predio as tpr', 'pr.tipo_predio', '=', 'tpr.id_unico')
                        ->leftjoin('gf_tipo_identificacion as ti', 'p.tipoidentificacion', '=', 'ti.id_unico')
                        ->where('pr.id_unico', '=', $id)
                        ->where('pr.estado', '!=', $estado)
                        ->where('tp.propietario', '=', $propi)
                        ->get();
        
        if(count($predio)<=0){
            flash()->overlay('El Predio no aparece inscrito en el catastro vigente del municipio ', 'Información');
            return back();
        }else{

            foreach ($predio as $p) {
                $nump = (int) $p->niden;

                $avaluo = DB::table('gr_avaluo as ava')
                            ->select('ava.valor as v')
                            ->where('ava.anno', '=', $vige->anno)
                            ->where('ava.predio', '=', $id)
                            ->get();
                
                if(count($avaluo)<=0){
                    flash()->overlay('No se puede expedir el Certifiacdo Catastral, debido a que no existe avaluo para la vigencia '.$vige->anno, 'Información');
                    return back();
                }else{
                    foreach ($avaluo as $l) {
                        $A = $l->v;
                    }

                    $hoy = date('d-m-Y');
                    $hoy = trim($hoy, '"');
                    $fecha_divi = explode("-", $hoy);
                    $anioA = $fecha_divi[2];
                    $mes = (int)$fecha_divi[1];
                    $dia = $fecha_divi[0];
                    $nombremes = ['no','Enero','Febrero','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];

                    $mesA= $nombremes[$mes];
                    $paz = "Certificado Catastral";
                    $firma = DB::table('gf_responsable_documento as rd')
                                ->select(DB::raw('IF(CONCAT_WS(" ", 
                                                        t.nombreuno, 
                                                        t.nombredos, 
                                                        t.apellidouno, 
                                                        t.apellidodos
                                                    ) = " ",
                                                    t.razonsocial,
                                                    CONCAT_WS(" ",
                                                        t.nombreuno,
                                                        t.nombredos,
                                                        t.apellidouno,
                                                        t.apellidodos
                                                    )
                                                ) as res'),
                                                'tr.nombre as nomt',
                                                'tre.nombre as ntro')
                                ->leftjoin('gf_tercero as t','rd.tercero', '=', 't.id_unico')
                                ->leftjoin('gf_tipo_documento as td','rd.tipodocumento', '=', 'td.id_unico')
                                ->leftjoin('gf_tipo_responsable as tr','rd.tiporesponsable', '=', 'tr.id_unico')
                                ->leftjoin('gg_tipo_relacion as  tre','rd.tipo_relacion', '=', 'tre.id_unico')
                                ->where('td.nombre', '=', $paz)
                                ->get();

                    $cooprop = DB::table('gp_predio1 as p')
                                            ->select('pr.nombres as prop'
                                                    )
                                            ->leftjoin('gp_tercero_predio as tp', 'tp.predio', '=', 'p.id_unico')
                                            ->leftjoin('gr_propietarios as  pr', 'tp.tercero', '=', 'pr.id_unico')
                                            ->where('p.id_unico', '=', $id)
                                            ->where('tp.propietario', '!=', '0')
                                            ->get();

                    $area = DB::table('gr_area as a')
                                ->select('a.valor as va',
                                        'ua.nombre as noma',
                                        'a.area_construida as mtc',
                                        'a.area_metros as amts')
                                ->leftjoin('gr_unidad_area as ua', 'a.unidadarea','=', 'ua.id_unico')
                                ->where('a.predio', '=', $id)
                                ->where('a.anio', '=', $vige->anno)
                                ->get();
                    $valA ="0";
                    $nomU = "";
                    $mts = "0";
                    $mt = "0";
                    foreach ($area as $ar) {
                        $valA = $ar->va;
                        $nomU = $ar->noma;
                        $mts =  $ar->mtc;
                        $mt = $ar->amts;
                    }

                    foreach ($firma as $f) {
                        
                        $rest = substr($f->nomt, -1);
                        if($rest == "A" || $rest == "a" || $rest == "AS" || $rest == "as"){
                            $art = "LA";
                        }else{
                            $art = "EL";
                        }

                        $cargo = strtoupper($f->nomt);
                                    
                    }   

                     $B = $vige->anno;
                    echo $consec = DB::table('gr_consecutivo_cert as cc')
                                ->select(DB::raw('MAX(cc.id_unico) as idcc'))
                                ->select('cc.consecutivo as co')
                                ->where('cc.tipo', '=', 2)
                                ->where('cc.consecutivo', 'like', "$B%")
                                ->get();
                    
                    if(count($consec)<=0){

                        $cons = $vige->anno."0001";
                    }else{

                        foreach ($consec as $C) {
                            $E = substr($C->co,-4);   
                        }

                        $num = (int) $E;
                        $num = $num + 1;

                        $m = substr($C->co,-8,4);
                        $cant = strlen($num);
                        if($cant < 4){
                            $c="";
                            for($i = $cant; $i <  4; $i++){
                                $c = $c."0";
                            }

                            $cons = $m.$c.$num;
                        }else{
                            $cons = $m.$num;
                        }
                        


                    }
                    $In = DB::table('gr_consecutivo_cert')
                            ->insert(['consecutivo'=> $cons, 'predio'=>$id,'nombre'=>$NomS,'tipo'=>2]);                 

                    $view  = \View::make('informesPredial.infCertificadoC', compact(['compania','predio','cooprop','anioA','mesA','dia','firma','vige','art','nump','cargo','A','valA','nomU','mts','mt','cons']))->render();
                    $pdf   = \App::make('dompdf.wrapper');
                    //$pdf->setPaper("letter","landscape");
                    $pdf->loadHTML($view);
                    return $pdf->stream("Certifiacdo.pdf");
                }            
            }
        }
     }
    }
}
