. */ declare(strict_types=1); namespace FireflyIII\Factory; use FireflyIII\Models\Attachment; use FireflyIII\Models\Note; use FireflyIII\User; /** * Class AttachmentFactory */ class AttachmentFactory { /** @var User */ private $user; /** * @param array $data * * @return Attachment|null */ public function create(array $data): ?Attachment { // create attachment: $attachment = Attachment::create( [ 'user_id' => $this->user->id, 'attachable_id' => $data['model_id'], 'attachable_type' => $data['model'], 'md5' => '', 'filename' => $data['filename'], 'title' => '' === $data['title'] ? null : $data['title'], 'description' => null, 'mime' => '', 'size' => 0, 'uploaded' => 0, ] ); $notes = (string)($data['notes'] ?? ''); if ('' !== $notes) { $note = new Note; $note->noteable()->associate($attachment); $note->text = $notes; $note->save(); } return $attachment; } /** * @param User $user */ public function setUser(User $user): void { $this->user = $user; } }