/** * 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 TariffPlanServicesModel || $this->_acceptArrayAsModel && is_array($data))) { $this->_messages = array(); $this->_messages[self::NOT_TARIFF_PLAN_SERVICES] = $this->_messageTemplatesUser[self::NOT_TARIFF_PLAN_SERVICES]; return false; } if (!parent::isValid($data, $context, $removeNotPresentFields)) { return false; } if (!$data instanceof TariffPlanServicesModel) { $data = new TariffPlanServicesModel($data); } /* * GLOBALPORTAL-97959 */ $ignoreDeleted = $data->id && $data->published == ServicePackModel::STATUS_PUBLISHED; $tariffsData = $data->getData(); $tariffsData[] = $data->getDefaultData(); $validatorData = new TariffPlan\Services\Complex\DataTariffValidate(array('ignoreDeleted' => $ignoreDeleted)); $tariffsVoice = $data->getOrigVoice(); $tariffsVoice[] = $data->getDefaultOrigVoice(); $validatorVoice = new TariffPlan\Services\Complex\VoiceTariffValidate(array('ignoreDeleted' => $ignoreDeleted)); $tariffsTerm = $data->getTermVoice(); $tariffsTerm[] = $data->getDefaultTermVoice(); $validatorTerm = new TariffPlan\Services\Complex\VoiceTariffValidate(array('ignoreDeleted' => $ignoreDeleted)); $tariffsSms = $data->getSms(); $tariffsSms[] = $data->getDefaultSms(); $validatorSms = new TariffPlan\Services\Complex\SmsTariffValidate(array('ignoreDeleted' => $ignoreDeleted)); if (!$this->_correctNumberOfComplexTariffs($tariffsData, $validatorData, 'data') || !$this->_correctNumberOfComplexTariffs($tariffsVoice, $validatorVoice, 'originated voice') || !$this->_correctNumberOfComplexTariffs($tariffsTerm, $validatorTerm, 'terminated voice') || !$this->_correctNumberOfComplexTariffs($tariffsSms, $validatorSms, 'sms')) { 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 TariffPlanServicesModel || $this->_acceptArrayAsModel && is_array($data))) { $this->_messages = array(); $this->_messages[self::NOT_TARIFF_PLAN_SERVICES] = $this->_messageTemplatesUser[self::NOT_TARIFF_PLAN_SERVICES]; return false; } if (!parent::isValid($data, $context, $removeNotPresentFields)) { return false; } if (!$data instanceof TariffPlanServicesModel) { $data = new TariffPlanServicesModel($data); } $tariffs = $data->getData(); $tariffs[] = $data->getDefaultData(); $count = 0; $limit = 3; $validator = new TariffPlan\Services\Complex\DataTariffValidate(); foreach ($tariffs as $tariff) { if (!$validator->isValid($tariff)) { $count++; if ($count > $limit) { $this->_messages = array(); $this->_messages[self::TOO_MANY_COMPLEX_TARIFFS] = str_replace('%type%', 'data', $this->_messageTemplatesUser[self::TOO_MANY_COMPLEX_TARIFFS]); return false; } } } $tariffs = $data->getOrigVoice(); $tariffs[] = $data->getDefaultOrigVoice(); $count = 0; $limit = 3; $validator = new TariffPlan\Services\Complex\VoiceTariffValidate(); foreach ($tariffs as $tariff) { if (!$validator->isValid($tariff)) { $count++; if ($count > $limit) { $this->_messages = array(); $this->_messages[self::TOO_MANY_COMPLEX_TARIFFS] = str_replace('%type%', 'origined voice', $this->_messageTemplatesUser[self::TOO_MANY_COMPLEX_TARIFFS]); return false; } } } $tariffs = $data->getTermVoice(); $tariffs[] = $data->getDefaultTermVoice(); $count = 0; $limit = 3; $validator = new TariffPlan\Services\Complex\VoiceTariffValidate(); foreach ($tariffs as $tariff) { if (!$validator->isValid($tariff)) { $count++; if ($count > $limit) { $this->_messages = array(); $this->_messages[self::TOO_MANY_COMPLEX_TARIFFS] = str_replace('%type%', 'terminated voice', $this->_messageTemplatesUser[self::TOO_MANY_COMPLEX_TARIFFS]); return false; } } } $tariffs = $data->getSms(); $tariffs[] = $data->getDefaultSms(); $count = 0; $limit = 3; $validator = new TariffPlan\Services\Complex\SmsTariffValidate(); foreach ($tariffs as $tariff) { if (!$validator->isValid($tariff)) { $count++; if ($count > $limit) { $this->_messages = array(); $this->_messages[self::TOO_MANY_COMPLEX_TARIFFS] = str_replace('%type%', 'sms', $this->_messageTemplatesUser[self::TOO_MANY_COMPLEX_TARIFFS]); return false; } } } return true; }