protected function _validateTransitions(StatusModel $status)
 {
     if (count($status->getTransitions()) > 2) {
         $this->_messages[self::TOO_MANY_TRANSITIONS] = $this->_messageTemplatesUser[self::TOO_MANY_TRANSITIONS];
         return false;
     }
     if (count($status->getTransitions()) < 2) {
         $this->_messages[self::NOT_ENOUGH_TRANSITIONS] = $this->_messageTemplatesUser[self::NOT_ENOUGH_TRANSITIONS];
         return false;
     }
     if (!$this->_validateTimeCauseTransition($status, LifeCycleModel::STATUS_SUSPENDED)) {
         return false;
     }
     if ($this->getUseTest()) {
         //To Test
         if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_TEST)) {
             return false;
         }
     } else {
         if ($this->getManual()) {
             if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_ACTIVATION_PENDANT)) {
                 return false;
             }
         } else {
             if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_ACTIVATION_READY)) {
                 return false;
             }
         }
     }
     return true;
 }
 protected function _validateTransitions(StatusModel $status)
 {
     if (count($status->getTransitions()) > 0) {
         $this->_messages[self::TOO_MANY_TRANSITIONS] = $this->_messageTemplatesUser[self::TOO_MANY_TRANSITIONS];
         return false;
     }
     return true;
 }
 protected function _validateTransitionExists(StatusModel $status, $destStatus)
 {
     $trans = $status->getTransitionByDestinationStatus($destStatus);
     if (is_null($trans)) {
         $this->_messages[self::MISSING_TRANSITION] = str_replace('%value%', $destStatus, $this->_messageTemplatesUser[self::MISSING_TRANSITION]);
         return false;
     }
     return $trans;
 }
 /**
  * Validate element value
  *
  * If a translation adapter is registered, any error messages will be
  * translated according to the current locale, using the given error code;
  * if no matching translation is found, the original message will be
  * utilized.
  *
  * Note: The *filtered* value is validated.
  *
  * @param  array   $data
  * @param  mixed   $context
  * @return boolean
  */
 public function isValid($data, $context = null, $removeNotPresentFields = false)
 {
     if (!($data instanceof AutomaticInfoModel || $this->_acceptArrayAsModel && is_array($data))) {
         $this->_messages = array();
         $this->_messages[self::NOT_AUTOMATIC_INFO] = $this->_messageTemplatesUser[self::NOT_AUTOMATIC_INFO];
         return false;
     }
     if ($data instanceof AutomaticInfoModel) {
         $voucherCause = $data->getVoucherCause();
         $voucherInfo = $data->getVoucherCauseInfo();
         $timeCause = $data->getTimerCause();
         $firstUseCause = $data->getFirstUseCause();
     } else {
         $voucherCause = isset($data['voucherCause']) ? $data['voucherCause'] : false;
         $voucherInfo = isset($data['voucherCauseInfo']) ? $data['voucherCauseInfo'] : null;
         $timeCause = isset($data['timerCause']) ? $data['timerCause'] : false;
         $firstUseCause = isset($data['firstUseCause']) ? $data['firstUseCause'] : false;
     }
     $status = new StatusModel($context['__parent']);
     if ($voucherCause) {
         if (!$voucherInfo) {
             $this->_messages = array();
             $this->_messages[self::NOT_VOUCHER_INFO] = $this->_messageTemplatesUser[self::NOT_VOUCHER_INFO];
             return false;
         }
         if (isset($status) && $status->getVouchers() === null) {
             $this->_messages = array();
             $this->_messages[self::NOT_VOUCHER_DATA] = $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA];
             return false;
         }
     }
     if ($timeCause && isset($status) && $status->getTimer() === null) {
         $this->_messages = array();
         $this->_messages[self::NOT_TIMER_DATA] = $this->_messageTemplatesUser[self::NOT_TIMER_DATA];
         return false;
     }
     if ($voucherCause && !$voucherInfo) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_INFO] = $this->_messageTemplatesUser[self::NOT_VOUCHER_INFO];
         return false;
     }
     if (!$timeCause && !$firstUseCause && !$voucherCause) {
         $this->_messages = array();
         $this->_messages[self::NOT_CAUSE] = $this->_messageTemplatesUser[self::NOT_CAUSE];
         return false;
     }
     return parent::isValid($data, $context, $removeNotPresentFields);
 }
 protected function _validateTransitions(StatusModel $status)
 {
     if (count($status->getTransitions()) > 6) {
         $this->_messages[self::TOO_MANY_TRANSITIONS] = $this->_messageTemplatesUser[self::TOO_MANY_TRANSITIONS];
         return false;
     }
     $min = $this->getUseTest() ? 6 : 5;
     if (count($status->getTransitions()) < $min) {
         $this->_messages[self::NOT_ENOUGH_TRANSITIONS] = $this->_messageTemplatesUser[self::NOT_ENOUGH_TRANSITIONS];
         return false;
     }
     //To InactiveNew
     if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_INACTIVE_NEW)) {
         return false;
     }
     //To Active
     if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_ACTIVE)) {
         return false;
     }
     //To Deactivate
     if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_DEACTIVATED)) {
         return false;
     }
     //To Retired
     if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_RETIRED)) {
         return false;
     }
     if ($this->getManual()) {
         //To Activation pendant
         if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_ACTIVATION_PENDANT)) {
             return false;
         }
     } else {
         //To Activation ready
         if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_ACTIVATION_READY)) {
             return false;
         }
     }
     if ($this->getUseTest()) {
         //To Test
         if (!$this->_validateManualTransition($status, LifeCycleModel::STATUS_TEST)) {
             return false;
         }
     }
     return true;
 }
 protected function _validateTransitions(StatusModel $status)
 {
     if (count($status->getTransitions()) > 2) {
         $this->_messages[self::TOO_MANY_TRANSITIONS] = $this->_messageTemplatesUser[self::TOO_MANY_TRANSITIONS];
         return false;
     }
     if (count($status->getTransitions()) < 2) {
         $this->_messages[self::NOT_ENOUGH_TRANSITIONS] = $this->_messageTemplatesUser[self::NOT_ENOUGH_TRANSITIONS];
         return false;
     }
     if (!parent::_validateTransitions($status)) {
         return false;
     }
     if (!$this->_validateFirstUseTransition($status, LifeCycleModel::STATUS_ACTIVE)) {
         return false;
     }
     return true;
 }
