<?php

namespace App\Http\Controllers;

use App\Carrera;
use App\Encabezadopie;
use App\Especialidad;
use App\Exports\EspecialidadExport;
use App\Planestudios;
use Barryvdh\DomPDF\Facade\Pdf;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;

class EspecialidadController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function index(Request $request)
    {
        $data = $request->all();
        $esp = "";
        if (count($data) > 0) {
            $esp = Especialidad::where('status_esp', '1');
            if ($data['nombre'] != null) {
                $esp = $esp->where('nombre_esp', 'like', '%' . $data['nombre'] . '%');
            }
            if ($data['clave'] != null) {
                $esp = $esp->where('clave_esp', 'like', '%' . $data['clave'] . '%');
            }
            if ($data['planest'] != null) {
                $esp = $esp->whereHas('planestudio', function ($query) use ($data) {
                    $query = $query->where('cve_planest', $data['planest']);
                });
            }
            $esp = $esp->get();
        } else {
            $esp = Especialidad::with('planestudio')->where('status_esp', '1')->get();
        }
        $planest = Planestudios::where('status_planest', '1')->get();

        return view('especialidad.listar', compact('esp', 'data', 'planest'));
    }

    /**
     * Show the form for creating a new resource.
     *
     * @return \Illuminate\Http\Response
     */
    public function create()
    {
        $planest = Planestudios::where('status_planest', '1')->get();
        return view('especialidad.nuevo', compact('planest'));
    }

    /**
     * Store a newly created resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return \Illuminate\Http\Response
     */
    public function store(Request $request)
    {
        $data = $request->all();
        Especialidad::create(['nombre_esp' => $data['nombre'], 'clave_esp' => $data['clave'], 'fechaIni_esp' => $data['fecha_inicio'], 'fechaFin_esp' => $data['fecha_fin'], 'status_esp' => '1', 'cve_planest' => $data['planE']]);

        return response()->json(['estado' => 'Exito', 'mensaje' => 'Especialidad guardada con exito!']);
    }

    /**
     * Display the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function show($id)
    {
        $esp = Especialidad::with('planestudio')->where('cve_esp', $id)->first();
        return view('especialidad.consultar', compact('esp'));
    }

    /**
     * Show the form for editing the specified resource.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function edit($id)
    {
        $planest = Planestudios::where('status_planest', '1')->get();
        $esp = Especialidad::with('planestudio')->where('cve_esp', $id)->first();
        return view('especialidad.modificar', compact('esp', 'planest'));
    }

    /**
     * Update the specified resource in storage.
     *
     * @param  \Illuminate\Http\Request  $request
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function update(Request $request, $id)
    {
        $esp = Especialidad::findOrFail($id);
        $esp->nombre_esp = $request->nombre;
        $esp->clave_esp = $request->clave;
        $esp->fechaIni_esp = $request->fecha_inicio;
        $esp->fechaFin_esp = $request->fecha_fin;
        $esp->cve_planest = $request->planE;
        $esp->save();
        return response()->json(['estado' => 'Exito', 'mensaje' => 'Especialidad actualizada con exito!']);
    }

    /**
     * Remove the specified resource from storage.
     *
     * @param  int  $id
     * @return \Illuminate\Http\Response
     */
    public function destroy($id)
    {
        $esp = Especialidad::find($id);
        $esp->status_esp = '0';
        $esp->save();

        return response()->json(['estado' => 'Exito', 'mensaje' => 'Especialidad eliminada con exito!']);
    }

    public function exportExcel(Request $request)
    {
        $data = $request->all();
        $nombre = $data['nombre'];
        $clave = $data['clave'];
        $planest = $data['planest'];
        if ($nombre == null) {
            $nombre = "";
        }
        if ($clave == null) {
            $clave = "";
        }
        if ($planest == null) {
            $planest = "";
        }

        return Excel::download(new EspecialidadExport($nombre, $clave, $planest), 'especialidades.xlsx');
    }


    public function exportPdf(Request $request)
    {
        $data = $request->all();
        $nom = $data['nombre'];
        $clav = $data['clave'];
        $planE = $data['planest'];
        $pdf = "";

        $enca = Encabezadopie::max('cve_encpie');
        $enca = Encabezadopie::where('cve_encpie', $enca)->first();
        if ($nom == "" && $clav == "" && $planE == "") {
            $pdf = Pdf::loadView('especialidad.tablapdf', ['esp' => Especialidad::with('planestudio')->where('status_esp', '1')->get(), 'enca' => $enca]);
        } else {
            $esp = Especialidad::where('status_esp', '1');
            if ($nom != "") {
                $esp = $esp->where('nombre_esp', 'like', '%' . $nom . '%');
            }
            if ($clav != "") {
                $esp = $esp->where('clave_esp', 'like', '%' . $clav . '%');
            }
            if ($planE != "") {
                $esp = $esp->where('cve_planest', $planE);
                $esp = $esp->with("planestudio");
            }
            $esp = $esp->get();
            $pdf = Pdf::loadView('especialidad.tablapdf', ['esp' => $esp, 'enca' => $enca]);
        }

        return $pdf->download('especialidad.pdf');
    }
}
