d2d.emegrendeles.hu/app/Console/Commands/EmegrendelesOrderNumberTest.php
E98Developer 68b7c35bef git init
2026-02-28 06:53:05 +01:00

136 lines
4.2 KiB
PHP

<?php
namespace App\Console\Commands;
use App\Models\OrderNumber;
use App\Models\ProductGroup;
use Box\Spout\Common\Exception\IOException;
use Box\Spout\Common\Exception\UnsupportedTypeException;
use Box\Spout\Reader\Exception\ReaderNotOpenedException;
use Illuminate\Console\Command;
class EmegrendelesOrderNumberTest extends Command
{
/**
* The name and signature of the console command.
*
* @var string
*/
protected $signature = 'emegrendeles:orderNumberTest {workerNumber=1}';
/**
* The console command description.
*
* @var string
*/
protected $description = 'Recovery and test order numbers from emegrendeles';
protected $startOrderNumber = 4999;
/**
* Create a new command instance.
*
* @return void
*/
public function __construct()
{
parent::__construct();
}
private function getMaxSupplierOrderNumber(): int
{
// SELECT max(supplierOrderNumber) FROM `order_archives` WHERE deliveryDate>'2025-01-01';
return \DB::table('order_archives')
->where('deliveryDate', '>', '2025-01-01')
->max('supplierOrderNumber');
}
private function setDefaultOrderNumberForSuppliers(): void
{
$this->info('Start setDefaultOrderNumberForSuppliers');
$supplierIds = \DB::table('order_archives')
->selectRaw('DISTINCT(supplier_id)')
->orderBy('supplier_id')
->get();
foreach ($supplierIds as $supplierId) {
$o = OrderNumber::create([
'id' => $this->startOrderNumber,
'year' => 25,
'supplier_id' => $supplierId->supplier_id,
'order_id' => 1000 + $supplierId->supplier_id,
]);
}
$this->info('End setDefaultOrderNumberForSuppliers');
}
private function generateRandomSupplierNumber($count = 10000)
{
$this->info('Start generateRandomSupplierNumber');
$supplierIds = \DB::table('order_archives')
->selectRaw('DISTINCT(supplier_id)')
->orderBy('supplier_id')
->get();
$supplierIds = $supplierIds->pluck('supplier_id')->toArray();
$startOrderID = $this->getMaxSupplierOrderNumber();
$startOrderID += $this->argument('workerNumber') * $count;
$this->info('Start generateRandomSupplierNumber from orderID:'.$startOrderID);
for ($i = 0; $i < $count; $i++) {
$randomSupplierId = $supplierIds[array_rand($supplierIds)];
try {
$o = OrderNumber::create([
'year' => 25,
'supplier_id' => $randomSupplierId,
'order_id' => $startOrderID + $i,
]);
$this->info('Created OrderNumber: '.$o->id.' for supplier:'.$o->supplier_id);
} catch (\Exception $e) {
$this->error('Error creating Order for supplier:'.$randomSupplierId.' - '.$e->getMessage());
}
usleep(rand(150, 600));
}
$this->info('End generateRandomSupplierNumber');
}
/**
* Execute the console command.
*
*
* @throws IOException
* @throws UnsupportedTypeException
* @throws ReaderNotOpenedException
*/
public function handle(): int
{
var_dump(config('app.env', 'env'.now()));
var_dump(config('app.stage', 'fuck'.now()));
$DBMaxSupplierOrderNumber = $this->getMaxSupplierOrderNumber();
if ($this->startOrderNumber < $DBMaxSupplierOrderNumber) {
$this->error('Max startOrderNumber wrong. Set:'.
$this->startOrderNumber.
' inDB:'.$DBMaxSupplierOrderNumber
);
return false;
}
\DB::table('order_numbers')->truncate();
$this->setDefaultOrderNumberForSuppliers();
// $this->generateRandomSupplierNumber();
return 0;
/*
//$name = $this->argument('name');
\Schema::disableForeignKeyConstraints();
ProductGroup::truncate();
\Schema::enableForeignKeyConstraints();
$this->info('Import End');
return 0;
*/
}
}