Exemplo n.º 7
0
 protected function _validateTransitions(StatusModel $status)
 {
     if (count($status->getTransitions()) > 2) {
         $this->_messages[self::TOO_MANY_TRANSITIONS] = $this->_messageTemplatesUser[self::TOO_MANY_TRANSITIONS];
         return false;
     }
     if (count($status->getTransitions()) < 2) {
         $this->_messages[self::NOT_ENOUGH_TRANSITIONS] = $this->_messageTemplatesUser[self::NOT_ENOUGH_TRANSITIONS];
         return false;
     }
     if (!parent::_validateTransitions($status)) {
         return false;
     }
     if ($this->getManual()) {
         if (!$this->_validateTransitionExists($status, LifeCycleModel::STATUS_ACTIVATION_PENDANT)) {
             return false;
         }
     } else {
         if (!$this->_validateTransitionExists($status, LifeCycleModel::STATUS_ACTIVATION_READY)) {
             return false;
         }
     }
     return true;
 }
 /**
  * Validate element value
  *
  * If a translation adapter is registered, any error messages will be
  * translated according to the current locale, using the given error code;
  * if no matching translation is found, the original message will be
  * utilized.
  *
  * Note: The *filtered* value is validated.
  *
  * @param  array   $data
  * @param  mixed   $context
  * @return boolean
  */
 public function isValid($data, $context = null, $removeNotPresentFields = false)
 {
     if (!($data instanceof VoucherCauseInfoModel || $this->_acceptArrayAsModel && is_array($data))) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_INFO] = $this->_messageTemplatesUser[self::NOT_VOUCHER_INFO];
         return false;
     }
     if (!parent::isValid($data, $context, $removeNotPresentFields)) {
         return false;
     }
     $status = new StatusModel($context['__parent']['__parent']);
     if (in_array(VoucherCauseInfoModel::VOUCHER_TYPE_VOICE_HOME, $data['vouchers']) && !($status->getVouchers()->getVoice() && $status->getVouchers()->getVoice()->getHome())) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_DATA] = str_replace('%value%', VoucherCauseInfoModel::VOUCHER_TYPE_VOICE_HOME, $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA]);
         return false;
     }
     if (in_array(VoucherCauseInfoModel::VOUCHER_TYPE_VOICE_ROAMING, $data['vouchers']) && !($status->getVouchers()->getVoice() && $status->getVouchers()->getVoice()->getRoaming())) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_DATA] = str_replace('%value%', VoucherCauseInfoModel::VOUCHER_TYPE_VOICE_ROAMING, $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA]);
         return false;
     }
     if (in_array(VoucherCauseInfoModel::VOUCHER_TYPE_SMS_HOME, $data['vouchers']) && !($status->getVouchers()->getSms() && $status->getVouchers()->getSms()->getHome())) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_DATA] = str_replace('%value%', VoucherCauseInfoModel::VOUCHER_TYPE_SMS_HOME, $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA]);
         return false;
     }
     if (in_array(VoucherCauseInfoModel::VOUCHER_TYPE_SMS_ROAMING, $data['vouchers']) && !($status->getVouchers()->getSms() && $status->getVouchers()->getSms()->getRoaming())) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_DATA] = str_replace('%value%', VoucherCauseInfoModel::VOUCHER_TYPE_SMS_ROAMING, $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA]);
         return false;
     }
     if (in_array(VoucherCauseInfoModel::VOUCHER_TYPE_DATA_HOME, $data['vouchers']) && !($status->getVouchers()->getData() && $status->getVouchers()->getData()->getHome())) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_DATA] = str_replace('%value%', VoucherCauseInfoModel::VOUCHER_TYPE_DATA_HOME, $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA]);
         return false;
     }
     if (in_array(VoucherCauseInfoModel::VOUCHER_TYPE_DATA_ROAMING, $data['vouchers']) && !($status->getVouchers()->getData() && $status->getVouchers()->getData()->getRoaming())) {
         $this->_messages = array();
         $this->_messages[self::NOT_VOUCHER_DATA] = str_replace('%value%', VoucherCauseInfoModel::VOUCHER_TYPE_DATA_ROAMING, $this->_messageTemplatesUser[self::NOT_VOUCHER_DATA]);
         return false;
     }
     return true;
 }