repuve-backend-v1/app/Http/Controllers/Admin/ActivityController.php
Juan Felipe Zapata Moreno 31746867b8 feat: Agrega validaciones de autorización y nuevas clases Request
- Se agregó autorización basada en permisos en múltiples Requests.
- Nuevos Requests para motivos de cancelación y tags con validación y autorización.
- Se añadieron métodos de roles al modelo User (isDeveloper, isAdmin, isPrimary).
- Se actualizó el acceso a Telescope usando validación por roles.
- Mejora en el manejo de excepciones de autorización.
- Actualización de RoleSeeder con nuevas convenciones de permisos.
- Actualización de dependencias (composer.lock).
2026-02-23 13:05:53 -06:00

51 lines
1.7 KiB
PHP

<?php
namespace App\Http\Controllers\Admin;
/**
* @copyright (c) 2025 Notsoweb Software (https://notsoweb.com) - All Rights Reserved
*/
use App\Http\Controllers\Controller;
use App\Http\Requests\Users\UserActivityRequest;
use App\Models\UserEvent;
use Notsoweb\ApiResponse\Enums\ApiResponse;
/**
* Eventos del usuarios del sistema
*
* @author Moisés Cortés C. <moises.cortes@notsoweb.com>
*
* @version 1.0.0
*/
class ActivityController extends Controller
{
/**
* Actividades del usuario
*/
public function index(UserActivityRequest $request)
{
$filters = $request->all();
$model = UserEvent::with('user:id,name,paternal,maternal,profile_photo_path,deleted_at')
->when(isset($filters['user']) && !empty($filters['user']), function ($query) use ($filters) {
$query->where('user_id', $filters['user']);
})
->when(isset($filters['search']) && !empty($filters['search']), function ($query) use ($filters) {
$query->where('event', 'like', '%' . $filters['search'] . '%');
})
->when(isset($filters['start_date']) && !empty($filters['start_date']), function ($query) use ($filters) {
$query->where('created_at', '>=', "{$filters['start_date']} 00:00:00");
})
->when(isset($filters['end_date']) && !empty($filters['end_date']), function ($query) use ($filters) {
$query->where('created_at', '<=', "{$filters['end_date']} 23:59:59");
});
return ApiResponse::OK->response([
'models' =>
$model->orderBy('created_at', 'desc')
->paginate(config('app.pagination'))
]);
}
}