document = $document; $this->notify = $notify; $this->description = $description; $this->request = $request; parent::__construct($document, $notify, $description); } public function handle(): DocumentHistory { $description = $this->description ?: trans_choice('general.payments', 1); $document_history = DocumentHistory::create([ 'company_id' => $this->document->company_id, 'type' => $this->document->type, 'document_id' => $this->document->id, 'status' => $this->document->status, 'notify' => $this->notify, 'description' => $description, 'created_from' => $this->getCustomSourceName(), 'created_by' => user_id(), ]); return $document_history; } public function getCustomSourceName(): string { if (empty($this->request)) { return $this->getSourceName(); } if (is_array($this->request)) { if (empty($this->request['created_from'])) { return $this->getSourceName(); } } elseif ($this->request instanceof Request) { if ($this->request->missing('created_from')) { return $this->getSourceName(); } } return $this->request['created_from']; } }