<?php

namespace App\Http\Controllers;

use App\Matrimonio;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use App\User;
use App\Church;
use App\Municipio;

class MatrimonioController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        if($request->ajax()){
            $matrimonios = Matrimonio::with(['church','sacramento','sacerdote','parroco','estado','municipio']);

            if($request->has('fdesde') && $request->fdesde!=""){
                $tmp = explode("-",$request->fdesde);
                $fd = $tmp[2] . "-" . $tmp[1] . "-" . $tmp[0];
                $matrimonios= $matrimonios->where('fecha','>=',$fd[0]);
            }
            if($request->has('fhasta') && $request->fdesde!=""){
                $tmp = explode("-",$request->fhasta);
                $fh = $tmp[2] . "-" . $tmp[1] . "-" . $tmp[0];
                $matrimonios= $matrimonios->where('fecha','<=',$fh);  
            }
            if($request->has('estado') && $request->estado!=""){
                $matrimonios= $matrimonios->where('estado_id','<=',$request->estado);     
            }
            if($request->has('ciudad') && $request->ciudad!=""){
                $matrimonios= $matrimonios->where('municipio_id','<=',$request->municipio);           
            }
            if($request->has('sacerdote') && $request->sacerdote!=""){
                $matrimonios= $matrimonios->where('sacerdote_id','<=',$request->sacerdote);               
            }
            if($request->has('parroco') && $request->parroco!=""){
                $matrimonios= $matrimonios->where('parroco_id','<=',$request->parroco);                   
            }

            /*if($request->has('nombre_esposo') && $request->nombre_esposo!=""){
                $tmp = explode(" ",trim($request->nombre_esposo));
                if(count($tmp)==1){
                    $nombre = trim(strtolower($tmp[0]));
                    $matrimonios= $matrimonios->whereRaw("lower(nombre_esposo) like (?)", ["%{$nombre}%"]);
                }else if(count($tmp)== 2){
                    $nombre = trim(strtolower($tmp[0]));
                    $ap = trim(strtolower($tmp[1])); 
                    $matrimonios= $matrimonios->whereRaw("lower(nombre_esposo) like (?) and  lower(esposo_apellido_paterno) like (?)",["%{$nombre}%","%{$ap}%"]);
                }else{
                    $nombre = trim(strtolower($tmp[0]));
                    $ap = trim(strtolower($tmp[1])); 
                    $am = trim(strtolower($tmp[2])); 
                    $matrimonios= $matrimonios->whereRaw("lower(nombre_esposo) like (?) and  lower(esposo_apellido_paterno) like (?) and  lower(esposo_apellido_materno) like (?)",["%{$nombre}%","%{$ap}%","%{$am}%"]);
                }               
            }

            if($request->has('nombre_esposa') && $request->nombre_esposa!=""){
                $tmp = explode(" ",trim($request->nombre_esposa));
                if(count($tmp)==1){
                    $nombre = trim(strtolower($tmp[0]));
                    $matrimonios= $matrimonios->whereRaw("lower(nombre_esposa) like (?)", ["%{$nombre}%"]);
                }else if(count($tmp)== 2){
                    $nombre = trim(strtolower($tmp[0]));
                    $ap = trim(strtolower($tmp[1])); 
                    $matrimonios= $matrimonios->whereRaw("lower(esposa_nombre) like (?) and  lower(esposa_apellido_paterno) like (?)",["%{$nombre}%","%{$ap}%"]);
                }else{
                    $nombre = trim(strtolower($tmp[0]));
                    $ap = trim(strtolower($tmp[1])); 
                    $am = trim(strtolower($tmp[2])); 
                    $matrimonios= $matrimonios->whereRaw("lower(esposa_nombre) like (?) and  lower(esposa_apellido_paterno) like (?) and  lower(esposa_apellido_materno) like (?)",["%{$nombre}%","%{$ap}%","%{$am}%"]);
                }               
            }
            if($request->has('fecha') && $request->fecha!=""){
                $tmp = explode("-",$request->fecha); //30-08-2019
                $fb = $tmp[2] . "-" . $tmp[1] . "-" . $tmp[0];
                $matrimonios= $matrimonios->whereRaw("fecha = ?",[$fb]); 
            }*/
            $matrimonios = $matrimonios->get();

