/**
  * @dataProvider getSuccessMessageDataProvider
  *
  * @param string $expectedMessage
  * @param int $entitiesCount
  * @param null $shoppingListId
  */
 public function testGetSuccessMessage($expectedMessage, $entitiesCount = 0, $shoppingListId = null)
 {
     $withUrl = $entitiesCount && $shoppingListId;
     $url = '/test/url';
     $transChoice = 'transchoice';
     $transMessage = 'action';
     $this->router->expects($withUrl ? $this->once() : $this->never())->method('generate')->with('orob2b_shopping_list_frontend_view', ['id' => $shoppingListId])->willReturn($url);
     $this->translator->expects($this->once())->method('transChoice')->with('orob2b.shoppinglist.actions.add_success_message', $entitiesCount, ['%count%' => $entitiesCount])->willReturn($transChoice);
     $this->translator->expects($withUrl ? $this->once() : $this->never())->method('trans')->with('orob2b.shoppinglist.actions.view')->willReturn($transMessage);
     $this->assertEquals($expectedMessage, $this->generator->getSuccessMessage($shoppingListId, $entitiesCount));
 }
 /** {@inheritdoc} */
 public function process(array $data, Request $request)
 {
     if (empty($data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY]) || !is_array($data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY])) {
         return;
     }
     $data = $data[ProductDataStorage::ENTITY_ITEMS_DATA_KEY];
     $shoppingListId = (int) $request->get(sprintf('%s[%s]', QuickAddType::NAME, QuickAddType::ADDITIONAL_FIELD_NAME), null, true);
     $shoppingList = $this->shoppingListLineItemHandler->getShoppingList($shoppingListId);
     $productSkus = ArrayUtils::arrayColumn($data, 'productSku');
     $productIds = $this->getProductRepository()->getProductsIdsBySku($productSkus);
     $productSkuQuantities = array_combine($productSkus, ArrayUtils::arrayColumn($data, 'productQuantity'));
     $productIdsQuantities = array_combine($productIds, $productSkuQuantities);
     /** @var Session $session */
     $session = $request->getSession();
     $flashBag = $session->getFlashBag();
     try {
         $entitiesCount = $this->shoppingListLineItemHandler->createForShoppingList($shoppingList, array_values($productIds), $productIdsQuantities);
         $flashBag->add('success', $this->messageGenerator->getSuccessMessage($shoppingListId, $entitiesCount));
     } catch (AccessDeniedException $e) {
         $flashBag->add('error', $this->messageGenerator->getFailedMessage());
     }
 }
 /**
  * @param MassActionHandlerArgs $args
  * @param int $entitiesCount
  * @param int|null $shoppingListId
  *
  * @return MassActionResponse
  */
 protected function generateResponse(MassActionHandlerArgs $args, $entitiesCount = 0, $shoppingListId = null)
 {
     $transChoiceKey = $args->getMassAction()->getOptions()->offsetGetByPath('[messages][success]', 'orob2b.shoppinglist.actions.add_success_message');
     return new MassActionResponse($entitiesCount > 0, $this->messageGenerator->getSuccessMessage($shoppingListId, $entitiesCount, $transChoiceKey), ['count' => $entitiesCount]);
 }