Files
exchange-2.0/app/Classes/Modules/Transactions/Services/GeneratesGroupTransactionBillNumber.php
2022-07-17 14:37:50 +08:00

39 lines
1.1 KiB
PHP

<?php
namespace App\Classes\Modules\Transactions\Services;
use Carbon\Carbon;
class GeneratesGroupTransactionBillNumber
{
/** @var ChecksIfGroupTransactionBillNumberExists */
private $checksIfGroupTransactionBillNumberExists;
/**
* GeneratesGroupTransactionBillNumber constructor.
* @param ChecksIfGroupTransactionBillNumberExists $checksIfGroupTransactionBillNumberExists
*/
public function __construct(ChecksIfGroupTransactionBillNumberExists $checksIfGroupTransactionBillNumberExists)
{
$this->checksIfGroupTransactionBillNumberExists = $checksIfGroupTransactionBillNumberExists;
}
/**
* @param string $prefix
* @param Carbon|null $date
* @return string
*/
public function execute(string $prefix, ?Carbon $date = null): string {
if(!$date){
$date = carbon::now();
}
$billNumber = $prefix.$date->format('Y').$date->format('m').'-'.mt_rand(10000, 99999);
return !$this->checksIfGroupTransactionBillNumberExists->execute($billNumber) ? $billNumber : self::execute($prefix);
}
}