<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use Illuminate\Support\Collection;
use DB;

class personaController extends Controller
{
    public function index(Request $request){
        $id_usuario = $request->session()->get('usuario');
        $id_privilegio = $request->session()->get('privilegio');

        if($request->isMethod('post')){

            //notify()->success('Comunidad cargada exitosamente');
            notify()->success('Comunidad cargada exitosamente');
            $urls = $request->input('szona')."-".$request->input('scomunidad');
            return redirect()->route('bpersona', $urls);
        }

        return view('persona.buscar');
    }

    public function index2(Request $request){

        if($request->isMethod('post')){
            $cd = $request->input('nacionalidad')."-".$request->input('cedula');
            
            return redirect()->route('indexp3', $cd);
        }

        return view('persona.buscar2');
    }

    public function index3(Request $request, $cd){

        $persona = DB::select('SELECT * FROM persona WHERE cedula = ?', [$cd]);
        $persona1 = [];

        $datos = [
            "cedula" => $cd,
            "personal" => $persona1
        ];

        if (!empty($persona[0])) {
            # EXISTE...
            $persona1 = DB::select('SELECT jf.id AS jefe_id, p.cedula, p.nombre, p.telefono, p.correo, jf.propia, jf.calle, jf.direccion, c.zona, c.id AS id_com, c.nombre AS comunidad, pt.cedula AS pcedula, pt.nombre AS pnombre, pt.telefono AS ptelefono, p.no_participar FROM persona AS p INNER JOIN j_familia AS jf ON jf.id_persona = p.id INNER JOIN jefe_com AS jc ON jc.id = jf.id_jefe_com INNER JOIN persona AS pc ON pc.id = jc.id_persona INNER JOIN comunidad AS c ON c.id_jefe_com = jc.id LEFT JOIN propietario AS pr ON pr.id_familia = jf.id LEFT JOIN persona AS pt ON pt.id = pr.id_propietario WHERE p.cedula = ?', [$cd]);

            $datos = [
                "cedula" => $cd,
                "persona" => $persona[0],
                "personal" => $persona1
            ];
        } else {

        }

        notify()->success('Busqueda cargada exitosamente');
        return view('persona.registro2', $datos);
    }

    function buscar(Request $request, $id){
        $id_usuario = $request->session()->get('usuario');
        $id_privilegio = $request->session()->get('privilegio');

        $zona = explode("-", $id);
        $jefe = DB::select('SELECT p.cedula, p.nombre, p.telefono, c.nombre AS comunidad FROM comunidad AS c INNER JOIN jefe_com AS j ON j.id = c.id_jefe_com INNER JOIN persona AS p ON p.id = j.id_persona WHERE c.id = ?', [$zona[1]]);

        $tarifa = DB::select('SELECT * FROM zona_tabulador WHERE zona = ? AND estatus = ? ORDER BY trimestre ASC', [$zona[0], "SI"]);


        $datos = [
            "ZONA" => $zona[0],
            "COMUNIDAD" => !empty($jefe[0]->comunidad) ? $jefe[0]->comunidad : "ERROR",
            "IDCO" => $zona[1],
            "JCO" => !empty($jefe[0]->nombre) ? $jefe[0]->nombre : "ERROR",
            "JTE" => !empty($jefe[0]->telefono) ? $jefe[0]->telefono : "SIN TELÉFONO",
            "TA" => $tarifa
        ];

        return view('persona.registro', $datos);
    }

