/**
  * @param string      $identifier
  * @param string|null $familyCode
  *
  * @return ProductInterface
  */
 protected function findOrCreateProduct($identifier, $familyCode)
 {
     $product = $this->repository->findOneByIdentifier($identifier);
     if (!$product) {
         $product = $this->builder->createProduct($identifier, $familyCode);
     }
     return $product;
 }
 /**
  * Transform an array of values to ProductValues
  *
  * @param array $arrayValues
  *
  * @return ArrayCollection
  */
 protected function transformArrayToValues(array $arrayValues)
 {
     $product = $this->productBuilder->createProduct();
     $this->productUpdater->update($product, $arrayValues);
     $values = $product->getValues();
     $values->removeElement($product->getIdentifier());
     return $values;
 }
 /**
  * Create product
  *
  * @param Request $request
  * @param string  $dataLocale
  *
  * @Template
  * @AclAncestor("pim_enrich_product_create")
  *
  * @return array
  */
 public function createAction(Request $request, $dataLocale)
 {
     if (!$request->isXmlHttpRequest()) {
         return $this->redirectToRoute('pim_enrich_product_index');
     }
     $product = $this->productBuilder->createProduct();
     $form = $this->createForm('pim_product_create', $product, $this->getCreateFormOptions($product));
     if ($request->isMethod('POST')) {
         $form->submit($request);
         if ($form->isValid()) {
             $this->productSaver->save($product);
             $this->addFlash('success', 'flash.product.created');
             if ($dataLocale === null) {
                 $dataLocale = $this->getDataLocaleCode();
             }
             $url = $this->generateUrl('pim_enrich_product_edit', ['id' => $product->getId(), 'dataLocale' => $dataLocale]);
             $response = ['status' => 1, 'url' => $url];
             return new Response(json_encode($response));
         }
     }
     return ['form' => $form->createView(), 'dataLocale' => $this->getDataLocaleCode()];
 }
 /**
  * {@inheritdoc}
  */
 protected function createEntity($class, array $data)
 {
     return $this->productBuilder->createProduct();
 }