From 1f1c5780d4d2d3484c897626791230147b26ac18 Mon Sep 17 00:00:00 2001 From: TheSilva7 Date: Fri, 30 May 2025 10:43:50 -0600 Subject: [PATCH] Arreglo del formulario Choferes --- app/Http/Controllers/PrestamoController.php | 89 +++++++++++++++---- ..._142652_add_estado_to_prestamos_table.php} | 14 ++- ...tante_tipo_licencia_to_prestamos_table.php | 28 ++++++ .../views/prestamosCrearEditar.blade.php | 38 ++++++-- 4 files changed, 136 insertions(+), 33 deletions(-) rename database/migrations/{2025_04_01_191325_add_estado_to_prestamos_table.php => 2025_05_30_142652_add_estado_to_prestamos_table.php} (61%) create mode 100644 database/migrations/2025_05_30_144919_add_solicitante_tipo_licencia_to_prestamos_table.php diff --git a/app/Http/Controllers/PrestamoController.php b/app/Http/Controllers/PrestamoController.php index f4c02c0..446aacc 100644 --- a/app/Http/Controllers/PrestamoController.php +++ b/app/Http/Controllers/PrestamoController.php @@ -54,10 +54,14 @@ class PrestamoController extends Controller */ public function store(Request $request) { + // Si el solicitante es el chofer, eliminamos chofer_id del request para evitar validación innecesaria + if ($request->has('solicitante_es_chofer') && $request->input('solicitante_es_chofer')) { + $request->request->remove('chofer_id'); + } + // Validación de datos - $request->validate([ + $rules = [ 'nombre_solicitante' => 'required|string|max:255', - 'chofer_id' => 'required|exists:choferes,id', 'destino' => 'required|string|max:255', 'fecha_hora_salida' => 'required|date', 'fecha_hora_llegada' => 'required|date', @@ -65,13 +69,35 @@ class PrestamoController extends Controller 'domicilio' => 'required|string|max:255', 'numero_personas' => 'required|integer', 'vehiculo_id' => 'required|exists:tipos_veiculos,id' - ]); + ]; + + // Validación condicional para el tipo de licencia del solicitante + if ($request->has('solicitante_es_chofer') && $request->input('solicitante_es_chofer')) { + $rules['solicitante_tipo_licencia'] = 'required|string|max:255'; + } else { + // Si el solicitante NO es el chofer, el chofer_id es requerido + $rules['chofer_id'] = 'required|exists:choferes,id'; + } + + $request->validate($rules); // Preparar los datos $datos = $request->all(); - $datos['chofer'] = $request->has('chofer') ? 1 : 0; - // Sobrescribir el nombre del solicitante con el nombre del usuario autenticado - $datos['nombre_solicitante'] = auth()->user()->name; + // Guardar si el solicitante es el chofer (true/false) + $datos['chofer'] = $request->has('solicitante_es_chofer') ? 1 : 0; + + // Si el solicitante es el chofer, asegúrate de que chofer_id sea null + if ($datos['chofer']) { + $datos['chofer_id'] = null; + } else { + // Si el solicitante NO es el chofer, asegúrate de que solicitante_tipo_licencia sea null + $datos['solicitante_tipo_licencia'] = null; + } + + // Sobrescribir el nombre del solicitante con el nombre del usuario autenticado (si aplica) + // Puedes decidir si quieres que el nombre del solicitante en la tabla sea siempre el del usuario logueado o el que ingresa en el formulario. + // Si quieres usar el del usuario logueado, descomenta la siguiente línea: + // $datos['nombre_solicitante'] = auth()->user()->name; $prestamo = new Prestamo($datos); $prestamo->estado = 'pendiente'; @@ -101,8 +127,13 @@ class PrestamoController extends Controller */ public function update(Request $request, $id) { + // Si el solicitante es el chofer, eliminamos chofer_id del request para evitar validación innecesaria + if ($request->has('solicitante_es_chofer') && $request->input('solicitante_es_chofer')) { + $request->request->remove('chofer_id'); + } + // Validación de datos - $request->validate([ + $rules = [ 'nombre_solicitante' => 'required|string|max:255', 'destino' => 'required|string|max:255', 'fecha_hora_salida' => 'required|date', @@ -110,17 +141,41 @@ class PrestamoController extends Controller 'motivo' => 'required|string|max:255', 'domicilio' => 'required|string|max:255', 'numero_personas' => 'required|integer', - ]); + 'vehiculo_id' => 'required|exists:tipos_veiculos,id' + ]; + + // Validación condicional para el tipo de licencia del solicitante + if ($request->has('solicitante_es_chofer') && $request->input('solicitante_es_chofer')) { + $rules['solicitante_tipo_licencia'] = 'required|string|max:255'; + } else { + // Si el solicitante NO es el chofer, el chofer_id es requerido + $rules['chofer_id'] = 'required|exists:choferes,id'; + } + + $request->validate($rules); + + $prestamo = Prestamo::findOrFail($id); + $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; + + // Guardar si el solicitante es el chofer (true/false) + $prestamo->chofer = $request->has('solicitante_es_chofer') ? 1 : 0; + + // Si el solicitante es el chofer, asegúrate de que chofer_id sea null y guarda el tipo de licencia + if ($prestamo->chofer) { + $prestamo->chofer_id = null; + $prestamo->solicitante_tipo_licencia = $request->solicitante_tipo_licencia; + } else { + // Si el solicitante NO es el chofer, asegúrate de que solicitante_tipo_licencia sea null y guarda el chofer_id + $prestamo->solicitante_tipo_licencia = null; + $prestamo->chofer_id = $request->chofer_id; + } - $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 diff --git a/database/migrations/2025_04_01_191325_add_estado_to_prestamos_table.php b/database/migrations/2025_05_30_142652_add_estado_to_prestamos_table.php similarity index 61% rename from database/migrations/2025_04_01_191325_add_estado_to_prestamos_table.php rename to database/migrations/2025_05_30_142652_add_estado_to_prestamos_table.php index 1384d82..14545cb 100644 --- a/database/migrations/2025_04_01_191325_add_estado_to_prestamos_table.php +++ b/database/migrations/2025_05_30_142652_add_estado_to_prestamos_table.php @@ -9,22 +9,20 @@ return new class extends Migration /** * Run the migrations. */ - public function up() + public function up(): void { Schema::table('prestamos', function (Blueprint $table) { - $table->string('estado')->default('pendiente'); + $table->string('estado')->default('pendiente')->after('vehiculo_id'); }); } /** * Reverse the migrations. */ - public function down() -{ - Schema::table('prestamos', function (Blueprint $table) { - if (Schema::hasColumn('prestamos', 'estado')) { + public function down(): void + { + Schema::table('prestamos', function (Blueprint $table) { $table->dropColumn('estado'); - } - }); + }); } }; diff --git a/database/migrations/2025_05_30_144919_add_solicitante_tipo_licencia_to_prestamos_table.php b/database/migrations/2025_05_30_144919_add_solicitante_tipo_licencia_to_prestamos_table.php new file mode 100644 index 0000000..d7ac3f5 --- /dev/null +++ b/database/migrations/2025_05_30_144919_add_solicitante_tipo_licencia_to_prestamos_table.php @@ -0,0 +1,28 @@ +string('solicitante_tipo_licencia')->nullable()->after('chofer_id'); + }); + } + + /** + * Reverse the migrations. + */ + public function down(): void + { + Schema::table('prestamos', function (Blueprint $table) { + $table->dropColumn('solicitante_tipo_licencia'); + }); + } +}; diff --git a/resources/views/prestamosCrearEditar.blade.php b/resources/views/prestamosCrearEditar.blade.php index 8e1fcfa..1e63289 100644 --- a/resources/views/prestamosCrearEditar.blade.php +++ b/resources/views/prestamosCrearEditar.blade.php @@ -203,18 +203,34 @@
- - + chofer : false) ? 'checked' : '' }} onchange="toggleSolicitanteChofer()"> + +
+ + @@ -236,12 +252,18 @@ @endsection