    function registrar2(Request $request){
        if($request->isMethod('post')){
            $tcedu = $request->input('tcedu');//CEDULA PRINCIPAL
            //$id_jefe_fa = $request->input('id_jefe_fa');//ID JEFE FAMILIA
            $tnombre = strtoupper($request->input('tnombre')); //NOMBRE JEFE FAMILIA
            $ttelefono = !empty($request->input('ttelefono')) ? $request->input('ttelefono') : "";//TELEFONO JEFE FAMILIA
            $tcorreo = !empty(strtoupper($request->input('tcorreo'))) ? strtoupper($request->input('tcorreo')) : "";//CORREO FAMILIA

            $noparticipar = $request->input('noparticipar');
            $nopa = 0;

            if ($noparticipar == "NO") {
                $nopa = 1;
            } else {
                $nopa = 0;
            }
            

            $p1 = DB::select('SELECT * FROM persona WHERE cedula = ?', [$tcedu]);
            $id_jefe_fa = 0;
            if (empty($p1[0])) {
                //NO EXISTE
                DB::insert('INSERT INTO persona (cedula, nombre, telefono, correo) VALUES (?, ?, ?, ?)', [$tcedu, $tnombre, $ttelefono, $tcorreo]);

                $id_jefe_fa = DB::getPdo()->lastInsertId();
            } else {
                //EXISTENTE
                DB::update('UPDATE persona SET nombre = ?, telefono = ?, correo = ?, no_participar = ? WHERE id = ?', [$tnombre, $ttelefono, $tcorreo, $nopa, $p1[0]->id]);

                $id_jefe_fa = $p1[0]->id;
            }

            notify()->success('Guardado exitosamente');
            return redirect()->route('indexp3', $tcedu);
        }
    }

    function registrar3(Request $request){
        if($request->isMethod('post')){
            $tcedu = $request->input('tcedu2');//CEDULA PRINCIPAL

            $ncasa = strtoupper($request->input('ncasa'));//NUMERO DE CASA
            $direccion = strtoupper($request->input('direccion'));//DIRECCION
            $pagos = $request->input('pagos');//LISTA DE PAGOS

            $scomunidad = $request->input('scomunidad');//comunidad

            //$esta = $request->input('esta');//LISTA DE BLOQUEADO
            //$esta2 = $request->input('esta2');//LISTA DE LIBERADO

            $p1 = DB::select('SELECT * FROM persona WHERE cedula = ?', [$tcedu]);
            $id_familia = 0;
            if (empty($p1[0])) {
                //NO EXISTE
                notify()->error('Error, intente de nuevo');
                return redirect()->route('indexp3', $tcedu);
            } else {
                //EXISTENTE
                $jefe_c = DB::select('SELECT j.id, p.cedula, p.nombre, p.telefono, c.nombre AS comunidad FROM comunidad AS c INNER JOIN jefe_com AS j ON j.id = c.id_jefe_com INNER JOIN persona AS p ON p.id = j.id_persona WHERE c.id = ?', [$scomunidad]);

                DB::insert('INSERT INTO j_familia (id_persona, id_jefe_com, propia, calle, direccion) VALUES (?, ?, ?, ?, ?)', [ $p1[0]->id, $jefe_c[0]->id, "SI", $ncasa, $direccion]);

                $id_familia = DB::getPdo()->lastInsertId();
            }

            $id___ = $request->session()->get('id_usuario');
            foreach ($pagos as $key => $value) {
                $pagos1 = DB::select('SELECT * FROM pagos WHERE id_familia = ? AND id_pagos = ?', [$id_familia,  $value]);

                if (empty($pagos1[0])) {
                    $fe = date("Y-m-d H:i:s");
                    DB::insert('INSERT INTO pagos (id_familia, id_pagos, fecha, estatus) VALUES (?, ?, ?, ?)', [$id_familia, $value, $fe, "AC"]);

                    $id__pagos = DB::getPdo()->lastInsertId();

                    DB::insert('INSERT INTO acciones (id_usuario, fecha, id_pagos) VALUES (?, ?, ?)', [$id___, $fe, $id__pagos]);


                }
            }

            notify()->success('Guardado exitosamente');
            return redirect()->route('indexp3', $tcedu);
        }
    }

