From 7219bc13014b1ada76b8be93b4a4683a1b11201c Mon Sep 17 00:00:00 2001 From: omair saleh Date: Sun, 17 Jul 2022 14:37:50 +0800 Subject: [PATCH] fix group reference duplicate bug --- ...ecksIfGroupTransactionBillNumberExists.php | 22 +++++++++++ .../GeneratesGroupTransactionBillNumber.php | 39 +++++++++++++++++++ .../RecoverGroupTransactionTableSeeder.php | 18 ++++----- 3 files changed, 68 insertions(+), 11 deletions(-) create mode 100644 app/Classes/Modules/Transactions/Services/ChecksIfGroupTransactionBillNumberExists.php create mode 100644 app/Classes/Modules/Transactions/Services/GeneratesGroupTransactionBillNumber.php diff --git a/app/Classes/Modules/Transactions/Services/ChecksIfGroupTransactionBillNumberExists.php b/app/Classes/Modules/Transactions/Services/ChecksIfGroupTransactionBillNumberExists.php new file mode 100644 index 00000000..d3be2121 --- /dev/null +++ b/app/Classes/Modules/Transactions/Services/ChecksIfGroupTransactionBillNumberExists.php @@ -0,0 +1,22 @@ +repository = $repository; + } + + public function execute(string $bill_no): bool { + return $this->repository->where('reference', $bill_no)->exists(); + } + +} \ No newline at end of file diff --git a/app/Classes/Modules/Transactions/Services/GeneratesGroupTransactionBillNumber.php b/app/Classes/Modules/Transactions/Services/GeneratesGroupTransactionBillNumber.php new file mode 100644 index 00000000..a8aab459 --- /dev/null +++ b/app/Classes/Modules/Transactions/Services/GeneratesGroupTransactionBillNumber.php @@ -0,0 +1,39 @@ +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); + + } + +} \ No newline at end of file diff --git a/database/seeds/RecoverGroupTransactionTableSeeder.php b/database/seeds/RecoverGroupTransactionTableSeeder.php index f675fdc0..02edb6a1 100644 --- a/database/seeds/RecoverGroupTransactionTableSeeder.php +++ b/database/seeds/RecoverGroupTransactionTableSeeder.php @@ -2,19 +2,15 @@ ini_set('memory_limit', '-1'); use App\Classes\Jobs\GenerateGroupTransactionsWhiteForm; -use App\Classes\Modules\Documents\DataTransferObjects\DocumentObject; use App\Classes\Modules\Documents\Services\CreatesDocument; use App\Classes\Modules\Documents\Services\CreatesFiles; -use App\Classes\Modules\Transactions\Services\GeneratesTransactionBillNumber; +use App\Classes\Modules\Transactions\Services\GeneratesGroupTransactionBillNumber; use App\Classes\ValueObjects\Constants\ApprovalStatus; -use App\Classes\ValueObjects\Constants\DocumentType; -use App\Models\Document; use App\Models\Transaction; use App\Models\Group; use Illuminate\Database\Seeder; use Illuminate\Support\Facades\DB; -use Meneses\LaravelMpdf\Facades\LaravelMpdf; class RecoverGroupTransactionTableSeeder extends Seeder { @@ -25,20 +21,20 @@ class RecoverGroupTransactionTableSeeder extends Seeder /** @var CreatesFiles */ private $createsFile; - /** @var GeneratesTransactionBillNumber */ - private $generatesTransactionBillNumber; + /** @var GeneratesGroupTransactionBillNumber */ + private $generatesGroupTransactionBillNumber; /** * RecoverGroupTransactionTableSeeder constructor. * @param CreatesDocument $createsDocument * @param CreatesFiles $createsFile - * @param GeneratesTransactionBillNumber $generatesTransactionBillNumber + * @param GeneratesGroupTransactionBillNumber $generatesGroupTransactionBillNumber */ - public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFile, GeneratesTransactionBillNumber $generatesTransactionBillNumber) + public function __construct(CreatesDocument $createsDocument, CreatesFiles $createsFile, GeneratesGroupTransactionBillNumber $generatesGroupTransactionBillNumber) { $this->createsDocument = $createsDocument; $this->createsFile = $createsFile; - $this->generatesTransactionBillNumber = $generatesTransactionBillNumber; + $this->generatesGroupTransactionBillNumber = $generatesGroupTransactionBillNumber; } @@ -98,7 +94,7 @@ class RecoverGroupTransactionTableSeeder extends Seeder $group->issuer = $issuer; $group->receiver = $receiver; - $group->reference = $this->generatesTransactionBillNumber->execute('SPO-', $date); + $group->reference = $this->generatesGroupTransactionBillNumber->execute('SPO-', $date); $group->amount = $amount; $group->original_amount = $original_amount; $group->currency_id = $currency_id;