/**
  * @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));
 }
Exemple #2
0
 /**
  * @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()));
 }