Compare commits

...

2 Commits

Author SHA1 Message Date
TheSilva7 bc1fb46352 Merge branch 'main' of http://187.216.152.151:9999/Damian_Aceves/PrestamosTecmm 2 weeks ago
TheSilva7 9c36f8c500 Revert "cambios" 3 weeks ago
  1. 6
      app/Http/Controllers/MarcaController.php
  2. 103
      app/Http/Controllers/PrestamoController.php
  3. 43
      resources/views/prestamos.blade.php

6
app/Http/Controllers/MarcaController.php

@ -81,13 +81,7 @@ class MarcaController extends Controller
{ {
$request->validate([ $request->validate([
'marca' => 'required|string|max:255|unique:marcas,marca', // Asegúrate de que 'marca' sea único 'marca' => 'required|string|max:255|unique:marcas,marca', // Asegúrate de que 'marca' sea único
], [
'marca.required' => 'El campo marca es obligatorio.',
'marca.string' => 'El campo marca debe ser una cadena de texto.',
'marca.max' => 'El campo marca no puede tener más de 255 caracteres.',
'marca.unique' => 'La marca ya existe en la base de datos.',
]); ]);
$marca = Marca::findOrFail($id); // Encuentra la marca por ID $marca = Marca::findOrFail($id); // Encuentra la marca por ID
// Verifica si el nombre de la marca ha cambiado // Verifica si el nombre de la marca ha cambiado

103
app/Http/Controllers/PrestamoController.php

@ -21,15 +21,18 @@ class PrestamoController extends Controller
// Busca en la columna 'nombre_solicitante' de la tabla 'prestamos' // Busca en la columna 'nombre_solicitante' de la tabla 'prestamos'
$prestamos = Prestamo::where('nombre_solicitante', 'LIKE', "%{$busqueda}%") $prestamos = Prestamo::where('nombre_solicitante', 'LIKE', "%{$busqueda}%")
->where('eliminado', 0) ->where('eliminado', 0)
->where('estado', 'pendiente')
->get(); ->get();
if ($prestamos->isEmpty()) { if ($prestamos->isEmpty()) {
return redirect()->route('prestamo.index') return redirect()->route('prestamos.index')
->with('error', 'No existe ningún préstamo con el solicitante "' . $busqueda . '". Por favor, inténtalo de nuevo.'); ->with('error', 'No existe ningún préstamo con el solicitante "' . $busqueda . '". Por favor, inténtalo de nuevo.');
} }
} else { } else {
// Si no hay búsqueda, mostrar todos los préstamos // Si no hay búsqueda, mostrar todos los préstamos pendientes
$prestamos = Prestamo::where('eliminado', 0)->get(); $prestamos = Prestamo::where('eliminado', 0)
->where('estado', 'pendiente')
->get();
} }
return view('prestamos', ['prestamos' => $prestamos]); return view('prestamos', ['prestamos' => $prestamos]);
@ -131,98 +134,4 @@ class PrestamoController extends Controller
$pdf = PDF::loadView('exports.prestamos-pdf', ['prestamos' => $prestamos]); $pdf = PDF::loadView('exports.prestamos-pdf', ['prestamos' => $prestamos]);
return $pdf->download('prestamos.pdf'); return $pdf->download('prestamos.pdf');
} }
public function aceptados(Request $request)
{
$busqueda = $request->busqueda;
$prestamos = Prestamo::when($busqueda, function($query) use ($busqueda) {
return $query->where(function($q) use ($busqueda) {
$q->where('nombre_solicitante', 'LIKE', "%{$busqueda}%")
->orWhere('destino', 'LIKE', "%{$busqueda}%")
->orWhere('motivo', 'LIKE', "%{$busqueda}%");
});
})
->orderBy('created_at', 'desc')
->get();
return view('prestamos.aceptar', ['prestamos' => $prestamos]);
}
public function aceptar($id)
{
$prestamo = Prestamo::findOrFail($id);
$prestamo->estado = 'aceptado';
$prestamo->save();
// Aquí puedes agregar notificaciones si lo deseas
return redirect()->route('prestamos.aceptados')
->with('success', 'Préstamo aceptado correctamente');
}
public function rechazar($id)
{
$prestamo = Prestamo::findOrFail($id);
$prestamo->estado = 'rechazado';
$prestamo->save();
// Aquí puedes agregar notificaciones si lo deseas
return redirect()->route('prestamos.aceptados')
->with('success', 'Préstamo rechazado correctamente');
}
public function historial(Request $request)
{
$query = Prestamo::query()
->whereIn('estado', ['aceptado', 'rechazado']);
// Aplicar filtros de búsqueda
if ($request->busqueda) {
$query->where(function($q) use ($request) {
$q->where('nombre_solicitante', 'LIKE', "%{$request->busqueda}%")
->orWhere('destino', 'LIKE', "%{$request->busqueda}%")
->orWhere('motivo', 'LIKE', "%{$request->busqueda}%");
});
}
// Filtro por estado
if ($request->estado) {
$query->where('estado', $request->estado);
}
// Filtro por fechas
if ($request->fecha_desde) {
$query->whereDate('created_at', '>=', $request->fecha_desde);
}
if ($request->fecha_hasta) {
$query->whereDate('created_at', '<=', $request->fecha_hasta);
}
// Ordenar por fecha de actualización
$query->orderBy('updated_at', 'desc');
// Paginar resultados
$prestamos = $query->paginate(10);
return view('prestamos.historial', ['prestamos' => $prestamos]);
}
public function export($format)
{
$prestamos = Prestamo::whereIn('estado', ['aceptado', 'rechazado'])
->orderBy('updated_at', 'desc')
->get();
switch($format) {
case 'excel':
return Excel::download(new PrestamosExport($prestamos), 'historial_prestamos.xlsx');
case 'pdf':
$pdf = PDF::loadView('exports.prestamos-pdf', ['prestamos' => $prestamos]);
return $pdf->download('historial_prestamos.pdf');
default:
return redirect()->back()->with('error', 'Formato no soportado');
}
}
} }

