Browse Source

Arreglo del formulario

Choferes
main
TheSilva7 4 weeks ago
parent
commit
1f1c5780d4
  1. 89
      app/Http/Controllers/PrestamoController.php
  2. 10
      database/migrations/2025_05_30_142652_add_estado_to_prestamos_table.php
  3. 28
      database/migrations/2025_05_30_144919_add_solicitante_tipo_licencia_to_prestamos_table.php
  4. 38
      resources/views/prestamosCrearEditar.blade.php

89
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

10
database/migrations/2025_04_01_191325_add_estado_to_prestamos_table.php → 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()
{
public function down(): void
{
Schema::table('prestamos', function (Blueprint $table) {
if (Schema::hasColumn('prestamos', 'estado')) {
$table->dropColumn('estado');
}
});
}
};

28
database/migrations/2025_05_30_144919_add_solicitante_tipo_licencia_to_prestamos_table.php

@ -0,0 +1,28 @@
<?php
use Illuminate\Database\Migrations\Migration;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Support\Facades\Schema;
return new class extends Migration
{
/**
* Run the migrations.
*/
public function up(): void
{
Schema::table('prestamos', function (Blueprint $table) {
$table->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');
});
}
};

38
resources/views/prestamosCrearEditar.blade.php

@ -203,18 +203,34 @@
<!-- Campo Chofer -->
<div class="flex items-center">
<input type="checkbox" name="chofer" id="chofer" {{ old('chofer') ? 'checked' : '' }} onchange="toggleChoferCatalogo()">
<label for="chofer" class="ml-2 text-sm text-gray-700">¿Requiere chofer?</label>
<input type="checkbox" name="solicitante_es_chofer" id="solicitante_es_chofer" {{ old('solicitante_es_chofer', isset($prestamo) ? $prestamo->chofer : false) ? 'checked' : '' }} onchange="toggleSolicitanteChofer()">
<label for="solicitante_es_chofer" class="ml-2 text-sm text-gray-700">¿El solicitante será el chofer?</label>
</div>
<div id="tipo-licencia-solicitante" style="display:none; margin-top: 1em;">
<label for="solicitante_tipo_licencia" class="block text-sm font-medium text-gray-700 mb-2">Tipo de Licencia del Solicitante</label>
<input type="text"
name="solicitante_tipo_licencia"
id="solicitante_tipo_licencia"
class="block w-full pl-10 pr-3 py-2 border border-gray-300 rounded-md focus:ring-2 focus:ring-blue-500 focus:border-blue-500"
placeholder="Ingresa el tipo de licencia"
value="{{ isset($prestamo) ? $prestamo->solicitante_tipo_licencia : old('solicitante_tipo_licencia') }}">
@error('solicitante_tipo_licencia')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<div id="catalogo-choferes" style="display:none; margin-top: 1em;">
<label for="chofer_id" class="block text-sm font-medium text-gray-700 mb-2">Chofer</label>
<label for="chofer_id" class="block text-sm font-medium text-gray-700 mb-2">Chofer a asignar</label>
<select name="chofer_id" id="chofer_id" class="block w-full border border-gray-300 rounded-md">
<option value="">Seleccione un chofer</option>
@foreach($choferes as $chofer)
<option value="{{ $chofer->id }}">{{ $chofer->nombre }} - {{ $chofer->tipo_licencia }}</option>
<option value="{{ $chofer->id }}" {{ old('chofer_id', isset($prestamo) ? $prestamo->chofer_id : '') == $chofer->id ? 'selected' : '' }}>{{ $chofer->nombre }} - {{ $chofer->tipo_licencia }}</option>
@endforeach
</select>
@error('chofer_id')
<p class="mt-1 text-sm text-red-600">{{ $message }}</p>
@enderror
</div>
<!-- Botones de acción -->
@ -236,12 +252,18 @@
</div>
<script>
function toggleChoferCatalogo() {
var check = document.getElementById('chofer').checked;
document.getElementById('catalogo-choferes').style.display = check ? 'block' : 'none';
function toggleSolicitanteChofer() {
var solicitanteEsChofer = document.getElementById('solicitante_es_chofer').checked;
document.getElementById('tipo-licencia-solicitante').style.display = solicitanteEsChofer ? 'block' : 'none';
document.getElementById('catalogo-choferes').style.display = solicitanteEsChofer ? 'none' : 'block';
// Resetear el valor del campo de chofer asignado si el solicitante es el chofer
if (solicitanteEsChofer) {
document.getElementById('chofer_id').value = '';
}
}
document.addEventListener('DOMContentLoaded', function() {
toggleChoferCatalogo();
toggleSolicitanteChofer();
});
</script>
@endsection

Loading…
Cancel
Save