limpieza
This commit is contained in:
@@ -1,143 +0,0 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use App\Services\NotificacionService;
|
||||
|
||||
class NotificacionController extends Controller
|
||||
{
|
||||
private NotificacionService $service;
|
||||
|
||||
public function __construct(NotificacionService $service)
|
||||
{
|
||||
$this->service = $service;
|
||||
}
|
||||
|
||||
// ── Helper: usuario logueado ──
|
||||
private function getUserSession(): ?array
|
||||
{
|
||||
if (!session()->has('user_logged_in')) return null;
|
||||
return [
|
||||
'tipo' => session('user_tipo'),
|
||||
'id' => session('user_id'),
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /notificaciones — Listado completo paginado
|
||||
*/
|
||||
public function index()
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return redirect('/')->with('panel_error', 'Debés iniciar sesión.');
|
||||
|
||||
$notificaciones = $this->service->obtenerTodas($u['tipo'], $u['id']);
|
||||
$totalNoLeidas = $this->service->contarNoLeidas($u['tipo'], $u['id']);
|
||||
|
||||
return view('notificaciones.index', compact('notificaciones', 'totalNoLeidas'));
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /notificaciones/{id}/leer — Marcar una como leída
|
||||
*/
|
||||
public function marcarLeida(int $id)
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['ok' => false], 401);
|
||||
|
||||
$this->service->marcarLeida($id, $u['tipo'], $u['id']);
|
||||
return response()->json(['ok' => true]);
|
||||
}
|
||||
|
||||
/**
|
||||
* POST /notificaciones/leer-todas — Marcar todas como leídas
|
||||
*/
|
||||
public function marcarTodasLeidas()
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['ok' => false], 401);
|
||||
|
||||
$count = $this->service->marcarTodasLeidas($u['tipo'], $u['id']);
|
||||
return response()->json(['ok' => true, 'marcadas' => $count]);
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /notificaciones/count — Badge AJAX (devuelve JSON {count: N})
|
||||
*/
|
||||
public function count()
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['count' => 0]);
|
||||
|
||||
return response()->json(['count' => $this->service->contarNoLeidas($u['tipo'], $u['id'])]);
|
||||
}
|
||||
|
||||
/**
|
||||
* GET /notificaciones/latest — ID de la última no leída
|
||||
*/
|
||||
public function latest()
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['id' => 0]);
|
||||
|
||||
$notif = $this->service->obtenerNoLeidas($u['tipo'], $u['id'])->first();
|
||||
return response()->json([
|
||||
'id' => $notif ? $notif->id : 0,
|
||||
'titulo' => $notif ? $notif->titulo : '',
|
||||
'mensaje' => $notif ? $notif->mensaje : ''
|
||||
]);
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE /notificaciones/{id} — Eliminar una notificación
|
||||
*/
|
||||
public function eliminar(int $id)
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['ok' => false], 401);
|
||||
|
||||
$this->service->eliminar($id, $u['tipo'], $u['id']);
|
||||
return response()->json(['ok' => true]);
|
||||
}
|
||||
|
||||
/**
|
||||
* DELETE /notificaciones — Eliminar todas
|
||||
*/
|
||||
public function eliminarTodas()
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['ok' => false], 401);
|
||||
|
||||
$this->service->eliminarTodas($u['tipo'], $u['id']);
|
||||
return response()->json(['ok' => true]);
|
||||
}
|
||||
/**
|
||||
* POST /notificaciones/subscribe — Guardar suscripción para Web Push
|
||||
*/
|
||||
public function subscribe(Request $request)
|
||||
{
|
||||
$u = $this->getUserSession();
|
||||
if (!$u) return response()->json(['ok' => false, 'error' => 'No session'], 401);
|
||||
|
||||
$request->validate([
|
||||
'endpoint' => 'required',
|
||||
'keys.p256dh' => 'required',
|
||||
'keys.auth' => 'required',
|
||||
]);
|
||||
|
||||
\App\Models\PushSubscription::updateOrCreate(
|
||||
[
|
||||
'id_usuario' => (string) $u['id'],
|
||||
'tipo_usuario' => $u['tipo'],
|
||||
'endpoint' => $request->endpoint,
|
||||
],
|
||||
[
|
||||
'p256dh' => $request->keys['p256dh'],
|
||||
'auth' => $request->keys['auth'],
|
||||
]
|
||||
);
|
||||
|
||||
return response()->json(['ok' => true]);
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user