/** * Update the value of a product feature. * * @param FeatureProductUpdateEvent $event */ public function updateFeatureProductValue(FeatureProductUpdateEvent $event) { // If the feature is not free text, it may have one ore more values. // If the value exists, we do not change it // If the value does not exists, we create it. // // If the feature is free text, it has only a single value. // Etiher create or update it. $featureProductQuery = FeatureProductQuery::create()->filterByFeatureId($event->getFeatureId())->filterByProductId($event->getProductId()); if ($event->getIsTextValue() !== true) { $featureProductQuery->filterByFeatureAvId($event->getFeatureValue()); } $featureProduct = $featureProductQuery->findOne(); if ($featureProduct == null) { $featureProduct = new FeatureProduct(); $featureProduct->setDispatcher($event->getDispatcher())->setProductId($event->getProductId())->setFeatureId($event->getFeatureId()); } if ($event->getIsTextValue() == true) { $featureProduct->setFreeTextValue($event->getFeatureValue()); } else { $featureProduct->setFeatureAvId($event->getFeatureValue()); } $featureProduct->save(); $event->setFeatureProduct($featureProduct); }