43
resources/views/prestamos.blade.php

@ -15,25 +15,14 @@
</div> </div>
@endif @endif
@if($errors->any())
<div class="mb-6 bg-red-50 border-l-4 border-red-500 p-4 rounded-r-lg">
<div class="flex items-center">
<div class="text-red-700">
<ul>
@foreach($errors->all() as $error)
<li>{{ $error }}</li>
@endforeach
</ul>
</div>
</div>
</div>
@endif
<div class="bg-white rounded-lg shadow-lg"> <div class="bg-white rounded-lg shadow-lg">
<!-- Encabezado con título y botones de acción --> <!-- Encabezado con título y botones de acción -->
<div class="p-4 border-b border-gray-200 flex justify-between items-center"> <div class="p-4 border-b border-gray-200 flex justify-between items-center">
<h2 class="text-2xl font-bold">Gestión de Préstamos</h2> <h2 class="text-2xl font-bold">Gestión de Préstamos</h2>
<div class="flex items-center space-x-6"> <div class="flex items-center space-x-6">
<!-- Íconos de exportación -->
<div class="flex space-x-4">
<!-- Exportar a Excel --> <!-- Exportar a Excel -->
<a href="{{ route('prestamos.excel') }}" <a href="{{ route('prestamos.excel') }}"
class="text-green-600 hover:text-green-700 transition-colors duration-200" class="text-green-600 hover:text-green-700 transition-colors duration-200"
@ -55,6 +44,7 @@
</a> </a>
</div> </div>
</div> </div>
</div>
<!-- Barra de búsqueda --> <!-- Barra de búsqueda -->
<div class="p-4 border-b border-gray-200 bg-gray-50"> <div class="p-4 border-b border-gray-200 bg-gray-50">
@ -161,16 +151,28 @@
</td> </td>
<td class="px-6 py-4 whitespace-nowrap text-sm font-medium"> <td class="px-6 py-4 whitespace-nowrap text-sm font-medium">
<div class="flex space-x-2"> <div class="flex space-x-2">
<a href="{{ route('prestamos.edit', $prestamo->id) }}" class="text-yellow-600 hover:text-blue-900"> <a href="{{ route('prestamos.edit', $prestamo->id) }}" class="text-blue-600 hover:text-blue-900">
<i class="fas fa-edit"></i> <i class="fas fa-edit"></i>
</a> </a>
<form action="{{ route('prestamos.destroy', $prestamo->id) }}" method="POST" class="inline" onsubmit="return confirmarEliminacion(this);"> <form action="{{ route('prestamos.destroy', $prestamo->id) }}" method="POST" class="inline">
@csrf @csrf
@method('DELETE') @method('DELETE')
<button type="submit" class="text-red-600 hover:text-red-900"> <button type="submit" class="text-red-600 hover:text-red-900" onclick="return confirm('¿Estás seguro de que deseas eliminar este préstamo?')">
<i class="fas fa-trash"></i> <i class="fas fa-trash"></i>
</button> </button>
</form> </form>
<form action="{{ route('prestamos.aceptar', $prestamo->id) }}" method="POST" class="inline">
@csrf
<button type="submit" class="text-green-600 hover:text-green-900" onclick="return confirm('¿Estás seguro de que deseas aceptar este préstamo?')">
<i class="fas fa-check"></i>
</button>
</form>
<form action="{{ route('prestamos.rechazar', $prestamo->id) }}" method="POST" class="inline">
@csrf
<button type="submit" class="text-yellow-600 hover:text-yellow-900" onclick="return confirm('¿Estás seguro de que deseas rechazar este préstamo?')">
<i class="fas fa-times"></i>
</button>
</form>
</div> </div>
</td> </td>
</tr> </tr>
@ -194,8 +196,8 @@
} }
}, 3000); }, 3000);
function confirmarEliminacion(form) { function confirmarEliminacion(button) {
return Swal.fire({ Swal.fire({
title: '¿Estás seguro?', title: '¿Estás seguro?',
text: "Esta acción no se puede deshacer", text: "Esta acción no se puede deshacer",
icon: 'warning', icon: 'warning',
@ -206,9 +208,8 @@
cancelButtonText: 'Cancelar' cancelButtonText: 'Cancelar'
}).then((result) => { }).then((result) => {
if (result.isConfirmed) { if (result.isConfirmed) {
form.submit(); button.closest('form').submit();
} }
return false; // Evitar el envío del formulario por defecto
}); });
} }
</script> </script>

Loading…
Cancel
Save