<?php

namespace App\Http\Controllers;

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


class EucaristiaController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
    	if($request->ajax()){
    		$eucaristias = Eucaristia::with(['church','sacramento','sacerdote','parroco','iglesia_bautismo','estado','municipio']);
    		if($request->has('fdesde') && $request->fdesde!=""){
        		$tmp = explode("-",$request->fdesde);
        		$fd = $tmp[2] . "-" . $tmp[1] . "-" . $tmp[0];
				$eucaristias= $eucaristias->where('fecha','>=',$fd[0]);
        	}
        	if($request->has('fhasta') && $request->fdesde!=""){
        		$tmp = explode("-",$request->fhasta);
        		$fh = $tmp[2] . "-" . $tmp[1] . "-" . $tmp[0];
        		$eucaristias= $eucaristias->where('fecha','<=',$fh);	
        	}
        	if($request->has('estado') && $request->estado!=""){
        		$eucaristias= $eucaristias->where('estado_id','<=',$request->estado);		
        	}
        	if($request->has('ciudad') && $request->ciudad!=""){
        		$eucaristias= $eucaristias->where('municipio_id','<=',$request->municipio);			
        	}
        	if($request->has('sacerdote') && $request->sacerdote!=""){
        		$eucaristias= $eucaristias->where('sacerdote_id','<=',$request->sacerdote);				
        	}
        	if($request->has('parroco') && $request->parroco!=""){
        		$eucaristias= $eucaristias->where('parroco_id','<=',$request->parroco);					
        	}
        	/*if($request->has('nombre') && $request->nombre!=""){
        		$tmp = explode(" ",trim($request->nombre));
				if(count($tmp)==1){
					$nombre = trim(strtolower($tmp[0]));
					$eucaristias= $eucaristias->whereRaw("lower(nombre) like (?)", ["%{$nombre}%"]);
				}else if(count($tmp)== 2){
					$nombre = trim(strtolower($tmp[0]));
					$ap = trim(strtolower($tmp[1])); 
					$eucaristias= $eucaristias->whereRaw("lower(nombre) like (?) and  lower(apellido_paterno) like (?)",["%{$nombre}%","%{$ap}%"]);
				}else{
					$nombre = trim(strtolower($tmp[0]));
					$ap = trim(strtolower($tmp[1])); 
					$am = trim(strtolower($tmp[2])); 
					$eucaristias= $eucaristias->whereRaw("lower(nombre) like (?) and  lower(apellido_paterno) like (?) and  lower(apellido_materno) like (?)",["%{$nombre}%","%{$ap}%","%{$am}%"]);
				}        		
        	}
        	if($request->has('fecha') && $request->fecha!=""){
        		$f = $request->fecha;
        		$eucaristias= $eucaristias->whereRaw("YEAR(fecha) = ?",[$f]);	
        	}*/
        	$eucaristias = $eucaristias->get();

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

    public function store(Request $request){
        try{
			$postData = $request->all();
			
			$church =  Church::where('current',true)->first();

			$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'];
            }

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

            $b = new Eucaristia();
            $b->libro = $postData['libro']; 
            $b->folio = $postData['folio']; 
            $b->partida = $postData['partida']; 
			$b->church_id = $church->id;
			$b->sacramento_id = 2;
			$f = explode("T",$postData['fecha']);
			$b->fecha = $f[0];
			$b->nombre = $postData['nombre'];
			$b->apellido_paterno = $postData['apellido_paterno'];
			$b->apellido_materno = $postData['apellido_materno'];

			$b->nombre_padre = $postData['nombre_padre'];
			$b->apellido_paterno_padre = $postData['apellido_paterno_padre'];
			$b->apellido_materno_padre = $postData['apellido_materno_padre'];

			$b->nombre_madre = $postData['nombre_madre'];
			$b->apellido_paterno_madre = $postData['apellido_paterno_madre'];
			$b->apellido_materno_madre = $postData['apellido_materno_madre'];

			$b->nombre_padrino = $postData['nombre_padrino'];
			$b->apellido_paterno_padrino = $postData['apellido_paterno_padrino'];
			$b->apellido_materno_padrino = $postData['apellido_materno_padrino'];

			$b->nombre_madrina = $postData['nombre_madrina'];
			$b->apellido_paterno_madrina = $postData['apellido_paterno_madrina'];
			$b->apellido_materno_madrina = $postData['apellido_materno_madrina'];

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

			$b->church_bautismo_id = $parroquia;
			$fb = explode("T",$postData['fecha_bautismo']);
			$b->fecha_bautismo = $fb[0];
			$b->municipio_id = $municipio;
			$b->estado_id = $postData['estado'];
			$b->libro_bautismo = $postData['libro_bautismo'];
			$b->folio_bautismo = $postData['folio_bautismo'];
			$b->partida_bautismo = $postData['partida_bautismo'];

            $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'];
            }

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

            $b = Eucaristia::findOrFail($id);
            $b->libro = $postData['libro']; 
            $b->folio = $postData['folio']; 
            $b->partida = $postData['partida']; 
			//$b->church_id = $postData['church'];
			$f = explode("T",$postData['fecha']);
			$b->fecha = $f[0];
			$b->nombre = $postData['nombre'];
			$b->apellido_paterno = $postData['apellido_paterno'];
			$b->apellido_materno = $postData['apellido_materno'];

			$b->nombre_padre = $postData['nombre_padre'];
			$b->apellido_paterno_padre = $postData['apellido_paterno_padre'];
			$b->apellido_materno_padre = $postData['apellido_materno_padre'];

			$b->nombre_madre = $postData['nombre_madre'];
			$b->apellido_paterno_madre = $postData['apellido_paterno_madre'];
			$b->apellido_materno_madre = $postData['apellido_materno_madre'];

			$b->nombre_padrino = $postData['nombre_padrino'];
			$b->apellido_paterno_padrino = $postData['apellido_paterno_padrino'];
			$b->apellido_materno_padrino = $postData['apellido_materno_padrino'];

			$b->nombre_madrina = $postData['nombre_madrina'];
			$b->apellido_paterno_madrina = $postData['apellido_paterno_madrina'];
			$b->apellido_materno_madrina = $postData['apellido_materno_madrina'];

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

			$b->church_bautismo_id = $parroquia;
			$fb = explode("T",$postData['fecha_bautismo']);
			$b->fecha_bautismo = $fb[0];
			$b->municipio_id = $municipio;
			$b->estado_id = $postData['estado'];
			$b->libro_bautismo = $postData['libro_bautismo'];
			$b->folio_bautismo = $postData['folio_bautismo'];
			$b->partida_bautismo = $postData['partida_bautismo'];

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

    public function destroy($id){
    	try{
            $b = Eucaristia::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'];
		
		$e =  Eucaristia::find($id);
		
		$path = base_path().'/public/formato/eucaristia.pdf';
		$output = base_path().'/public/downloads/eucaristia_'. $e->id .'.pdf';
		$pdf->AddPage();
		$pdf->setSourceFile($path);
		$tplIdx = $pdf->importPage(1);
		$pdf->useTemplate($tplIdx, 0, 0);
		
		$pdf->SetFont('Times', '', 12);

		$pdf->SetXY(92, 40);
		$pdf->Write(0, utf8_decode($e->nombre . " " . $e->apellido_paterno . " " . $e->apellido_materno));

		$tmp = explode("-",$e->fecha);
		$pdf->SetXY(90, 54);
		$pdf->Write(0, $tmp[2]);
		$pdf->SetXY(122, 54);
		$pdf->Write(0, $months[intval($tmp[1])]);
		$pdf->SetXY(174, 54);
		$pdf->Write(0, $tmp[0]);

		$pdf->SetXY(102, 61);
		$pdf->Write(0, utf8_decode($e->church->name));

		$pdf->SetXY(97, 68);
		$pdf->Write(0, utf8_decode($e->nombre_padre . " " . $e->apellido_paterno_padre . " " . $e->apellido_materno_padre));

		$pdf->SetXY(96, 75);
		$pdf->Write(0, utf8_decode($e->nombre_madre . " " . $e->apellido_paterno_madre . " " . $e->apellido_materno_madre));

		$pdf->SetXY(96, 82);
		$pdf->Write(0, utf8_decode($e->nombre_padrino . " " . $e->apellido_paterno_padrino . " " . $e->apellido_materno_padrino));

		$pdf->SetXY(97, 89);
		$pdf->Write(0, utf8_decode($e->nombre_madrina . " " . $e->apellido_paterno_madrina . " " . $e->apellido_materno_madrina));

		$pdf->SetXY(125, 96);
		$pdf->Write(0, utf8_decode($e->iglesia_bautismo->name));

		$pdf->SetXY(82, 103);
		$pdf->Write(0, utf8_decode($e->municipio->name .", " . $e->estado->name));

		$pdf->SetXY(134, 104);
		$pdf->Write(0, $e->libro_bautismo);

		$pdf->SetXY(154, 104);
		$pdf->Write(0, $e->folio_bautismo);

		$pdf->SetXY(174, 104);
		$pdf->Write(0, $e->partida_bautismo);


		$pdf->SetXY(40, 98);
		$pdf->Write(0, $e->libro);

		$pdf->SetXY(40, 105);
		$pdf->Write(0, $e->folio);

		$pdf->SetXY(42, 112);
		$pdf->Write(0, $e->partida);

		$pdf->SetXY(82, 115);
		$pdf->Write(0, utf8_decode($e->sacerdote->first_name .' ' . $e->sacerdote->last_name));

		$pdf->SetXY(142, 115);
		if(isset($e->parroco)){
			$pdf->Write(0, utf8_decode($e->parroco->first_name .' ' . $e->parroco->last_name));
		}else{
			$pdf->Write(0, utf8_decode($e->sacerdote->first_name .' ' . $e->sacerdote->last_name));			
		}


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

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

}