/** * Run the condition using the values from the condition model * * @param Bag $bag Traveler bag object with data from the pipeline * * @return boolean */ protected function runCondition(Bag $bag) { $fieldValue = $bag->lookAt($this->condition->field); $operator = $this->condition->operator; if ($this->checkEqualsAndNotEquals($operator, $fieldValue)) { return true; } if ($this->checkGreaterAndLessThan($operator, $fieldValue)) { return true; } return false; }
/** * Processes the action * * @param Bag $bag Travelers Bag object * * @return boolean */ public function processAction(Bag $bag) { $type = $this->action->type; /** @var \App\Pipeline\Execution\Manager $executorManager */ $executorManager = app('ExecutorManager'); $executor = $executorManager->getByType($type); if ($executor === null) { return false; } $output = $executor->execute($this->action); if ($output === false) { return false; } $bag->give($output, 'ExecutorOutput'); return true; }
/** * Restore the instance after serialization. * * @return void */ public function __wakeup() { $this->bag->unserialize(); $this->previousPipes = array_map(function ($pipeIdentifier) { return PipeFactory::makeFromPipeIdentifier($pipeIdentifier); }, $this->previousPipes); $this->nextPipe = PipeFactory::makeFromPipeIdentifier($this->nextPipe); $progressModelIdentifier = $this->progress; $this->progress = (new $progressModelIdentifier->class())->findOrFail($progressModelIdentifier->id); }