    function registrar4(Request $request){
        if($request->isMethod('post')){
            $id_jefe_f = $request->input('jf');
            $esta = $request->input('esta');//LISTA DE BLOQUEADO
            $esta2 = $request->input('esta2');//LISTA DE LIBERADO
            $pagos = $request->input('pagos');//LISTA DE PAGOS
            $tcedu = $request->input('tcedu3');//CEDULA PRINCIPAL

            $id___ = $request->session()->get('id_usuario');
            if(empty($pagos)){
                //7501479
                if(!empty($esta)){
                    //dd($esta);
                    foreach ($esta as $key => $value1){
                        DB::update('UPDATE pagos SET estatus = ? WHERE id = ?', ["DE", $value1]);
                    }
                }

                if(!empty($esta2)){
                    //dd($esta);
                    foreach ($esta2 as $key => $value1){
                        $fe = date("Y-m-d H:i:s");
                        DB::update('UPDATE pagos SET fecha = ?, estatus = ? WHERE id = ?', [$fe, "AC", $value1]);
                    }
                }
                
            } else {
                foreach ($pagos as $key => $value) {
                    $pagos1 = DB::select('SELECT * FROM pagos WHERE id_familia = ? AND id_pagos = ?', [$id_jefe_f,  $value]);

                    if (empty($pagos1[0])) {
                        $fe = date("Y-m-d H:i:s");
                        DB::insert('INSERT INTO pagos (id_familia, id_pagos, fecha, estatus) VALUES (?, ?, ?, ?)', [$id_jefe_f, $value, $fe, "AC"]);

                        $id__pagos = DB::getPdo()->lastInsertId();

                        DB::insert('INSERT INTO acciones (id_usuario, fecha, id_pagos) VALUES (?, ?, ?)', [$id___, $fe, $id__pagos]);
                    }
                }
            }

            notify()->success('Guardado exitosamente');
            return redirect()->route('indexp3', $tcedu);
        }
    }

    function cambio_fecha(Request $request, $datos){
        $v = explode('--', $datos);

        $fe = date("H:i:s");
        DB::update('UPDATE pagos SET fecha = ? WHERE id = ?', [$v[1]." ".$fe, $v[0]]);

        $j = [];
        
        return json_encode($j);
    }

