mirror of
https://gitlab.com/CIEFWorldwideSdnBhd/izyim.git
synced 2026-08-23 06:23:59 +00:00
8a28eb1790
This reverts merge request !5
68 lines
1.9 KiB
PHP
68 lines
1.9 KiB
PHP
<?php
|
|
|
|
namespace App\Classes\Modules\Orders\Steps;
|
|
|
|
|
|
use App\Classes\Constants;
|
|
use App\Classes\Objects\Orders\OrderStepObject;
|
|
use App\Models\ModularStep;
|
|
use App\Models\PrimaryStep;
|
|
use Illuminate\Support\Collection;
|
|
|
|
class GenerateOrderSteps
|
|
{
|
|
/** @var Collection */
|
|
protected $steps;
|
|
|
|
/**
|
|
* GenerateOrderSteps constructor.
|
|
* @param Collection $steps
|
|
*/
|
|
public function __construct(Collection $steps)
|
|
{
|
|
$this->steps = $steps;
|
|
}
|
|
|
|
|
|
/**
|
|
* @param array $modules
|
|
* @return Collection
|
|
*/
|
|
public function getSteps(array $modules): Collection
|
|
{
|
|
$this->primarySteps();
|
|
$this->modularSteps($modules);
|
|
return $this->steps->sortBy('sequence');
|
|
}
|
|
|
|
public function modularSteps(array $modules){
|
|
$modularSteps = ModularStep::with('moduleGroups.steps')->whereIn('reference_id', $modules)->get();
|
|
foreach ($modularSteps as $module){
|
|
foreach($module->moduleGroups as $group){
|
|
$i = 0;
|
|
foreach ($group->steps as $step){
|
|
$i++;
|
|
$sequence = Constants::ORDER_PRIMARY_STEPS[$group->previous]['sequence'] + ($i/10);
|
|
$this->addSteps((new OrderStepObject(false, $step->reference_id, $sequence)));
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
private function primarySteps(){
|
|
PrimaryStep::all()->map(function ($step){
|
|
$this->addSteps((new OrderStepObject(
|
|
true,
|
|
$step->reference_id,
|
|
Constants::ORDER_PRIMARY_STEPS[$step->reference_id]['sequence'])));
|
|
});
|
|
}
|
|
|
|
private function addSteps(OrderStepObject $step){
|
|
$this->steps->push([
|
|
'primary' => $step->isPrimary(),
|
|
'reference_id' => $step->getReferenceId(),
|
|
'sequence' => $step->getSequence()
|
|
]);
|
|
}
|
|
} |