39 lines
1.1 KiB
PHP
39 lines
1.1 KiB
PHP
<?php
|
|
|
|
namespace Modules\Comments\Http\Controllers;
|
|
|
|
use App\Http\Controllers\Controller;
|
|
use Illuminate\Http\RedirectResponse;
|
|
use Illuminate\Http\Request;
|
|
use Illuminate\View\View;
|
|
use Modules\Comments\Models\Comment;
|
|
|
|
final class CommentController extends Controller
|
|
{
|
|
public function index(Request $r): View
|
|
{
|
|
$q = Comment::latest();
|
|
if ($r->filled('status')) {
|
|
$q->where('status', $r->string('status'));
|
|
}
|
|
|
|
return view('comments::admin.index', ['records' => $q->paginate(30)]);
|
|
}
|
|
|
|
public function update(Request $r, Comment $comment): RedirectResponse
|
|
{
|
|
$data = $r->validate(['status' => ['required', 'in:pending,approved,spam,rejected'], 'moderation_notes' => ['nullable', 'string']]);
|
|
$data['approved_at'] = $data['status'] === 'approved' ? now() : null;
|
|
$comment->update($data);
|
|
|
|
return back()->with('status', 'Comment moderated.');
|
|
}
|
|
|
|
public function destroy(Comment $comment): RedirectResponse
|
|
{
|
|
$comment->delete();
|
|
|
|
return back()->with('status', 'Comment deleted.');
|
|
}
|
|
}
|