WORKIGN COMMENTS
This commit is contained in:
@@ -0,0 +1,57 @@
|
||||
<?php
|
||||
|
||||
declare(strict_types=1);
|
||||
|
||||
namespace Modules\Helpdesk\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\RedirectResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Routing\Controller;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Gate;
|
||||
use Illuminate\Validation\ValidationException;
|
||||
use Modules\Helpdesk\Models\Ticket;
|
||||
use Modules\Helpdesk\Services\TicketService;
|
||||
|
||||
final class TicketCommentStoreController extends Controller
|
||||
{
|
||||
/**
|
||||
* Store a ticket comment using a normal HTTP POST request.
|
||||
*/
|
||||
public function __invoke(Request $request, Ticket $ticket, TicketService $tickets): RedirectResponse
|
||||
{
|
||||
Gate::authorize('comment', $ticket);
|
||||
|
||||
$validated = $request->validate([
|
||||
'commentBody' => ['required', 'string', 'min:2'],
|
||||
'attachments' => ['nullable', 'array'],
|
||||
'attachments.*' => [
|
||||
'file',
|
||||
'max:'.config('helpdesk.max_upload_kb', 10240),
|
||||
'mimes:'.implode(',', config('helpdesk.allowed_mimes', ['jpg', 'jpeg', 'png', 'pdf', 'txt', 'log', 'zip'])),
|
||||
],
|
||||
]);
|
||||
|
||||
$user = Auth::user();
|
||||
|
||||
if ($user === null) {
|
||||
throw ValidationException::withMessages([
|
||||
'commentBody' => 'You must be signed in to comment on this ticket.',
|
||||
]);
|
||||
}
|
||||
|
||||
$internal = $request->user()?->can('update', $ticket) === true && $request->boolean('internal');
|
||||
|
||||
$tickets->comment(
|
||||
ticket: $ticket,
|
||||
user: $user,
|
||||
body: (string) $validated['commentBody'],
|
||||
internal: $internal,
|
||||
files: $request->file('attachments', []),
|
||||
);
|
||||
|
||||
return redirect()
|
||||
->route('helpdesk.tickets.show', $ticket)
|
||||
->with('ticket-comment-added', 'Reply posted.');
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user