    function registrar(Request $request){
        $id_usuario = $request->session()->get('usuario');
        $id_privilegio = $request->session()->get('privilegio');

        if($request->isMethod('post')){

            $tcedu = $request->input('tcedu');//CEDULA PRINCIPAL
            //$id_jefe_fa = $request->input('id_jefe_fa');//ID JEFE FAMILIA
            $tnombre = strtoupper($request->input('tnombre')); //NOMBRE JEFE FAMILIA
            $ttelefono = !empty($request->input('ttelefono')) ? $request->input('ttelefono') : "";//TELEFONO JEFE FAMILIA
            $tcorreo = !empty(strtoupper($request->input('tcorreo'))) ? strtoupper($request->input('tcorreo')) : "";//CORREO FAMILIA

            $urls = $request->input('urls');//URL
            $zonas = explode("-", $urls);


            $pnacionalidad = $request->input('pnacionalidad');//NACIONALIDAD PROPIETARIO
            //$id_prop = $request->input('id_prop');//IDE PROPIETARIO
            $selectpro = $request->input('selectpro');//SELECCION SI/NO
            $pcedula = $request->input('pcedula');//CEDULA PROPIETARIO
            $ptelefono = !empty(strtoupper($request->input('ptelefono'))) ? strtoupper($request->input('ptelefono')) : "";//TELEFONO PROPIETARIO
            $pnombre = !empty(strtoupper($request->input('pnombre'))) ? strtoupper($request->input('pnombre')) : "";//NOMBRE PROPIETARIO


            $ncasa = strtoupper($request->input('ncasa'));//NUMERO DE CASA
            $direccion = strtoupper($request->input('direccion'));//DIRECCION
            $pagos = $request->input('pagos');//LISTA DE PAGOS

            $esta = $request->input('esta');//LISTA DE BLOQUEADO
            $esta2 = $request->input('esta2');//LISTA DE LIBERADO

            //dd($tnombre);

            /* DATOS JEFE FAMILIA */
            
            $p1 = DB::select('SELECT * FROM persona WHERE cedula = ?', [$tcedu]);

            $id_jefe_fa = 0;

            if (empty($p1[0])) {
                //NO EXISTE
                DB::insert('INSERT INTO persona (cedula, nombre, telefono, correo) VALUES (?, ?, ?, ?)', [$tcedu, $tnombre, $ttelefono, $tcorreo]);

                $id_jefe_fa = DB::getPdo()->lastInsertId();
            } else {
                //EXISTENTE
                DB::update('UPDATE persona SET telefono = ?, correo = ? WHERE id = ?', [$ttelefono, $tcorreo, $p1[0]->id]);

                $id_jefe_fa = $p1[0]->id;
            }

            /*CARGA JEFE FAMILIA*/
            $j_f = DB::select('SELECT * FROM j_familia WHERE id_persona = ?', [$id_jefe_fa]);

            $jefe_c = DB::select('SELECT j.id, p.cedula, p.nombre, p.telefono, c.nombre AS comunidad FROM comunidad AS c INNER JOIN jefe_com AS j ON j.id = c.id_jefe_com INNER JOIN persona AS p ON p.id = j.id_persona WHERE c.id = ?', [$zonas[1]]);

            $id_familia = 0;

            if (empty($j_f[0])){
                //NO EXISTE
                DB::insert('INSERT INTO j_familia (id_persona, id_jefe_com, propia, calle, direccion) VALUES (?, ?, ?, ?, ?)', [$id_jefe_fa, $jefe_c[0]->id, $selectpro, $ncasa, $direccion]);

                $id_familia = DB::getPdo()->lastInsertId();
            } else {
                //EXISTENTE
                $id_familia = $j_f[0]->id;
            }

            /**DATOS PROPIETARIO */
            if($selectpro == "NO"){
                $p2 = DB::select('SELECT * FROM persona WHERE cedula = ?', [$pnacionalidad."-".$pcedula]);

                $id_propietario = 0;

                if (empty($p2[0])) {
                    //NO EXISTE
                    DB::insert('INSERT INTO persona (cedula, nombre, telefono, correo) VALUES (?, ?, ?, ?)', [$pnacionalidad."-".$pcedula, $pnombre, $ptelefono, ""]);

                    $id_propietario = DB::getPdo()->lastInsertId();
                    
                } else {
                    //EXISTENTE
                    DB::update('UPDATE persona SET telefono = ?, correo = ? WHERE id = ?', [$ttelefono, $tcorreo, $p2[0]->id]);

                    $id_propietario = $p2[0]->id;
                }

                $p3 = DB::select('SELECT * FROM propietario WHERE id_familia = ?', [$id_familia]);

                if (empty($p3[0])) {
                    //NO EXISTE
                    DB::insert('INSERT INTO propietario (id_familia, id_propietario) VALUES (?, ?)', [$id_familia, $id_propietario]);
                    
                } else {
                    //EXISTENTE
                    DB::update('UPDATE propietario SET id_propietario = ? WHERE id = ?', [$id_propietario, $tcorreo, $p3[0]->id]);
                }

                DB::update('UPDATE j_familia SET propia = ? WHERE id = ?', [$selectpro, $id_familia]);
            }

            if(empty($pagos)){
                //7501479
                if(!empty($esta)){
                    //dd($esta);
                    foreach ($esta as $key => $value1){
                        DB::update('UPDATE pagos SET estatus = ? WHERE id = ?', ["DE", $value1]);
                    }
                }

                if(!empty($esta2)){
                    //dd($esta);
                    foreach ($esta2 as $key => $value1){
                        $fe = date("Y-m-d H:i:s");
                        DB::update('UPDATE pagos SET fecha = ?, estatus = ? WHERE id = ?', [$fe, "AC", $value1]);
                    }
                }
                
            } else {
                $id___ = $request->session()->get('id_usuario');

                foreach ($pagos as $key => $value) {
                    $pagos = DB::select('SELECT * FROM pagos WHERE id_familia = ? AND id_pagos = ?', [$id_familia,  $value]);

                    if (empty($pagos[0])) {
                        $fe = date("Y-m-d H:i:s");
                        DB::insert('INSERT INTO pagos (id_familia, id_pagos, fecha, estatus) VALUES (?, ?, ?, ?)', [$id_familia, $value, $fe, "AC"]);

                        $id__pagos = DB::getPdo()->lastInsertId();

                        DB::insert('INSERT INTO acciones (id_usuario, fecha, id_pagos) VALUES (?, ?, ?)', [$id___, $fe, $id__pagos]);


                    }
                    
                }
            }

            notify()->success('Guardado exitosamente');
            
            return redirect()->route('bpersona', $urls);
        } else {
            
            notify()->error('Error de ruta, intente de nuevo');
            return redirect()->route('indexp');
        }
    }

