/**
  * Refresh stock index for specific stock items after successful order placement
  *
  * @param EventObserver $observer
  * @return void
  */
 public function execute(EventObserver $observer)
 {
     // Reindex quote ids
     $quote = $observer->getEvent()->getQuote();
     $productIds = [];
     foreach ($quote->getAllItems() as $item) {
         $productIds[$item->getProductId()] = $item->getProductId();
         $children = $item->getChildrenItems();
         if ($children) {
             foreach ($children as $childItem) {
                 $productIds[$childItem->getProductId()] = $childItem->getProductId();
             }
         }
     }
     if ($productIds) {
         $this->stockIndexerProcessor->reindexList($productIds);
     }
     // Reindex previously remembered items
     $productIds = [];
     foreach ($this->itemsForReindex->getItems() as $item) {
         $item->save();
         $productIds[] = $item->getProductId();
     }
     if (!empty($productIds)) {
         $this->priceIndexer->reindexList($productIds);
     }
     $this->itemsForReindex->clear();
     // Clear list of remembered items - we don't need it anymore
 }