71 lines
1.7 KiB
PHP
Executable File
71 lines
1.7 KiB
PHP
Executable File
<?php
|
|
|
|
namespace App\Http\Controllers\Admin;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use App\Models\Mensaje;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\View\View;
|
|
|
|
class MensajeController extends Controller
|
|
{
|
|
/**
|
|
* Mostrar lista de mensajes
|
|
*/
|
|
public function index(): View
|
|
{
|
|
$mensajes = Mensaje::orderBy('created_at', 'desc')->paginate(15);
|
|
|
|
return view('admin.mensajes.index', compact('mensajes'));
|
|
}
|
|
|
|
/**
|
|
* Mostrar mensaje específico
|
|
*/
|
|
public function show(Mensaje $mensaje): View
|
|
{
|
|
// Marcar como leído al ver
|
|
if (! $mensaje->leido) {
|
|
$mensaje->marcarLeido();
|
|
}
|
|
|
|
return view('admin.mensajes.show', compact('mensaje'));
|
|
}
|
|
|
|
/**
|
|
* Alternar estado de leído/no leído
|
|
*/
|
|
public function markRead(Mensaje $mensaje): RedirectResponse
|
|
{
|
|
if ($mensaje->leido) {
|
|
$mensaje->marcarNoLeido();
|
|
$message = 'Mensaje marcado como no leído.';
|
|
} else {
|
|
$mensaje->marcarLeido();
|
|
$message = 'Mensaje marcado como leído.';
|
|
}
|
|
|
|
return back()->with('success', $message);
|
|
}
|
|
|
|
/**
|
|
* Eliminar mensaje
|
|
*/
|
|
public function destroy(Mensaje $mensaje): RedirectResponse
|
|
{
|
|
$mensaje->delete();
|
|
|
|
return redirect()->route('admin.mensajes.index')->with('success', 'Mensaje eliminado correctamente.');
|
|
}
|
|
|
|
/**
|
|
* Marcar todos los mensajes como leídos
|
|
*/
|
|
public function markAllRead(): RedirectResponse
|
|
{
|
|
Mensaje::where('leido', false)->update(['leido' => true]);
|
|
|
|
return back()->with('success', 'Todos los mensajes marcados como leídos.');
|
|
}
|
|
}
|