addMedia($receipt->path) ->usingFileName($receipt->fileName) ->toMediaCollection(self::COLLECTION); } public function replace(Expense $expense, PendingExpenseReceipt $receipt): void { $this->clear($expense); $this->attach($expense, $receipt); } public function attachBase64( Expense $expense, string $contents, string $fileName, bool $replaceExisting, ): void { if ($replaceExisting) { $this->clear($expense); } $expense->addMediaFromBase64($contents) ->usingFileName($fileName) ->toMediaCollection(self::COLLECTION); } public function clear(Expense $expense): void { $expense->clearMediaCollection(self::COLLECTION); } public function first(Expense $expense): ?StoredExpenseReceipt { $media = $expense->getFirstMedia(self::COLLECTION); if (! $media) { return null; } return new StoredExpenseReceipt($media->getPath(), $media->file_name); } }