FIXING TICKET SAVE

This commit is contained in:
Mark Gregory
2026-06-12 12:58:34 +01:00
parent 292cda7ffc
commit 8ec2c33c47
19 changed files with 435 additions and 173 deletions
+20 -17
View File
@@ -5,6 +5,7 @@ declare(strict_types=1);
namespace Modules\Helpdesk\Services;
use App\Models\User;
use Illuminate\Http\UploadedFile;
use Illuminate\Support\Facades\DB;
use Modules\Helpdesk\Models\Comment;
use Modules\Helpdesk\Models\Status;
@@ -17,21 +18,32 @@ final class TicketService
private readonly AgentAssignmentService $assignment,
private readonly AttachmentService $attachments,
private readonly WorkflowNotificationService $workflow,
) {
}
) {}
/**
* Create a ticket and store initial attachments.
*
* @param User $user
* @param array<string, mixed> $data
* @param array<int, \Illuminate\Http\UploadedFile> $files
* @return Ticket
* @param array<string, mixed> $data
* @param array<int, UploadedFile> $files
*/
public function create(User $user, array $data, array $files = []): Ticket
{
return DB::transaction(function () use ($user, $data, $files): Ticket {
$status = Status::query()->where('slug', config('helpdesk.default_status_slug'))->firstOrFail();
$status = Status::query()
->where('slug', config('helpdesk.default_status_slug', 'open'))
->first();
if (! $status) {
$status = Status::query()->create([
'name' => 'Open',
'slug' => config('helpdesk.default_status_slug', 'open'),
'colour' => '#2563eb',
'sort_order' => 1,
'is_default' => true,
'is_closed' => false,
]);
}
/** @var Ticket $ticket */
$ticket = Ticket::query()->create([
@@ -62,12 +74,7 @@ final class TicketService
/**
* Add a public or internal comment and optional attachments.
*
* @param Ticket $ticket
* @param User $user
* @param string $body
* @param bool $internal
* @param array<int, \Illuminate\Http\UploadedFile> $files
* @return Comment
* @param array<int, UploadedFile> $files
*/
public function comment(Ticket $ticket, User $user, string $body, bool $internal = false, array $files = [], ?int $parentId = null): Comment
{
@@ -90,10 +97,6 @@ final class TicketService
/**
* Close a ticket.
*
* @param Ticket $ticket
* @param User $user
* @return Ticket
*/
public function close(Ticket $ticket, User $user): Ticket
{