/** * Persists Dataelement Field Option relation and return json response on success. * * @Secure(roles="ROLE_SUPER_USER,ROLE_DHISDATACONNECTION_UPDATERELATION") * @Route("/updateRelation.{_format}", requirements={"_format"="yml|xml|json"}, defaults={"_format"="json"}, name="dhisdataconnection_updaterelation") * @Method("POST") * @Template() */ public function updateRelationAction($_format) { $em = $this->getDoctrine()->getManager(); $connectionId = $this->getRequest()->request->get('connectionId'); $dhisDataelementUids = $this->getRequest()->request->get('dhisDataelementUids'); $dhisDataelementNames = $this->getRequest()->request->get('dhisDataelementNames'); $dhisComboUids = $this->getRequest()->request->get('dhisComboUids'); $dhisComboNames = $this->getRequest()->request->get('dhisComboNames'); $fieldOptionTargetNodes = NULL; // Fetch existing targets and field options belonging to target $entity = $em->getRepository('HrisIntergrationBundle:DHISDataConnection')->find($connectionId); //Get rid of current fields $em->createQueryBuilder('dataelementFieldOptionRelation')->delete('HrisIntergrationBundle:DataelementFieldOptionRelation', 'dataelementFieldOptionRelation')->where('dataelementFieldOptionRelation.dhisDataConnection= :dhisDataConnection')->andWhere('dataelementFieldOptionRelation.dataelementUid= :dataelementUid')->andWhere('dataelementFieldOptionRelation.dataelementname= :dataelementname')->andWhere('dataelementFieldOptionRelation.categoryComboUid= :categoryComboUid')->andWhere('dataelementFieldOptionRelation.categoryComboname= :categoryComboname')->setParameters(array('dhisDataConnection' => $entity, 'dataelementUid' => $dhisDataelementUids, 'categoryComboUid' => $dhisComboUids, 'categoryComboname' => $dhisComboNames, 'dataelementname' => $dhisDataelementNames))->getQuery()->getResult(); $em->flush(); $columnFieldOptionGroup = $em->getRepository('HrisFormBundle:FieldOptionGroup')->findOneBy(array('name' => $dhisDataelementNames)); $rowFieldOptionGroup = $em->getRepository('HrisFormBundle:FieldOptionGroup')->findOneBy(array('name' => $dhisComboNames)); if (sizeof($columnFieldOptionGroup) && sizeof($rowFieldOptionGroup)) { //Insert relation $dataelementFieldOptionRelation = new DataelementFieldOptionRelation(); $dataelementFieldOptionRelation->setDhisDataConnection($entity); $dataelementFieldOptionRelation->setCategoryComboname($dhisComboNames); $dataelementFieldOptionRelation->setCategoryComboUid($dhisComboUids); $dataelementFieldOptionRelation->setDataelementname($dhisDataelementNames); $dataelementFieldOptionRelation->setDataelementUid($dhisDataelementUids); $dataelementFieldOptionRelation->setColumnFieldOptionGroup($columnFieldOptionGroup); $dataelementFieldOptionRelation->setRowFieldOptionGroup($rowFieldOptionGroup); $result = NULL; try { $em->persist($dataelementFieldOptionRelation); $em->flush(); $result = 'success'; } catch (ORMException $e) { $result = 'failed'; } } else { $result = 'failed'; } $serializer = $this->container->get('serializer'); return array('entities' => $serializer->serialize($result, $_format)); }
/** * Remove dataelementFieldOptionRelation * * @param \Hris\IntergrationBundle\Entity\DataelementFieldOptionRelation $dataelementFieldOptionRelation */ public function removeDataelementFieldOptionRelation(\Hris\IntergrationBundle\Entity\DataelementFieldOptionRelation $dataelementFieldOptionRelation) { $this->dataelementFieldOptionRelation->removeElement($dataelementFieldOptionRelation); }