. */ declare(strict_types=1); namespace FireflyIII\Factory; use FireflyIII\Models\PiggyBank; use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; use FireflyIII\User; /** * Class PiggyBankFactory */ class PiggyBankFactory { /** @var PiggyBankRepositoryInterface */ private $repository; /** @var User */ private $user; /** * PiggyBankFactory constructor. */ public function __construct() { $this->repository = app(PiggyBankRepositoryInterface::class); } /** * @param int|null $piggyBankId * @param null|string $piggyBankName * * @return PiggyBank|null */ public function find(?int $piggyBankId, ?string $piggyBankName): ?PiggyBank { $piggyBankId = intval($piggyBankId); $piggyBankName = strval($piggyBankName); if (strlen($piggyBankName) === 0 && $piggyBankId === 0) { return null; } // first find by ID: if ($piggyBankId > 0) { /** @var PiggyBank $piggyBank */ $piggyBank = $this->repository->find($piggyBankId); if (!is_null($piggyBank)) { return $piggyBank; } } // then find by name: if (strlen($piggyBankName) > 0) { /** @var PiggyBank $piggyBank */ $piggyBank = $this->repository->findByName($piggyBankName); if (!is_null($piggyBank)) { return $piggyBank; } } return null; } /** * @param User $user */ public function setUser(User $user) { $this->user = $user; $this->repository->setUser($user); } }