public function savePublicTransition(\Akzo\Scheme $scheme, $stateTransition) { $transitionName = $stateTransition->getName(); try { $transition = new \Akzo\Scheme\Transition(); $transition->scheme()->associate($scheme); $transition->type = $transitionName; $transition->before_state = $stateTransition->getInitialStates()[0]; $transition->after_state = $stateTransition->getState(); $transition->comments = $scheme->getComment(); if (strcmp($transitionName, \Akzo\Scheme\StateTransition::INITIATE_CREATED_SCHEME) === 0 || strcmp($transitionName, \Akzo\Scheme\StateTransition::INITIATE_STAGED_SCHEME) === 0 || strcmp($transitionName, \Akzo\Scheme\StateTransition::INITIATE_UPDATED_SCHEME) === 0) { $transition->user()->associate($scheme->initiator); } else { if (strcmp($transitionName, \Akzo\Scheme\StateTransition::REVIEW_SCHEME) === 0) { $transition->user()->associate($scheme->reviewer); } else { if (strcmp($transitionName, \Akzo\Scheme\StateTransition::APPROVE_SCHEME) === 0) { $transition->user()->associate($scheme->approver); } else { if (strcmp($transitionName, \Akzo\Scheme\StateTransition::REQUEST_SCHEME_UPDATE) === 0 && in_array(\Akzo\Scheme\State::TO_BE_REVIEWED, $stateTransition->getInitialStates())) { $transition->before_state = \Akzo\Scheme\State::TO_BE_REVIEWED; $transition->user()->associate($scheme->reviewer); } else { if (strcmp($transitionName, \Akzo\Scheme\StateTransition::REQUEST_SCHEME_UPDATE) === 0 && in_array(\Akzo\Scheme\State::TO_BE_APPROVED, $stateTransition->getInitialStates())) { $transition->before_state = \Akzo\Scheme\State::TO_BE_APPROVED; $transition->user()->associate($scheme->approver); } else { if (strcmp($transitionName, \Akzo\Scheme\StateTransition::REQUEST_SCHEME_REVIEW) === 0) { $transition->user()->associate($scheme->approver); } else { if (strcmp($transitionName, \Akzo\Scheme\StateTransition::EDIT_APPROVED_SCHEME) === 0) { $transition->user()->associate($scheme->initiator); } } } } } } } return $transition->save(); } catch (\PDOException $e) { $GLOBALS['logger']->info("Error: " . $e->getMessage()); throw new \InvalidArgumentException(\Akzo\Product\ErrorMessages::PROCESS_ERROR, \Native5\Core\Http\StatusCodes::BAD_REQUEST); } }
public function addSchemeTransition(\Akzo\User $user, \Akzo\Scheme $scheme, $stateTransition, $comments) { try { $transition = new \Akzo\Scheme\Transition(); $transition->scheme()->associate($scheme); $transition->user()->associate($user); $transition->type = $stateTransition; $transition->comments = $comments; return $transition->save(); } catch (\PDOException $e) { $GLOBALS['logger']->info("Error: " . $e->getMessage()); throw new \InvalidArgumentException(\Akzo\Product\ErrorMessages::PROCESS_ERROR, \Native5\Core\Http\StatusCodes::BAD_REQUEST); } }