예제 #1
0
 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);
     }
 }
예제 #2
0
 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);
     }
 }