You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
 
 
 
 

58 lines
1.9 KiB

<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
class HomeController extends Controller
{
/**
* Create a new controller instance.
*
* @return void
*/
public function __construct()
{
$this->middleware('auth');
}
/**
* Show the application dashboard.
*
* @return \Illuminate\Contracts\Support\Renderable
*/
public function index()
{
$user = auth()->user();
// Validar que el usuario tenga tipo asignado y que sea Administrador o Servicios Generales
if (!$user->tipo || !in_array($user->tipos_id, [1, 4])) {
// Cerrar la sesión del usuario
auth()->logout();
// Redirigir con mensaje de error
return redirect()->route('login')->with('error', 'No tienes permisos para acceder al sistema. Solo los administradores o servicios pueden acceder en este momento.');
}
// Notificaciones si el usuario no tiene puesto o departamento asignado
$notificaciones = [];
if (is_null($user->puesto_id)) {
$notificaciones[] = 'No tienes un puesto asignado. Contacta al administrador para que te asigne uno.';
}
if (is_null($user->departamento_id)) {
$notificaciones[] = 'No tienes un departamento asignado. Contacta al administrador para que te asigne uno.';
}
// Si es administrador, mostrar el dashboard con datos reales
$adminData = [
'totalUsers' => \App\Models\User::count(),
'totalPrestamos' => \App\Models\Prestamo::count(),
'prestamosPendientes' => \App\Models\Prestamo::where('estado', 'pendiente')->count(),
'prestamosAceptados' => \App\Models\Prestamo::where('estado', 'aceptado')->count(),
];
return view('dashboard', [
'adminData' => $adminData,
'notificaciones' => $notificaciones
]);
}
}