FIXING TICKET SAVE
This commit is contained in:
@@ -7,6 +7,7 @@ namespace Modules\Helpdesk\Services;
|
||||
use App\Models\User;
|
||||
use Illuminate\Database\Eloquent\Builder;
|
||||
use Modules\Helpdesk\Models\Category;
|
||||
use Modules\Helpdesk\Models\Ticket;
|
||||
|
||||
final class AgentAssignmentService
|
||||
{
|
||||
@@ -22,9 +23,13 @@ final class AgentAssignmentService
|
||||
->where(static function (Builder $query): void {
|
||||
$query->where('helpdesk_agent', true)->orWhere('helpdesk_admin', true);
|
||||
})
|
||||
->withCount(['helpdeskAssignedTickets as open_helpdesk_tickets_count' => static function (Builder $query): void {
|
||||
$query->whereNull('completed_at');
|
||||
}]);
|
||||
->selectSub(
|
||||
Ticket::query()
|
||||
->selectRaw('count(*)')
|
||||
->whereColumn('helpdesk_tickets.agent_id', 'users.id')
|
||||
->whereNull('helpdesk_tickets.completed_at'),
|
||||
'open_helpdesk_tickets_count'
|
||||
);
|
||||
|
||||
if ($categoryId !== null) {
|
||||
$category = Category::query()->find($categoryId);
|
||||
|
||||
@@ -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
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user