public function load(ObjectManager $manager) { $logger = $this->container->get('logger'); $stopwatch = new Stopwatch(); $stopwatch->start('dummyResourceTableGeneration'); // Populate dummy forms $this->addDummyResourceTables(); // Seek dummy fields $loadFieldData = new LoadFieldData(); $loadFieldData->addDummyFields(); $dummyFields = $loadFieldData->getFields(); foreach ($this->resourceTables as $resourceTableKey => $humanResourceResourceTable) { $resourceTable = new ResourceTable(); $resourceTable->setName($humanResourceResourceTable['name']); $resourceTable->setDescription($humanResourceResourceTable['description']); $resourceTableRefernce = strtolower(str_replace(' ', '', $humanResourceResourceTable['name'])) . '-resourcetable'; $this->addReference($resourceTableRefernce, $resourceTable); $manager->persist($resourceTable); // Add Field Members for the resource table created $sort = 1; foreach ($dummyFields as $key => $dummyField) { //Filter addition of fields not compliant to filter if ($humanResourceResourceTable['filter'] == false || $humanResourceResourceTable['inputType'] == $dummyField['inputType'] || $humanResourceResourceTable['compulsory'] == $dummyField['compulsory']) { $resourceTableMember = new ResourceTableFieldMember(); $resourceTableMember->setField($manager->merge($this->getReference(strtolower(str_replace(' ', '', $dummyField['name'])) . '-field'))); $resourceTableMember->setResourceTable($manager->merge($this->getReference($resourceTableRefernce))); $resourceTableMember->setSort($sort++); $referenceName = strtolower(str_replace(' ', '', $humanResourceResourceTable['name']) . str_replace(' ', '', $dummyField['name'])) . '-resourcetable-field-member'; $this->addReference($referenceName, $resourceTableMember); $manager->persist($resourceTableMember); $resourceTable->addResourceTableFieldMember($resourceTableMember); unset($resourceTableMember); } } $manager->persist($resourceTable); unset($resourceTable); } $manager->flush(); $dummyResourceTableGenerationLap = $stopwatch->lap('dummyResourceTableGeneration'); $dummyResourceTableGenerationDuration = round($dummyResourceTableGenerationLap->getDuration() / 1000, 2); if ($dummyResourceTableGenerationDuration < 60) { $dummyResourceTableGenerationDurationMessage = round($dummyResourceTableGenerationDuration, 2) . ' sec.'; } elseif ($dummyResourceTableGenerationDuration >= 60 && $dummyResourceTableGenerationDuration < 3600) { $dummyResourceTableGenerationDurationMessage = round($dummyResourceTableGenerationDuration / 60, 2) . ' min.'; } elseif ($dummyResourceTableGenerationDuration >= 3600 && $dummyResourceTableGenerationDuration < 216000) { $dummyResourceTableGenerationDurationMessage = round($dummyResourceTableGenerationDuration / 3600, 2) . ' hrs'; } else { $dummyResourceTableGenerationDurationMessage = round($dummyResourceTableGenerationDuration / 86400, 2) . ' days'; } echo "\tDummy data schema generation complete in " . $dummyResourceTableGenerationDurationMessage . "\n"; // Generate resource tables $resourceTables = $manager->getRepository('HrisFormBundle:ResourceTable')->findAll(); foreach ($resourceTables as $resourceTableKey => $resourceTable) { // Ugly hack to generate resource table for "All Fields" only if ($resourceTable->getName() == "All Fields") { $success = $resourceTable->generateResourceTable($manager, $logger); $messageLog = $resourceTable->getMessageLog(); if ($success) { echo $messageLog; } else { echo "Failed with:" . $messageLog; } } } }
/** * Edits an existing ResourceTable entity. * * @Secure(roles="ROLE_SUPER_USER,ROLE_RESOURCETABLE_UPDATE") * @Route("/{id}", requirements={"id"="\d+"}, name="resourcetable_update") * @Method("PUT") * @Template("HrisFormBundle:ResourceTable:edit.html.twig") */ public function updateAction(Request $request, $id) { $em = $this->getDoctrine()->getManager(); $entity = $em->getRepository('HrisFormBundle:ResourceTable')->find($id); if (!$entity) { throw $this->createNotFoundException('Unable to find ResourceTable entity.'); } $deleteForm = $this->createDeleteForm($id); $editForm = $this->createForm(new ResourceTableType(), $entity); $editForm->bind($request); if ($editForm->isValid()) { $incr = 1; $requestcontent = $request->request->get('hris_formbundle_resourcetabletype'); $fieldIds = $requestcontent['fields']; // Clear ResourceTableFieldMembers //Get rid of current fields $em->createQueryBuilder('resourceTableFieldMember')->delete('HrisFormBundle:ResourceTableFieldMember', 'resourceTableFieldMember')->where('resourceTableFieldMember.resourceTable= :resourceTable')->setParameter('resourceTable', $entity)->getQuery()->getResult(); $em->flush(); foreach ($fieldIds as $fieldIdKey => $fieldId) { $field = $this->getDoctrine()->getRepository('HrisFormBundle:Field')->findOneBy(array('id' => $fieldId)); $resourceTableFieldMember = new ResourceTableFieldMember(); $resourceTableFieldMember->setField($field); $resourceTableFieldMember->setResourceTable($entity); $resourceTableFieldMember->setSort($incr++); $entity->addResourceTableFieldMember($resourceTableFieldMember); unset($field); } $em->persist($entity); $em->flush(); return $this->redirect($this->generateUrl('resourcetable_show', array('id' => $id))); } return array('entity' => $entity, 'edit_form' => $editForm->createView(), 'delete_form' => $deleteForm->createView()); }