            return response()->json($matrimonios);
        }else{
            return redirect()->route('dashboard');
        }
    }

    public function store(Request $request){
        try{
            $postData = $request->all();

            $municipio = null;
            if(array_key_exists("otro",$postData) && $postData['otro']!=""){
                $tmp = ucfirst(strtolower(trim($postData['otro'])));
                $existe = Municipio::where('name',$tmp)->get();
                if(count($existe)==0){
                    $m = new Municipio();
                    $m->name = $tmp;
                    $m->save();
                    $municipio = $m->id;
                }else{
                    $municipio = $existe->first()->id;
                }
            }else{
                $municipio = $postData['municipio'];
            }

            $church =  Church::where('current',true)->first();

            $b = new Matrimonio();
            $b->libro = $postData['libro']; 
            $b->folio = $postData['folio']; 
            $b->partida = $postData['partida']; 
			$b->church_id = $postData['church'];
			$b->sacramento_id = 2;
			$f = explode("T",$postData['fecha']);
			$b->fecha = $f[0];
			$b->esposo_nombre = $postData['esposo_nombre'];
			$b->esposo_apellido_paterno = $postData['esposo_apellido_paterno'];
			$b->esposo_apellido_materno = $postData['esposo_apellido_materno'];

            $b->esposa_nombre = $postData['esposa_nombre'];
            $b->esposa_apellido_paterno = $postData['esposa_apellido_paterno'];
            $b->esposa_apellido_materno = $postData['esposa_apellido_materno'];

            $b->nombre_t1 = $postData['nombre_t1'];
            $b->apellido_paterno_t1 = $postData['apellido_paterno_t1'];
            $b->apellido_materno_t1 = $postData['apellido_materno_t1'];

            $b->nombre_t2 = $postData['nombre_t2'];
            $b->apellido_paterno_t2 = $postData['apellido_paterno_t2'];
            $b->apellido_materno_t2 = $postData['apellido_materno_t2'];

			$b->sacerdote_id = $postData['sacerdote'];
            $b->parroco_id = $postData['parroco'];
            
            $b->estado_id = $postData['estado'];
            $b->municipio_id = $municipio;

            $b->save();
            return response()->json($b);
        }catch (\Exception $e) {
    		return response()->json("Error no se pudo guardar", 400);
    	}
    }

    public function update(Request $request,$id){
    	try{
            $postData = $request->all();

            $municipio = null;
            if(array_key_exists("otro",$postData) && $postData['otro']!=""){
                $tmp = ucfirst(strtolower(trim($postData['otro'])));
                $existe = Municipio::where('name',$tmp)->get();
                if(count($existe)==0){
                    $m = new Municipio();
                    $m->name = $tmp;
                    $m->save();
                    $municipio = $m->id;
                }else{
                    $municipio = $existe->first()->id;
                }
            }else{
                $municipio = $postData['municipio'];
            }

            $church =  Church::where('current',true)->first();

            $b = Matrimonio::findOrFail($id);
            $b->libro = $postData['libro']; 
            $b->folio = $postData['folio']; 
            $b->partida = $postData['partida']; 
            $b->church_id = $postData['church'];
            $b->sacramento_id = 2;
            $f = explode("T",$postData['fecha']);
            $b->fecha = $f[0];
            $b->esposo_nombre = $postData['esposo_nombre'];
            $b->esposo_apellido_paterno = $postData['esposo_apellido_paterno'];
            $b->esposo_apellido_materno = $postData['esposo_apellido_materno'];

            $b->esposa_nombre = $postData['esposa_nombre'];
            $b->esposa_apellido_paterno = $postData['esposa_apellido_paterno'];
            $b->esposa_apellido_materno = $postData['esposa_apellido_materno'];

            $b->nombre_t1 = $postData['nombre_t1'];
            $b->apellido_paterno_t1 = $postData['apellido_paterno_t1'];
            $b->apellido_materno_t1 = $postData['apellido_materno_t1'];

            $b->nombre_t2 = $postData['nombre_t2'];
            $b->apellido_paterno_t2 = $postData['apellido_paterno_t2'];
            $b->apellido_materno_t2 = $postData['apellido_materno_t2'];

            $b->sacerdote_id = $postData['sacerdote'];
            $b->parroco_id = $postData['parroco'];

            $b->estado_id = $postData['estado'];
            $b->municipio_id = $municipio;

            $b->save();
            return response()->json($b);
        }catch (\Exception $e) {
    		return response()->json(null, 400);
    	}
    }

    public function destroy($id){
    	try{
            $b = Matrimonio::findOrFail($id);
            $b->delete();
            return response()->json(true);
        }catch(\Exception $e){
            return response()->json(null, 400);
        }
    }

    public function print(Request $request,$id){
		require_once(app_path(). '/library/fpdi.php');
		$pdf = new \FPDI();

        $months = ['Enero','Febreo','Marzo','Abril','Mayo','Junio','Julio','Agosto','Septiembre','Octubre','Noviembre','Diciembre'];
		$cp =  Church::where('current',true)->first();
		$m =  Matrimonio::find($id);
		
		$path = base_path().'/public/formato/matrimonio.pdf';
		$output = base_path().'/public/downloads/matrimonio_'. $m->id .'.pdf';
		$pdf->AddPage();
		$pdf->setSourceFile($path);
		$tplIdx = $pdf->importPage(1);
		$pdf->useTemplate($tplIdx, 0, 0);

        $pdf->SetFont('Times', '', 12);

        $pdf->SetXY(110, 41);
        $pdf->Write(0, utf8_decode($m->church->name));

        $tmp = explode("-",$m->fecha);
        $pdf->SetXY(90, 49);
        $pdf->Write(0, $tmp[2]);
        $pdf->SetXY(123, 49);
        $pdf->Write(0, $months[intval($tmp[1])]);
        $pdf->SetXY(175, 49);
        $pdf->Write(0, $tmp[0]);

        $pdf->SetXY(143, 57);
        $pdf->Write(0, utf8_decode($cp->name));

        $pdf->SetXY(90, 64);
        $pdf->Write(0, utf8_decode($m->esposo_nombre . " " . $m->esposo_apellido_paterno . " " . $m->esposo_apellido_materno));

        $pdf->SetXY(95, 72);
        $pdf->Write(0, utf8_decode($m->esposa_nombre . " " . $m->esposa_apellido_paterno . " " . $m->esposa_apellido_materno));

        $pdf->SetXY(124, 80);
        $pdf->Write(0, utf8_decode($m->nombre_t1 . " " . $m->apellido_paterno_t1 . " " . $m->apellido_materno_t1));

        $pdf->SetXY(102, 88);
        $pdf->Write(0, utf8_decode($m->nombre_t2 . " " . $m->apellido_paterno_t2 . " " . $m->apellido_materno_t2));

        $pdf->SetXY(129, 96);
        $pdf->Write(0, utf8_decode($m->sacerdote->first_name .' ' . $m->sacerdote->last_name));

        $pdf->SetXY(146, 111);
        if(isset($m->parroco)){
            $pdf->Write(0, utf8_decode($m->parroco->first_name .' ' . $m->parroco->last_name));
        }else{
            $pdf->Write(0, utf8_decode($m->sacerdote->first_name .' ' . $m->sacerdote->last_name));
        }

        $pdf->SetXY(42, 94);
        $pdf->Write(0, $m->libro);

        $pdf->SetXY(42, 101);
        $pdf->Write(0, $m->folio);

        $pdf->SetXY(43, 108);
        $pdf->Write(0, $m->partida);


		$out = $pdf->Output($output,'F');
		

		$headers = [
			'Content-Type' => 'application/pdf',
		];
		$fileName = "matrimonio_".$m->id.".pdf";
		return response()->download($output,$fileName,$headers);
		
	}

}