<?php

namespace App\Http\Controllers;

use App\Models\Docentes;
use Illuminate\Http\Request;
use Maatwebsite\Excel\Facades\Excel;
use Barryvdh\DomPDF\Facade\Pdf;
use App\Exports\DocentesExport;

class DocentesController extends Controller
{
    /**
     * Display a listing of the resource.
     */
    public function index(Request $request)
    {
        $busqueda = $request->busqueda;

        if ($busqueda) {
            // Busca docentes que coincidan con el término de búsqueda
            $docentes = Docentes::where(function($query) use ($busqueda) {
                $query->where('nombre', 'LIKE', "%{$busqueda}%")
                    ->orWhere('correo', 'LIKE', "%{$busqueda}%")
                    ->orWhere('tipo_licencia', 'LIKE', "%{$busqueda}%")
                    ->orWhere('materia', 'LIKE', "%{$busqueda}%");
            })->get();

            if ($docentes->isEmpty()) {
                return redirect()->route('docentes.index')
                    ->with('error', 'No existe ningún docente con el término "' . $busqueda . '". Por favor, inténtalo de nuevo.');
            }
        } else {
            // Si no hay búsqueda, mostrar todos los docentes
            $docentes = Docentes::all();
        }

        return view('docentes', ['docentes' => $docentes]);
    }

    /**
     * Show the form for creating a new resource.
     */
    public function create()
    {
        $docentes = Docentes::all();
        return view('docentesCrearEditar',['docentes'=>$docentes]);
    }

    /**
     * Store a newly created resource in storage.
     */
    public function store(Request $request)
    {
        $docente = new Docentes($request->all());
        $docente->save();
        return redirect()->route('docentes.index')->with('success', 'Docente creado exitosamente.');
    }
    /**
     * Display the specified resource.
     */
    public function show(Docentes $docente)
    {

    }

    /**
     * Show the form for editing the specified resource.
     */
    public function edit($id)
    {
        $docentes = Docentes::all();
        $docente = Docentes::find($id);
        return view('docentesCrearEditar', ['docentes' => $docentes, 'docente' => $docente]) ;
    }

    /**
     * Update the specified resource in storage.
     */
    public function update(Request $request, $id)
    {
        $docente = Docentes::find($id);
        $docente->fill($request->all());
        $docente->save();
        return redirect()->route('docentes.index')->with('success', 'Docente actualizado correctamente');
    }

    /**
     * Remove the specified resource from storage.
     */
    public function destroy($id)
    {
        $docente = Docentes::find($id);
        $docente->status = false;
        $docente->save();
        return redirect()->route('docentes.index')->with('success', 'Docente desactivado correctamente');
    }

    public function toggleStatus($id)
    {
        $docente = Docentes::find($id);
        $docente->status = !$docente->status;
        $docente->save();

        $mensaje = $docente->status ? 'Docente activado correctamente' : 'Docente desactivado correctamente';
        return redirect()->route('docentes.index')->with('success', $mensaje);
    }

    public function export($format)
    {
        $docentes = Docentes::all();

        switch($format) {
            case 'csv':
                return Excel::download(new DocentesExport($docentes), 'docentes.csv', \Maatwebsite\Excel\Excel::CSV);
            case 'excel':
                return Excel::download(new DocentesExport($docentes), 'docentes.xlsx');
            case 'pdf':
                return PDF::loadView('exports.docentes', ['docentes' => $docentes])
                         ->download('docentes.pdf');
            default:
                return redirect()->back()->with('error', 'Formato no soportado');
        }
    }
}