public function testCircularReferenceHandler()
 {
     $serializer = new Serializer(array($this->normalizer));
     $this->normalizer->setSerializer($serializer);
     $this->normalizer->setCircularReferenceHandler(function ($obj) {
         return get_class($obj);
     });
     $obj = new CircularReferenceDummy();
     $expected = array('me' => 'Symfony\\Component\\Serializer\\Tests\\Fixtures\\CircularReferenceDummy');
     $this->assertEquals($expected, $this->normalizer->normalize($obj));
 }
 /**
  * @Route("/dossier/{id}/prequalified/list", name="contracting_dossier_prequalified_loader")
  * @Template()
  * @Security("has_role('ROLE_CONTRACTING')")
  */
 public function dossierPrequalifiedListAction($id)
 {
     $em = $this->getDoctrine()->getManager();
     $query = $em->createQuery('SELECT p,c FROM AppBundle:PreQualified p JOIN p.contract c WHERE p.contract=:id')->setParameter('id', $id);
     $prequalified = $query->getResult();
     $encoder = new JsonEncoder();
     $normalizer = new GetSetMethodNormalizer();
     $normalizer->setCircularReferenceHandler(function ($object) {
         return $object->getId();
     });
     $serializer = new Serializer(array($normalizer), array($encoder));
     $jsonContent = $serializer->serialize(array('data' => $prequalified), 'json');
     //Audit
     $contract = $em->getRepository('AppBundle:Contract')->findOneBy(array('id' => $id));
     if ($prequalified) {
         $audit = new Audit();
         $user = $this->get('security.token_storage')->getToken()->getUser();
         $audit->setUsername($user->getUsername());
         $audit->setName($user->getFirstname() . " " . $user->getLastname());
         $audit->setFunctionType("Contracting");
         $audit->setEventType("View pre-qualified suppliers");
         $audit->setDossier($contract);
         $em->persist($audit);
         $em->flush();
     }
     return new Response($jsonContent);
 }
Exemplo n.º 3
0
 /**
  * @Route("/client/clone/{idClient}", requirements={"idClient" = "\d+"}, defaults={"id" = "-1"}, name="cloneClient")
  * @Method("POST")
  * @Template()
  */
 public function cloneClientAction(Request $request, $idClient)
 {
     $t = $this->get('translator');
     $idoriginal = $idClient;
     if (null == $idClient) {
         throw $this->createNotFoundException($t->trans('Unable to find Client entity:', array(), 'BinovoElkarBackup') . $idClient);
     }
     $clientrow = array();
     try {
         // CLONE CLIENT
         $repository = $this->getDoctrine()->getRepository('BinovoElkarBackupBundle:Client');
         $client = $repository->find($idoriginal);
         if (null == $client) {
             throw $this->createNotFoundException($t->trans('Unable to find Client entity:', array(), 'BinovoElkarBackup') . $client);
         }
         $newname = $client->getName() . "-cloned1";
         while ($repository->findOneByName($newname)) {
             $newname++;
         }
         $new = clone $client;
         $new->setName($newname);
         $newem = $this->getDoctrine()->getManager();
         $newem->persist($new);
         $newem->flush();
         $newem->detach($new);
         $idnew = $new->getId();
         // CLONE JOBS
         $repository = $this->getDoctrine()->getRepository('BinovoElkarBackupBundle:Job');
         $jobs = $repository->findBy(array('client' => $idoriginal));
         foreach ($jobs as $job) {
             $repository = $this->getDoctrine()->getRepository('BinovoElkarBackupBundle:Client');
             $client = $repository->find($idnew);
             $newjob = clone $job;
             $newjob->setClient($client);
             $newjob->setDiskUsage(0);
             $newjob->setStatus('');
             $newem = $this->getDoctrine()->getManager();
             $newem->persist($newjob);
             $newem->flush();
             $newem->detach($newjob);
         }
     } catch (Exception $e) {
         $this->get('session')->getFlashBag()->add('clone', $t->trans('Unable to clone your client: %extrainfo%', array('%extrainfo%' => $e->getMessage()), 'BinovoElkarBackup'));
     }
     //$response = new Response($t->trans('Client cloned successfully', array(), 'BinovoElkarBackup'));
     //$response->headers->set('Content-Type', 'text/plain');
     // Custom normalizer
     //$normalizers[] = new ClientNormalizer();
     //$normalizer = new ObjectNormalizer();
     $normalizer = new GetSetMethodNormalizer();
     $normalizer->setCircularReferenceHandler(function ($object) {
         return $object->getId();
     });
     $normalizers[] = $normalizer;
     $encoders[] = new JsonEncoder();
     $encoders[] = new XmlEncoder();
     $serializer = new Serializer($normalizers, $encoders);
     $repository = $this->getDoctrine()->getRepository('BinovoElkarBackupBundle:Client');
     $client = $repository->find($idnew);
     //syslog(LOG_ERR, "Obtaining first job: ".$client->getJobs()[0]->getId());
     syslog(LOG_ERR, "Serializing object: " . $client->getName());
     $json = $serializer->serialize($client, 'json');
     syslog(LOG_ERR, "Output: " . print_r($json, TRUE));
     $response = new JsonResponse(array('msg' => $t->trans('Client cloned successfully', array(), 'BinovoElkarBackup'), 'action' => 'callbackClonedClient', 'data' => array($json)));
     return $response;
 }
 /**
  * @Route("/profile_attachment/list", name="user_profile_attachment_list")
  * @Template()
  * @Security("has_role('ROLE_ECONOMIC')")
  */
 public function profileAttachmentListAction()
 {
     $user = $this->get('security.token_storage')->getToken()->getUser();
     $em = $this->getDoctrine()->getManager();
     $query = $em->createQuery('SELECT p
                                 FROM AppBundle:Portfolio p WHERE p.economicUser=:id')->setParameter('id', $user->getId());
     $profileAttachments = $query->getResult();
     $encoder = new JsonEncoder();
     $normalizer = new GetSetMethodNormalizer();
     $normalizer->setCircularReferenceHandler(function ($object) {
         return $object->getId();
     });
     if ($profileAttachments) {
         //Audit
         $audit = new Audit();
         $audit->setUsername($user->getUsername());
         $audit->setName($user->getFirstname() . " " . $user->getLastname());
         $audit->setFunctionType("Economic");
         $audit->setEventType("Load profile attachment");
         $em->persist($audit);
         $em->flush();
     }
     $serializer = new Serializer(array($normalizer), array($encoder));
     $jsonContent = $serializer->serialize(array('data' => $profileAttachments), 'json');
     return new Response($jsonContent);
 }