private function createSupportCreditsProducts()
 {
     $this->log('Creating support credits products...');
     $pack20 = $this->productRepo->findOneByCode('SUPPORT_CREDITS_PACK_20');
     if (is_null($pack20)) {
         $pack20 = new Product();
         $pack20->setCode('SUPPORT_CREDITS_PACK_20');
         $pack20->setType('SUPPORT_CREDITS');
         $details = array('name' => 'Pack 20', 'nb_credits' => 20, 'nb_hours' => 4, 'saving' => 0);
         $pack20->setDetails($details);
         $pack20->setIsActivated(true);
         $priceSolution = new PriceSolution();
         $priceSolution->setPrice(250);
         $priceSolution->setProduct($pack20);
         $this->om->persist($priceSolution);
         $pack20->addPriceSolution($priceSolution);
         $this->om->persist($pack20);
     }
     $pack50 = $this->productRepo->findOneByCode('SUPPORT_CREDITS_PACK_50');
     if (is_null($pack50)) {
         $pack50 = new Product();
         $pack50->setCode('SUPPORT_CREDITS_PACK_50');
         $pack50->setType('SUPPORT_CREDITS');
         $details = array('name' => 'Pack 50', 'nb_credits' => 50, 'nb_hours' => 10, 'saving' => 50);
         $pack50->setDetails($details);
         $pack50->setIsActivated(true);
         $priceSolution = new PriceSolution();
         $priceSolution->setPrice(575);
         $priceSolution->setProduct($pack50);
         $this->om->persist($priceSolution);
         $pack50->addPriceSolution($priceSolution);
         $this->om->persist($pack50);
     }
     $pack100 = $this->productRepo->findOneByCode('SUPPORT_CREDITS_PACK_100');
     if (is_null($pack100)) {
         $pack100 = new Product();
         $pack100->setCode('SUPPORT_CREDITS_PACK_100');
         $pack100->setType('SUPPORT_CREDITS');
         $details = array('name' => 'Pack 100', 'nb_credits' => 100, 'nb_hours' => 20, 'saving' => 250);
         $pack100->setDetails($details);
         $pack100->setIsActivated(true);
         $priceSolution = new PriceSolution();
         $priceSolution->setPrice(1000);
         $priceSolution->setProduct($pack100);
         $this->om->persist($priceSolution);
         $pack50->addPriceSolution($priceSolution);
         $this->om->persist($pack100);
     }
 }
 /**
  * {@inheritDoc}
  */
 public function load(ObjectManager $manager)
 {
     $data = array(array('code' => 'SUPPORT_CREDITS_PACK_20', 'type' => 'SUPPORT_CREDITS', 'details' => array('name' => 'Pack 20', 'nb_credits' => 20, 'nb_hours' => 4, 'saving' => 0), 'pricing' => 250), array('code' => 'SUPPORT_CREDITS_PACK_50', 'type' => 'SUPPORT_CREDITS', 'details' => array('name' => 'Pack 50', 'nb_credits' => 50, 'nb_hours' => 10, 'saving' => 50), 'pricing' => 575), array('code' => 'SUPPORT_CREDITS_PACK_100', 'type' => 'SUPPORT_CREDITS', 'details' => array('name' => 'Pack 100', 'nb_credits' => 100, 'nb_hours' => 20, 'saving' => 250), 'pricing' => 1000));
     foreach ($data as $info) {
         $product = new Product();
         $product->setCode($info['code']);
         $product->setType($info['type']);
         $product->setDetails($info['details']);
         $product->setIsActivated(true);
         $priceSolution = new PriceSolution();
         $priceSolution->setPrice($info['pricing']);
         $priceSolution->setProduct($product);
         $manager->persist($priceSolution);
         $product->addPriceSolution($priceSolution);
         $manager->persist($product);
     }
     $manager->flush();
 }
 public function createFromFormByType($form, $type)
 {
     $code = $form->get('code')->getData();
     $product = new Product();
     $product->setCode($code);
     $product->setType($type);
     $data = $form->getData();
     unset($data['code']);
     $product->setDetails($data);
     $this->om->persist($product);
     $this->om->flush();
     return $product;
 }
 /**
  * @EXT\Route(
  *      "/product/{product}/edit",
  *      name="formalibre_product_edit",
  *      options = {"expose"=true}
  * )
  * @Security("has_role('ROLE_ADMIN')")
  * @EXT\Template
  *
  * @return Response
  */
 public function editProductAction(Product $product)
 {
     $type = $product->getType();
     $form = $this->createForm($this->productManager->getEditFormByType($type));
     $form->handleRequest($this->get('request'));
     if ($form->isValid()) {
         //do some stuff
         $details = $product->getDetails();
         foreach ($form->getIterator() as $el) {
             //var_dump($el);
             $details[$el->getName()] = $form->get($el->getName())->getData();
         }
         $product->setDetails($details);
         $this->productManager->persist($product);
         return new JsonResponse(array('id' => $product->getId(), 'code' => $product->getCode(), 'type' => $product->getType(), 'details' => $product->getDetails(), 'priceSolutions' => array()));
     }
     return $this->render('FormaLibreInvoiceBundle:Administration:editProductForm.html.twig', array('form' => $form->createView(), 'product' => $product));
 }