public function testCreate()
 {
     $aGetFields = $this->getFields();
     $module = $this->em->getRepository('BigfishEavBundle:Module')->find(1);
     $aContent = array();
     foreach ($aGetFields as $field) {
         $aContent[$field['identifier']] = $field['testData'];
     }
     $object = $this->container->get('eav.module.manager');
     $object->setModule($module);
     $container = new Container();
     $container->setModule($module);
     $container->setSequence(999);
     $this->em->persist($container);
     $this->em->flush();
     $container = $object->save($container, $aContent);
     $this->assertNotNull($container);
     $this->assertNotNull($module);
 }
 /**
  * createModuleData.
  */
 public function createModuleData()
 {
     $aFields = $this->getFields();
     $aContent = array();
     foreach ($aFields as $field) {
         $aContent[$field['identifier']] = $field['testData'];
     }
     $oModule = new Module();
     $oModule->setName('Test Module');
     $oModule->setDescription('test');
     $sequence = 0;
     foreach ($aFields as $field) {
         $oField = new Field();
         $oField->setName($field['name']);
         $oField->setFormType($field['form']);
         $oField->setIdentifier($field['identifier']);
         $this->em->persist($oField);
         $oModuleHasField = new ModuleHasField();
         $oModuleHasField->setField($oField);
         $oModuleHasField->setModule($oModule);
         $oModuleHasField->setSequence($sequence);
         $this->em->persist($oModuleHasField);
         ++$sequence;
     }
     $this->em->flush();
     for ($i = 0; $i < $this->rows; ++$i) {
         $container = new Container();
         $container->setModule($oModule);
         $container->setSequence(999);
         $this->em->persist($container);
         $this->em->flush();
         $this->container->enterScope('request');
         $this->container->set('request', new Request(), 'request');
         $object = $this->container->get('eav.module.manager');
         $object->setModule($oModule);
         $object->save($container, $aContent);
     }
     $this->em->clear();
 }
 /**
  * @param Module    $module
  * @param Container $container
  * @param array     $data
  *
  * @return Container
  */
 public function save(Container $container = null, array $data)
 {
     if (null == $this->module) {
         throw new \Exception('First set a module');
     }
     if (!$container) {
         $container = new Container();
         $container->setModule($this->module);
         $container->setSequence(1);
         $this->em->persist($container);
     }
     foreach ($data as $input => $value) {
         $field = $this->em->getRepository('BigfishEavBundle:Field')->findOneBy(array('identifier' => $input));
         if (!$field) {
             continue;
         }
         if ($field->getTranslate()) {
             $content = $this->em->getRepository('BigfishEavBundle:Content')->findOneBy(array('field' => $field, 'container' => $container, 'language' => $this->language));
         } else {
             $content = $this->em->getRepository('BigfishEavBundle:Content')->findOneBy(array('field' => $field, 'container' => $container));
         }
         if ($field) {
             if (!$content) {
                 $content = new Content();
                 $content->setContainer($container);
                 $content->setField($field);
             }
             if ($this->columnMapper->getColumn(ColumnMapperInterface::SETTER, $field->getFormType())) {
                 $column = $this->columnMapper->getColumn(ColumnMapperInterface::SETTER, $field->getFormType());
                 $content->{$column}($value);
             }
             // if field has to be translated
             if ($field->getTranslate()) {
                 $content->setLanguage($this->language);
             }
             $this->em->persist($content);
             $this->em->flush();
             // execute event when exists
             if ($field->getEvent()) {
                 $event = new FieldEvent($container, $field, $this->language, $value, $content);
                 $this->eventDispatcher->dispatch($field->getEvent(), $event);
             }
         }
     }
     return $container;
 }