    function consultar(Request $request){
        $id_usuario = $request->session()->get('usuario');
        $id_privilegio = $request->session()->get('privilegio');

        if($request->isMethod('get') && $request->input('cedula')){
            $nacionalidad = $request->input('nacionalidad');
            $cedula = $request->input('cedula');
            $c = $request->input('c');

            $persona1 = DB::select('SELECT p.id, jf.id AS jefe_id, p.cedula, p.nombre, p.telefono, p.correo, jf.propia, jf.calle, jf.direccion, c.zona, c.id AS id_com, c.nombre AS comunidad, pt.cedula AS pcedula, pt.nombre AS pnombre, pt.telefono AS ptelefono FROM persona AS p INNER JOIN j_familia AS jf ON jf.id_persona = p.id INNER JOIN jefe_com AS jc ON jc.id = jf.id_jefe_com INNER JOIN persona AS pc ON pc.id = jc.id_persona INNER JOIN comunidad AS c ON c.id_jefe_com = jc.id LEFT JOIN propietario AS pr ON pr.id_familia = jf.id LEFT JOIN persona AS pt ON pt.id = pr.id_propietario WHERE p.cedula = ?', [$nacionalidad.'-'.$cedula]);

            if (!empty($persona1[0])) {

                $datos_p = array();

                foreach ($persona1 as $key => $value) {
                    $pagos = DB::select('SELECT p.id AS idpagos, zt.id, zt.trimestre, zt.tarifa, p.fecha FROM pagos AS p INNER JOIN zona_tabulador AS zt ON zt.id = p.id_pagos WHERE p.id_familia = ? AND p.estatus = ?', [$value->jefe_id, "AC"]);

                    $datos_p[$key] = array($value, $pagos);
                }

                notify()->success('Busqueda exitosa');

                $datos = [
                    'personas' => $datos_p,
                    'at' => !empty($c) ? $c : ""
                ];

                return view('persona.vista_datos', $datos);
            } else {
                notify()->error('USUARIO/PAGO NO REGISTRADO. Sí usted ya canceló el servicio, consulte dentro de 3 días hábiles');

                if (!empty($c)) {
                    return redirect()->route('index');
                } else {
                    return redirect()->route('consultar_cedula');
                }
                
            }
            
        }

        return view('persona.consultar');
    }

