/** * Updates the progress to be at the end of the pipe * * @param Traveler $traveler Traveler to store * @param Pipe $pipe Pipe the traveler is going to next * * @return void */ public function endOfPipe(Traveler $traveler, Pipe $pipe) { if ($traveler->nextPipe !== null) { // Create new traveler progress (and thus new traveler) if this // isn't the first pipe to be processed. $progress = new TravelerProgress(); $progress->initialiseProgress(); $progress->stream()->associate($this->stream); $progress->status = 'Traveling'; $progress->pipeable()->associate($pipe->getModel()); $progress->save(); $traveler->progress = $progress; return; } $this->status = 'Traveling'; $this->pipeable()->associate($pipe->getModel()); $this->save(); }