OnuAdmin.php 7.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173
  1. <?php
  2. namespace StatsBundle\Admin;
  3. use Base\AdminBundle\Admin\BaseAdmin;
  4. use Sonata\AdminBundle\Datagrid\DatagridMapper;
  5. use Sonata\AdminBundle\Datagrid\ListMapper;
  6. use Sonata\AdminBundle\Form\FormMapper;
  7. use Sonata\AdminBundle\Show\ShowMapper;
  8. use DeviceBundle\Utils\DeviceTypes;
  9. use Symfony\Component\Form\Extension\Core\Type\ChoiceType;
  10. use Sonata\AdminBundle\Route\RouteCollection;
  11. class OnuAdmin extends BaseAdmin
  12. {
  13. /**
  14. * @param DatagridMapper $datagridMapper
  15. */
  16. protected function configureDatagridFilters(DatagridMapper $datagridMapper)
  17. {
  18. $em = $this->get("doctrine.orm.entity_manager");
  19. $deviceServer = $this->getParameter("device_server_base");
  20. $olts = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer' => $deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT'));
  21. $choices = array();
  22. foreach($olts as $olt) {
  23. $data = $olt->jsonExtraData();
  24. $name = null;
  25. (isset($data['name']))? $name = $data['name'] : $name = $olt->getIp();
  26. $choices[$name] = $olt->getDeviceId();
  27. }
  28. $datagridMapper
  29. ->add('oltDeviceId', 'doctrine_orm_string', array(), 'choice', array('choices' => $choices))
  30. ->add('ponSerialNumber')
  31. ->add('ponPort')
  32. ->add('status')
  33. ;
  34. }
  35. /**
  36. * @param ListMapper $listMapper
  37. */
  38. protected function configureListFields(ListMapper $listMapper)
  39. {
  40. $em = $this->get("doctrine.orm.entity_manager");
  41. $servers = $em->getRepository("StatsBundle:DeviceServer")->findAll();
  42. $olts_server = $urls_server = array();
  43. foreach($servers as $deviceServer) {
  44. $urls = $this->get('webservice')->getData($deviceServer->getUrl());
  45. $urls_server[$deviceServer->getId()] = $urls;
  46. $olts = $em->getRepository("StatsBundle:device")->findBy(array('deviceServer'=>$deviceServer, 'deviceType' => 'FTTHBundle\Entity\OLT'));
  47. $olts_server[$deviceServer->getId()] = array();
  48. foreach($olts as $olt) {
  49. $data = $olt->jsonExtraData();
  50. $name = null;
  51. if(isset($data['name'])) $name = $data['name'];
  52. $olts_server[$deviceServer->getId()][$olt->getDeviceId()] = $name;
  53. }
  54. }
  55. $this->parameters = array('urls_server' => $urls_server, 'olts_server' => $olts_server);
  56. $listMapper
  57. ->add('deviceServer')
  58. ->add('oltDeviceId', 'string', array('template' => 'StatsBundle:Onu:base_list_field_olt.html.twig'))
  59. ->add('ponSerialNumber', 'string', array('template' => 'StatsBundle:Onu:show_link.html.twig'))
  60. ->add('ponPort')
  61. ->add('status')
  62. ->add('txPower', 'string', array('template' => 'StatsBundle:Onu:base_list_field_tx.html.twig'))
  63. ->add('rxPower', 'string', array('template' => 'StatsBundle:Onu:base_list_field_rx.html.twig'))
  64. ->add('voltage', 'string', array('template' => 'StatsBundle:Onu:base_list_field_voltage.html.twig'))
  65. ->add('temperature', 'string', array('template' => 'StatsBundle:Onu:base_list_field_temperature.html.twig'))
  66. ->add('uptime', 'string', array('template' => 'StatsBundle:Onu:base_list_field_uptime.html.twig'))
  67. ->add('updated')
  68. ;
  69. }
  70. /**
  71. * @param FormMapper $formMapper
  72. */
  73. protected function configureFormFields(FormMapper $formMapper)
  74. {
  75. }
  76. /**
  77. * @param ShowMapper $showMapper
  78. */
  79. protected function configureShowFields(ShowMapper $showMapper)
  80. {
  81. $object = $this->getSubject();
  82. $em = $this->get("doctrine.orm.entity_manager");
  83. $olt = $em->getRepository("StatsBundle:device")->findOneBy(array('deviceId' => $object->getOltDeviceId(), 'deviceServer'=>$object->getDeviceServer(), 'deviceType' => 'FTTHBundle\Entity\OLT'));
  84. if($olt) {
  85. $data = $olt->jsonExtraData();
  86. $oltName = null;
  87. if(isset($data['name'])) $oltName = $data['name'];
  88. }
  89. $showMapper
  90. ->add('oltDeviceId', 'string', array('template' => 'StatsBundle:Onu:base_show_field_olt.html.twig','oltName' => $oltName))
  91. ->add('ponSerialNumber')
  92. ->add('ponPort')
  93. ->add('status')
  94. ->add('txPower', 'string', array('template' => 'StatsBundle:Onu:base_show_field_tx.html.twig'))
  95. ->add('rxPower', 'string', array('template' => 'StatsBundle:Onu:base_show_field_rx.html.twig'))
  96. ->add('voltage', 'string', array('template' => 'StatsBundle:Onu:base_show_field_voltage.html.twig'))
  97. ->add('temperature', 'string', array('template' => 'StatsBundle:Onu:base_show_field_temperature.html.twig'))
  98. ->add('updated', 'string', array('template' => 'StatsBundle:Onu:base_show_field_uptime.html.twig'))
  99. ;
  100. }
  101. /**
  102. * @param string $action
  103. * @param Object $object
  104. *
  105. * @return array
  106. */
  107. public function configureActionButtons($action, $object = null)
  108. {
  109. $actions = parent::configureActionButtons($action, $object);
  110. if($action == "list") {
  111. $actions['show_in_map'] = array('template' => 'StatsBundle:Onu:map_button.html.twig');
  112. } elseif($action == "show") {
  113. $deviceServer = $object->getDeviceServer();
  114. $urls = $this->get('webservice')->getData($deviceServer->getUrl());
  115. if(isset($urls['url_ftth'])) {
  116. $deviceId = $object->getDeviceId();
  117. if(is_null($deviceId)) {
  118. if(isset($urls['api_ftth'])) {
  119. $apiOnu = "{$urls['api_ftth']}/api/onus.json"; //http://ftth:8000/api/onus.json
  120. $oltDeviceId = $object->getOltDeviceId();
  121. $tenancyId = $object->getTenancyId();
  122. $ponSerialNumber = $object->getPonSerialNumber();
  123. $filters = array("tenancyId" => $tenancyId, "olt" => $oltDeviceId, "ponSerialNumber" => $ponSerialNumber);
  124. $onu = $this->get('webservice')->getData($apiOnu, $filters);
  125. if(empty($onu)) {
  126. $translator = $this->get('translator');
  127. $flashbag = $this->get('session')->getFlashBag();
  128. $flashbag->add("error", $translator->trans("msg_no_registered_in_ftth",array(),"StatsBundle"));
  129. $url = "{$urls['url_ftth']}/admin/ftth/onu/create?olt={$object->getOltDeviceId()}&psn={$object->getPonSerialNumber()}";
  130. $actions['add_in_ftth'] = array('template' => 'StatsBundle:Onu:ftth_button_add.html.twig');
  131. } elseif(isset($onu[0]['id'])) {
  132. $deviceId = $onu[0]['id'];
  133. $url = "{$urls['url_ftth']}/admin/ftth/onu/{$deviceId}/show";
  134. $actions['show_in_ftth'] = array('template' => 'StatsBundle:Onu:ftth_button.html.twig');
  135. }
  136. }
  137. } else {
  138. $url = "{$urls['url_ftth']}/admin/ftth/onu/{$deviceId}/show";
  139. $actions['show_in_ftth'] = array('template' => 'StatsBundle:Onu:ftth_button.html.twig');
  140. }
  141. $this->parameters = array('url_ftth' => $url);
  142. }
  143. }
  144. return $actions;
  145. }
  146. protected function configureRoutes(RouteCollection $collection)
  147. {
  148. $collection->remove('delete');
  149. $collection->remove('create');
  150. $collection->remove('edit');
  151. }
  152. }