From 2a1adde81fad84f4f8011cba6d9ea28f440ec171 Mon Sep 17 00:00:00 2001 From: sergiomarquez778 Date: Thu, 27 Mar 2025 13:11:23 -0600 Subject: [PATCH] Agregar agregue el campo para llenar una solicitud de prestamo --- app/Http/Controllers/PrestamoController.php | 122 +++++++++-- app/Models/prestamo.php | 13 ++ ...25_03_27_174121_create_prestamos_table.php | 8 + ...183714_add_columneliminado_toprestamos.php | 28 +++ resources/views/layouts/dashboard.blade.php | 2 +- resources/views/prestamos.blade.php | 130 ++++++++++++ .../views/prestamosCrearEditar.blade.php | 189 ++++++++++++++++++ 7 files changed, 472 insertions(+), 20 deletions(-) create mode 100644 database/migrations/2025_03_27_183714_add_columneliminado_toprestamos.php diff --git a/app/Http/Controllers/PrestamoController.php b/app/Http/Controllers/PrestamoController.php index da28249..7c4cfbe 100644 --- a/app/Http/Controllers/PrestamoController.php +++ b/app/Http/Controllers/PrestamoController.php @@ -2,17 +2,37 @@ namespace App\Http\Controllers; -use App\Models\prestamo; +use App\Models\Prestamo; // Asegúrate de que el modelo esté correctamente nombrado use Illuminate\Http\Request; +use App\Exports\PrestamosExport; // Asegúrate de tener esta clase de exportación +use Maatwebsite\Excel\Facades\Excel; +use PDF; class PrestamoController extends Controller { /** * Display a listing of the resource. */ - public function index() + public function index(Request $request) { - // + $busqueda = $request->busqueda; + + if ($busqueda) { + // Busca en la columna 'nombre_solicitante' de la tabla 'prestamos' + $prestamos = Prestamo::where('nombre_solicitante', 'LIKE', "%{$busqueda}%") + ->where('eliminado', 0) + ->get(); + + if ($prestamos->isEmpty()) { + return redirect()->route('prestamo.index') + ->with('error', 'No existe ningún préstamo con el solicitante "' . $busqueda . '". Por favor, inténtalo de nuevo.'); + } + } else { + // Si no hay búsqueda, mostrar todos los préstamos + $prestamos = Prestamo::where('eliminado', 0)->get(); + } + + return view('prestamos', ['prestamos' => $prestamos]); } /** @@ -20,7 +40,7 @@ class PrestamoController extends Controller */ public function create() { - // + return view('prestamosCrearEditar', ['prestamo' => null]); // No se necesita pasar préstamos } /** @@ -28,38 +48,102 @@ class PrestamoController extends Controller */ public function store(Request $request) { - // - } + // Validación de datos + $request->validate([ + 'nombre_solicitante' => 'required|string|max:255', + 'destino' => 'required|string|max:255', + 'fecha_hora_salida' => 'required|date', + 'fecha_hora_llegada' => 'required|date', + 'motivo' => 'required|string|max:255', + 'domicilio' => 'required|string|max:255', + 'numero_personas' => 'required|integer', + + ]); + + // Crea un nuevo préstamo + $prestamo = new Prestamo(); + $prestamo->nombre_solicitante = $request->nombre_solicitante; + $prestamo->destino = $request->destino; + $prestamo->fecha_hora_salida = $request->fecha_hora_salida; + $prestamo->fecha_hora_llegada = $request->fecha_hora_llegada; + $prestamo->motivo = $request->motivo; + $prestamo->domicilio = $request->domicilio; + $prestamo->numero_personas = $request->numero_personas; + $prestamo->chofer = $request->has('chofer') ? 1 : 0; // Manejo del checkbox + $prestamo->eliminado = 0; // Marca como activo por defecto + $prestamo->save(); + return redirect()->route('prestamos.index')->with('success', 'Préstamo creado exitosamente.'); + } /** - * Display the specified resource. + * Show the form for editing the specified resource. */ - public function show(prestamo $prestamo) + public function edit($id) { - // + $prestamo = Prestamo::findOrFail($id); // Busca el préstamo por ID + return view('prestamosCrearEditar', ['prestamo' => $prestamo]); // Pasa el préstamo a la vista } /** - * Show the form for editing the specified resource. + * Update the specified resource in storage. + */ + public function update(Request $request, $id) +{ + // Validación de datos + $request->validate([ + 'nombre_solicitante' => 'required|string|max:255', + 'destino' => 'required|string|max:255', + 'fecha_hora_salida' => 'required|date', + 'fecha_hora_llegada' => 'required|date', + 'motivo' => 'required|string|max:255', + 'domicilio' => 'required|string|max:255', + 'numero_personas' => 'required|integer', + + + ]); + + $prestamo = Prestamo::findOrFail($id); // Encuentra el préstamo por ID + $prestamo->nombre_solicitante = $request->nombre_solicitante; // Actualiza el nombre del solicitante + $prestamo->destino = $request->destino; // Actualiza el destino + $prestamo->fecha_hora_salida = $request->fecha_hora_salida; // Actualiza la fecha y hora de salida + $prestamo->fecha_hora_llegada = $request->fecha_hora_llegada; // Actualiza la fecha y hora de llegada + $prestamo->motivo = $request->motivo; // Actualiza el motivo + $prestamo->domicilio = $request->domicilio; // Actualiza el domicilio + $prestamo->numero_personas = $request->numero_personas; // Actualiza el número de personas + $prestamo->chofer = $request->has('chofer') ? 1 : 0; // Manejo del checkbox + $prestamo->eliminado = 0; // Cambia el estado a activo si se está editando + $prestamo->save(); // Guarda los cambios + + return redirect()->route('prestamos.index')->with('success', 'Préstamo actualizado correctamente.'); +} + + /** + * Remove the specified resource from storage. */ - public function edit(prestamo $prestamo) + public function destroy($id) { - // + $prestamo = Prestamo::findOrFail($id); // Encuentra el préstamo por ID + $prestamo->eliminado = 1; // Cambia el estado a inactivo + $prestamo->save(); // Guarda los cambios + + return redirect()->route('prestamos.index')->with('success', 'Préstamo inactivado correctamente.'); } /** - * Update the specified resource in storage. + * Export to Excel. */ - public function update(Request $request, prestamo $prestamo) + public function exportExcel() { - // + return Excel::download(new PrestamosExport, 'prestamos.xlsx'); } /** - * Remove the specified resource from storage. + * Export to PDF. */ - public function destroy(prestamo $prestamo) + public function exportPDF() { - // + $prestamos = Prestamo::where('eliminado', 0)->get(); + $pdf = PDF::loadView('exports.prestamos-pdf', ['prestamos' => $prestamos]); + return $pdf->download('prestamos.pdf'); } -} +} \ No newline at end of file diff --git a/app/Models/prestamo.php b/app/Models/prestamo.php index d763045..beab890 100644 --- a/app/Models/prestamo.php +++ b/app/Models/prestamo.php @@ -8,4 +8,17 @@ use Illuminate\Database\Eloquent\Model; class prestamo extends Model { use HasFactory; +protected $table = 'prestamos'; + +protected $fillable = [ + 'nombre_solicitante', + 'destino', + 'fecha_hora_salida', + 'fecha_hora_llegada', + 'motivo', + 'domicilio', + 'numero_personas', + 'chofer', + +]; } diff --git a/database/migrations/2025_03_27_174121_create_prestamos_table.php b/database/migrations/2025_03_27_174121_create_prestamos_table.php index 1428b4e..2ceb81f 100644 --- a/database/migrations/2025_03_27_174121_create_prestamos_table.php +++ b/database/migrations/2025_03_27_174121_create_prestamos_table.php @@ -13,6 +13,14 @@ return new class extends Migration { Schema::create('prestamos', function (Blueprint $table) { $table->id(); + $table->string('nombre_solicitante'); + $table->string('destino'); + $table->dateTime('fecha_hora_salida'); + $table->dateTime('fecha_hora_llegada'); + $table->text('motivo'); + $table->string('domicilio'); + $table->integer('numero_personas'); + $table->boolean('chofer')->default(false); // Opción de sí (true) o no (false) $table->timestamps(); }); } diff --git a/database/migrations/2025_03_27_183714_add_columneliminado_toprestamos.php b/database/migrations/2025_03_27_183714_add_columneliminado_toprestamos.php new file mode 100644 index 0000000..239f581 --- /dev/null +++ b/database/migrations/2025_03_27_183714_add_columneliminado_toprestamos.php @@ -0,0 +1,28 @@ +boolean('eliminado')->default(false); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('prestamos', function (Blueprint $table) { + $table->dropColumn('eliminado'); + }); + } +}; diff --git a/resources/views/layouts/dashboard.blade.php b/resources/views/layouts/dashboard.blade.php index 01bd240..fee27d3 100644 --- a/resources/views/layouts/dashboard.blade.php +++ b/resources/views/layouts/dashboard.blade.php @@ -73,7 +73,7 @@ class="pl-4 mt-2 space-y-1 text-sm">
  • - + Nuevo Préstamo diff --git a/resources/views/prestamos.blade.php b/resources/views/prestamos.blade.php index e69de29..1ed2f24 100644 --- a/resources/views/prestamos.blade.php +++ b/resources/views/prestamos.blade.php @@ -0,0 +1,130 @@ +@extends('layouts.dashboard') + +@section('content') +
    + + @if(session('success')) + + @endif + + @if(session('error')) + + @endif + +
    + +
    +

    Gestión de Préstamos

    +
    + + + + +
    +
    + + +
    +
    +
    + +
    + +
    +
    + + @if(request('busqueda')) + + Limpiar + + @endif +
    +
    + + +
    + + + + + + + + + + + + + + + + + + @foreach($prestamos as $prestamo) + + + + + + + + + + + + + + + + + @endforeach + +
    IDNombre SolicitanteDestinoFecha y Hora SalidaFecha y Hora LlegadaMotivoDomicilioNumero de personasChoferEstadoAcciones
    {{ $prestamo->id }}{{ $prestamo->nombre_solicitante }}{{ $prestamo->destino }}{{ $prestamo->fecha_hora_salida }}{{ $prestamo->fecha_hora_llegada }}{{ $prestamo->motivo }}{{ $prestamo->domicilio }}{{ $prestamo->numero_perosonas}}{{ $prestamo->cofer }} + + + +
    + @csrf + @method('DELETE') + + + +
    +
    +
    +
    +
    + + +@endsection + + + diff --git a/resources/views/prestamosCrearEditar.blade.php b/resources/views/prestamosCrearEditar.blade.php index e69de29..f067557 100644 --- a/resources/views/prestamosCrearEditar.blade.php +++ b/resources/views/prestamosCrearEditar.blade.php @@ -0,0 +1,189 @@ +@extends('layouts.dashboard') + +@section('content') +
    +
    +
    +
    + +
    +

    + {{ isset($prestamo) ? 'Editar Préstamo' : 'Nuevo Préstamo' }} +

    +
    + +
    +
    + + + @if($errors->any()) +
    +
    + +
    +
      + @foreach($errors->all() as $error) +
    • {{ $error }}
    • + @endforeach +
    +
    +
    +
    + @endif + + +
    + @csrf + @if(isset($prestamo)) + @method('PUT') + @endif + +
    + +
    + + + @error('nombre_solicitante') +

    {{ $message }}

    + @enderror +
    + + +
    + + + @error('destino') +

    {{ $message }}

    + @enderror +
    + + +
    + + + @error('fecha_hora_salida') +

    {{ $message }}

    + @enderror +
    + + +
    + + + @error('fecha_hora_llegada') +

    {{ $message }}

    + @enderror +
    + + +
    + + + @error('motivo') +

    {{ $message }}

    + @enderror +
    + + +
    + + + @error('domicilio') +

    {{ $message }}

    + @enderror +
    + + +
    + + + @error('numero_personas') +

    {{ $message }}

    + @enderror +
    + + +
    + +
    + + +
    + + Cancelar + + +
    +
    +
    +
    +
    +
    +
    +@endsection +