/** * @param \Generated\Shared\Transfer\ClauseTransfer $clauseTransfer * * @throws \Spryker\Zed\Discount\Business\Exception\QueryStringException * * @return \Spryker\Zed\Discount\Business\QueryString\Specification\DecisionRuleSpecification\DecisionRuleSpecificationInterface */ public function getSpecificationContext(ClauseTransfer $clauseTransfer) { foreach ($this->decisionRulePlugins as $decisionRulePlugin) { if (strcasecmp($decisionRulePlugin->getFieldName(), $clauseTransfer->getField()) === 0) { return new DecisionRuleContext($decisionRulePlugin, $clauseTransfer); } } throw new QueryStringException(sprintf('Could not find decision rule plugin for "%s" field. Have you registered it in "%s::getDecisionRulePlugins" plugins stack?', $clauseTransfer->getField(), DiscountDependencyProvider::class)); }
/** * @param \Generated\Shared\Transfer\ClauseTransfer $clauseTransfer * * @throws \Spryker\Zed\Discount\Business\Exception\QueryStringException * * @return void */ protected function validateIfFieldIsRegistered(ClauseTransfer $clauseTransfer) { $clauseField = $clauseTransfer->getField(); if ($clauseTransfer->getAttribute()) { $clauseField = $clauseField . '.' . $clauseTransfer->getAttribute(); } foreach ($this->metaDataProvider->getAvailableFields() as $field) { if ($field === $clauseField) { return; } } throw new QueryStringException(sprintf('Could not found for field with name "%s".', $clauseTransfer->getField())); }