Browse Source

Refactory device manager

Guillermo Espinoza 8 years ago
parent
commit
63f17f67e2

+ 2 - 2
composer.lock

@@ -1335,7 +1335,7 @@
             "source": {
                 "type": "git",
                 "url": "ssh://git@infra.flowdat.com:222/VendorSoftwareFlowdat3/DeviceBundle.git",
-                "reference": "d3d8b2be63b5373cc4e141bf85c4243b6af92469"
+                "reference": "bf1029b73d5370885cc3790c5ed708b3263848ca"
             },
             "type": "library",
             "autoload": {
@@ -1350,7 +1350,7 @@
                 "bundle",
                 "validators"
             ],
-            "time": "2017-05-30 12:58:26"
+            "time": "2017-05-30 18:33:01"
         },
         {
             "name": "ik/oauthclient-bundle",

+ 8 - 8
src/StatsBundle/Admin/StatsDeviceAdmin.php

@@ -19,9 +19,9 @@ class StatsDeviceAdmin extends BaseAdmin
     protected function configureDatagridFilters(DatagridMapper $datagridMapper)
     {
         $datagridMapper
-                ->add('ip')
-                ->add('deviceType')
                 ->add('deviceId')
+                ->add('deviceType')
+                ->add('ip')
         ;
     }
 
@@ -31,9 +31,9 @@ class StatsDeviceAdmin extends BaseAdmin
     protected function configureListFields(ListMapper $listMapper)
     {
         $listMapper
-                ->add('ip')
-                ->add('deviceType')
                 ->add('deviceId')
+                ->add('deviceType')
+                ->add('ip')
                 ->add('_action', null, array(
                     'actions' => array(
                         'show' => array(),
@@ -50,13 +50,13 @@ class StatsDeviceAdmin extends BaseAdmin
     protected function configureFormFields(FormMapper $formMapper)
     {
         $formMapper
-                ->add('ip')
+                ->add('deviceId')
                 ->add('deviceType', ChoiceType::class, array(
                     'choices' => DeviceTypes::getChoices(),
                     'choice_translation_domain' => false,
                     'help' => $this->trans('help.deviceTypes'),
                 ))
-                ->add('deviceId')
+                ->add('ip')
         ;
     }
 
@@ -66,9 +66,9 @@ class StatsDeviceAdmin extends BaseAdmin
     protected function configureShowFields(ShowMapper $showMapper)
     {
         $showMapper
-                ->add('ip')
-                ->add('deviceType')
                 ->add('deviceId')
+                ->add('deviceType')
+                ->add('ip')
         ;
     }
 

+ 2 - 3
src/StatsBundle/Entity/StatsDevice.php

@@ -27,9 +27,8 @@ class StatsDevice
     /**
      * @var string
      *
-     * @ORM\Column(type="string", length=255, unique=true)
+     * @ORM\Column(type="string", length=255, unique=true, nullable=true)
      * 
-     * @Assert\NotNull
      * @Assert\Ip
      */
     private $ip;
@@ -75,7 +74,7 @@ class StatsDevice
      *
      * @return StatsDevice
      */
-    public function setIp($ip)
+    public function setIp($ip = null)
     {
         $this->ip = $ip;
 

+ 17 - 5
src/StatsBundle/Services/DeviceManager.php

@@ -66,7 +66,12 @@ class DeviceManager
                 );
                 $remoteDevices = $this->webservice->get($deviceServer->getUrl(), $filters);
                 foreach ($remoteDevices as $remoteDevice) {
-                    $device = $this->create($remoteDevice['deviceType'], $remoteDevice['deviceId'], $remoteDevice['ip']);
+                    $deviceType = $remoteDevice['deviceType'];
+                    $deviceId = $remoteDevice['deviceId'];
+                    unset($remoteDevice['id']);
+                    unset($remoteDevice['deviceType']);
+                    unset($remoteDevice['deviceId']);
+                    $device = $this->create($deviceType, $deviceId, $remoteDevice);
                     if ($device) {
                         $devices[] = $device;
                     }
@@ -80,18 +85,25 @@ class DeviceManager
     /**
      * @param string $deviceType
      * @param int $deviceId
-     * @param string $ip
+     * @param array $data
      * 
      * @return StatsDevice
      */
-    public function create($deviceType, $deviceId, $ip)
+    public function create($deviceType, $deviceId, $data = array())
     {
         $device = null;
-        if (is_null($this->statsDeviceRepository->findOneByIp($ip))) {
+        $statsDevice = $this->statsDeviceRepository->findOneBy(array(
+            'deviceType' => $deviceType,
+            'deviceId' => $deviceId,
+        ));
+        if (is_null($statsDevice)) {
             $device = new StatsDevice();
             $device->setDeviceType($deviceType);
             $device->setDeviceId($deviceId);
-            $device->setIp($ip);
+            foreach ($data as $column => $value) {
+                $method = 'set'.ucfirst($column);  
+                $device->$method($value);
+            }
 
             if ($this->validator->validate($device)->count() == 0) {
                 $this->em->persist($device);