    function consultar3333(Request $request){
        $id_usuario = $request->session()->get('usuario');
        $id_privilegio = $request->session()->get('privilegio');

        if($request->isMethod('get') && $request->input('cedula')){
            $nacionalidad = $request->input('nacionalidad');
            $cedula = $request->input('cedula');
            $c = $request->input('c');

            $persona1 = DB::select('SELECT p.id, jf.id AS jefe_id, p.cedula, p.nombre, p.telefono, p.correo, jf.propia, jf.calle, jf.direccion, c.zona, c.id AS id_com, c.nombre AS comunidad, pt.cedula AS pcedula, pt.nombre AS pnombre, pt.telefono AS ptelefono FROM persona AS p INNER JOIN j_familia AS jf ON jf.id_persona = p.id INNER JOIN jefe_com AS jc ON jc.id = jf.id_jefe_com INNER JOIN persona AS pc ON pc.id = jc.id_persona INNER JOIN comunidad AS c ON c.id_jefe_com = jc.id LEFT JOIN propietario AS pr ON pr.id_familia = jf.id LEFT JOIN persona AS pt ON pt.id = pr.id_propietario WHERE p.cedula = ?', [$nacionalidad.'-'.$cedula]);

            if (!empty($persona1[0])) {

                $pagos = DB::select('SELECT p.id AS idpagos, zt.id, zt.trimestre, zt.tarifa, p.fecha FROM pagos AS p INNER JOIN zona_tabulador AS zt ON zt.id = p.id_pagos WHERE p.id_familia = ? AND p.estatus = ?', [$persona1[0]->jefe_id, "AC"]);

                notify()->success('Busqueda exitosa');

                $datos = [
                    'personas' => $persona1,
                    'pagos' => $pagos,
                    'at' => !empty($c) ? $c : ""
                ];

                return view('persona.vista_datos', $datos);
            } else {
                notify()->error('USUARIO/PAGO NO REGISTRADO. Sí usted ya canceló el servicio, consulte dentro de 3 días hábiles');

                if (!empty($c)) {
                    return redirect()->route('index');
                } else {
                    return redirect()->route('consultar_cedula');
                }
                
            }
            
        }

        return view('persona.consultar');
    }

    function consultar_pagos(Request $request, $id){
        $id = explode('--', $id);

        $j['tarifas'] = DB::select('SELECT * FROM zona_tabulador WHERE zona = ? AND estatus = ? ORDER BY trimestre ASC', [$id[1], "SI"]);

        $j['pagos'] = DB::select('SELECT * FROM pagos WHERE id_familia = ?', [$id[0]]);

        return json_encode($j);
    }

    function cambio_propietario(Request $request){
        if($request->isMethod('post')){
            $id_jefe_f = $request->input('jf1');

            $nacionalidadn = $request->input('nacionalidadn');
            $cedulan = $request->input('cedulan');

            $tnombren = strtoupper($request->input('tnombren'));
            $ttelefonon = strtoupper($request->input('ttelefonon'));
            $tcorreon = strtoupper($request->input('tcorreon'));

            $p = DB::select('SELECT * FROM persona WHERE cedula = ?', [$nacionalidadn.'-'.$cedulan]);

            if(!empty($p)){
                DB::update('UPDATE j_familia SET id_persona = ? WHERE id = ?', [$p[0]->id, $id_jefe_f]);
            } else {
                DB::insert('INSERT INTO persona (cedula, nombre, telefono, correo) VALUES (?, ?, ?, ?)', [$nacionalidadn.'-'.$cedulan, $tnombren, $ttelefonon, $tcorreon]);

                $id_persona = DB::getPdo()->lastInsertId();

                DB::update('UPDATE j_familia SET id_persona = ? WHERE id = ?', [$id_persona, $id_jefe_f]);
            }

            notify()->success('Traspaso de propiedad exitosamente');
            return redirect()->route('indexp2');
        }
    }

    function siremi_aseo_consulta(Request $request){
        $usuario = $request->session()->get('usuario');

        $usuario = explode('-', $usuario);

        $redirectUrl = url('/consultar?nacionalidad='.$usuario[0].'&cedula='.$usuario[1].'&c=C');

        return redirect()->away($redirectUrl);
    }

    
    

}
