Files
izyim/app/Classes/Modules/Orders/Steps/GenerateOrderSteps.php
T
omair saleh 8a28eb1790 Revert "Merge branch 'dashboardReport' into 'master'"
This reverts merge request !5
2019-03-19 09:57:38 +00:00

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()
]);
}
}