major ui updates

This commit is contained in:
Mark Gregory
2026-06-12 15:11:51 +01:00
parent 3c9b39d83b
commit 7bc8f20ed5
154 changed files with 3796 additions and 4117 deletions
+12 -21
View File
@@ -26,9 +26,6 @@ final class TicketEdit extends Component
#[Validate('nullable|integer')]
public ?int $company_id = null;
#[Validate('nullable|integer|exists:users,id')]
public ?int $agent_id = null;
#[Validate('required|string|max:200')]
public string $subject = '';
@@ -50,19 +47,18 @@ final class TicketEdit extends Component
#[Validate('nullable|integer|exists:helpdesk_teams,id')]
public ?int $team_id = null;
#[Validate('nullable|integer|exists:users,id')]
public ?int $agent_id = null;
#[Validate('nullable|date')]
public ?string $due_at = null;
/**
* Populate editable ticket state.
*/
public function mount(Ticket $ticket): void
{
$this->authorize('update', $ticket);
$this->ticket = $ticket->fresh(['status', 'priority', 'category', 'project', 'team', 'agent']) ?? $ticket;
$this->company_id = $this->ticket->company_id;
$this->agent_id = $this->ticket->agent_id;
$this->subject = $this->ticket->subject;
$this->body = $this->ticket->body;
$this->status_id = $this->ticket->status_id;
@@ -70,12 +66,10 @@ final class TicketEdit extends Component
$this->category_id = $this->ticket->category_id;
$this->project_id = $this->ticket->project_id;
$this->team_id = $this->ticket->team_id;
$this->agent_id = $this->ticket->agent_id;
$this->due_at = $this->ticket->due_at?->format('Y-m-d');
}
/**
* Save ticket changes.
*/
public function save(WorkflowNotificationService $workflow): mixed
{
$this->authorize('update', $this->ticket);
@@ -85,7 +79,6 @@ final class TicketEdit extends Component
$this->ticket->forceFill([
'company_id' => $this->company_id,
'agent_id' => $this->agent_id,
'subject' => $this->subject,
'body' => $this->body,
'status_id' => $status->id,
@@ -93,27 +86,25 @@ final class TicketEdit extends Component
'category_id' => $this->category_id,
'project_id' => $this->project_id,
'team_id' => $this->team_id,
'due_at' => $this->due_at ?: null,
'agent_id' => $this->agent_id,
'due_at' => $this->due_at,
'completed_at' => $status->is_closed ? now() : null,
'last_activity_at' => now(),
])->save();
$this->ticket = $this->ticket->fresh(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']) ?? $this->ticket;
$workflow->dispatch($this->ticket, $status->is_closed ? 'ticket.closed' : 'ticket.updated', Auth::user());
$fresh = $this->ticket->fresh(['owner', 'agent', 'status', 'priority', 'category', 'project', 'team']) ?? $this->ticket;
$workflow->dispatch($fresh, $status->is_closed ? 'ticket.closed' : 'ticket.updated', Auth::user());
session()->flash('success', 'Ticket ' . $this->ticket->reference . ' has been updated.');
session()->flash('success', 'Ticket ' . $fresh->reference . ' has been updated.');
return redirect()->route('helpdesk.tickets.show', $this->ticket);
return redirect()->route('helpdesk.tickets.show', $fresh);
}
/**
* Render the ticket edit screen.
*/
public function render(): View
{
return view('helpdesk::livewire.ticket-edit', [
'statuses' => Status::query()->orderBy('sort_order')->get(),
'priorities' => Priority::query()->orderBy('sort_order')->get(),
'statuses' => Status::query()->orderBy('sort_order')->orderBy('name')->get(),
'priorities' => Priority::query()->orderBy('sort_order')->orderBy('name')->get(),
'categories' => Category::query()->orderBy('name')->get(),
'companies' => Schema::hasTable('companies') ? DB::table('companies')->select(['id', 'name'])->orderBy('name')->get() : collect(),
'teams' => Team::query()->whereNull('archived_at')->orderBy('name')->get(),