. */ declare(strict_types=1); namespace FireflyIII\Factory; use FireflyIII\Models\TransactionGroup; use FireflyIII\User; /** * Class TransactionGroupFactory * * @codeCoverageIgnore */ class TransactionGroupFactory { /** @var TransactionJournalFactory */ private $journalFactory; /** @var User The user */ private $user; /** * TransactionGroupFactory constructor. */ public function __construct() { $this->journalFactory = app(TransactionJournalFactory::class); } /** * Store a new transaction journal. * * @param array $data * * @return TransactionGroup */ public function create(array $data): TransactionGroup { $this->journalFactory->setUser($this->user); $collection = $this->journalFactory->create($data); $title = $data['group_title'] ?? null; $title = '' === $title ? null : $title; if (null !== $title) { $title = substr($title, 0, 255); } $group = new TransactionGroup; $group->user()->associate($this->user); $group->title = $title; $group->save(); $group->transactionJournals()->saveMany($collection); return $group; } /** * Set the user. * * @param User $user */ public function setUser(User $user): void { $this->user = $user; } }