<?php

namespace App\Classes\Modules\Wallets\Services;


class GeneratesWalletCode
{

    /** @var ChecksIfWalletCodeExists */
    private $walletCodeExists;

    /**
     * GeneratesWalletCode constructor.
     * @param ChecksIfWalletCodeExists $walletCodeExists
     */
    public function __construct(ChecksIfWalletCodeExists $walletCodeExists)
    {
        $this->walletCodeExists = $walletCodeExists;
    }


    /**
     * @return int
     */
    public function execute(): int {

        $code = mt_rand(100000001, 999999999);
        return !$this->walletCodeExists->execute($code) ? $code : self::execute();

    }

}