*/ #[Validate('array')] public array $attachments = []; /** * Store a new helpdesk ticket. */ public function save(TicketService $tickets): mixed { $this->validate(); $this->validate([ 'attachments.*' => 'file|max:'.config('helpdesk.max_upload_kb').'|mimes:'.implode(',', config('helpdesk.allowed_mimes')), ]); $ticket = $tickets->create(Auth::user(), [ 'company_id' => $this->company_id, 'subject' => $this->subject, 'body' => $this->body, 'priority_id' => $this->priority_id, 'category_id' => $this->category_id, 'project_id' => $this->project_id, 'team_id' => $this->team_id, 'due_at' => $this->due_at, ], $this->attachments); session()->flash('success', 'Ticket '.$ticket->reference.' has been created.'); return redirect()->route('helpdesk.tickets.index'); } public function render(): View { return view('helpdesk::livewire.ticket-create', [ 'priorities' => Priority::query()->orderBy('sort_order')->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(), 'projects' => Project::query()->whereNull('archived_at')->orderBy('title')->get(), ])->layout('layouts.app'); } }