Quellcode durchsuchen

FD3-57 Se añade la posibilidad de actualizar Devices existentes y
eliminar aquellos que fueron eliminados en el Base(recordar que traemos
los elementos desde el Base)

Maximiliano Schvindt vor 8 Jahren
Ursprung
Commit
3ee71de731

+ 3 - 1
src/StatsBundle/Admin/DeviceAdmin.php

@@ -23,6 +23,7 @@ class DeviceAdmin extends BaseAdmin
                 ->add('deviceId')
                 ->add('deviceType')
                 ->add('ip')
+                ->add('tenancyId')
         ;
     }
 
@@ -33,11 +34,12 @@ class DeviceAdmin extends BaseAdmin
     {
         $listMapper
                 ->add('deviceServer')
+                ->add('shortType')
                 ->add('deviceId')
                 //->add('deviceType')
-                ->add('shortType')
                 ->add('ip')
                 ->add('extraData')
+                ->add('tenancyId')
                 ->add('_action', null, array(
                     'actions' => array(
                         'show' => array(),

+ 60 - 0
src/StatsBundle/Entity/Device.php

@@ -60,6 +60,18 @@ class Device
      * 
      */
     protected $deviceServer;
+
+    /**
+     * @var int
+     *
+     * @ORM\Column(type="integer", nullable=false, options={"default":1})
+     */
+    protected $tenancyId = 1;
+
+    /**
+     * @ORM\Column(type="datetime")
+     */
+    protected $updated;
     
 
     /**
@@ -162,4 +174,52 @@ class Device
         return str_replace("FTTHBundle\\Entity\\","",$this->deviceType);
     }
 
+    /**
+     * Set tenancyId
+     *
+     * @param int $tenancyId
+     *
+     * @return Device
+     */
+    public function setTenancyId($tenancyId)
+    {
+        $this->tenancyId = $tenancyId;
+
+        return $this;
+    }
+
+    /**
+     * Get tenancyId
+     *
+     * @return int
+     */
+    public function getTenancyId()
+    {
+        return $this->tenancyId;
+    }
+
+    /**
+     * Set updated
+     *
+     * @param Datetime $tenancyId
+     *
+     * @return Device
+     */
+    public function setUpdated($updated)
+    {
+        $this->updated = $updated;
+
+        return $this;
+    }
+
+    /**
+     * Get updated
+     *
+     * @return \DateTime
+     */
+    public function getUpdated()
+    {
+        return $this->updated;
+    }
+
 }

+ 14 - 0
src/StatsBundle/Resources/translations/StatsBundle.es.yml

@@ -2,6 +2,8 @@ breadcrumb:
     link_device_server_list: Listado Servidor Dispositivos
     link_device_server_create: Crear Servidor Dispositivos
     link_stats_device_list: Listado Dispositivos
+    link_device_list: Listado de Dispositivos
+    link_device_create: Crear Dispositivo
 
 filter:
     label_name: Nombre
@@ -10,6 +12,9 @@ filter:
     label_ip: Ip
     label_device_type: Tipo Dispositivo
     label_device_id: Id Dispositivo
+    label_device_server: Servidor
+    label_short_type: Tipo
+    label_tenancy_id: Tenencia
 
 form:
     label_name: Nombre
@@ -18,6 +23,9 @@ form:
     label_ip: Ip
     label_device_type: Tipo Dispositivo
     label_device_id: Id Dispositivo
+    label_device_server: Servidor
+    label_short_type: Tipo
+    label_tenancy_id: Tenencia
 
 show:
     label_name: Nombre
@@ -26,6 +34,9 @@ show:
     label_ip: Ip
     label_device_type: Tipo Dispositivo
     label_device_id: Id Dispositivo
+    label_device_server: Servidor
+    label_short_type: Tipo
+    label_tenancy_id: Tenencia
 
 list:
     label_name: Nombre
@@ -35,6 +46,9 @@ list:
     label_ip: Ip
     label_device_type: Tipo Dispositivo
     label_device_id: Id Dispositivo
+    label_device_server: Servidor
+    label_short_type: Tipo
+    label_tenancy_id: Tenencia
     
 help:
     url: Url a consultar dispositivos

+ 21 - 2
src/StatsBundle/Services/DeviceManager.php

@@ -58,20 +58,27 @@ class DeviceManager
     {
         $devices = array();
         $deviceServers = $this->deviceServerRepository->findAll();
+        $dateTime = new \DateTime("now");
+        
         foreach ($deviceServers as $deviceServer) {
             $deviceTypes = $deviceServer->getDeviceTypes();
+            
             foreach ($deviceTypes as $deviceType) {
                 $filters = array(
                     'deviceType' => $deviceType,
                 );
                 $remoteDevices = $this->webservice->get($deviceServer->getUrl(), $filters);
+                
                 foreach ($remoteDevices as $remoteDevice) {
                     $deviceType = $remoteDevice['deviceType'];
                     $deviceId = $remoteDevice['deviceId'];
+                    $tenancyId = $remoteDevice['tenancyId'];
+                    $devicesIds[] = $deviceId;
                     unset($remoteDevice['id']);
                     unset($remoteDevice['deviceType']);
                     unset($remoteDevice['deviceId']);
-                    $device = $this->create($deviceType, $deviceId, $deviceServer, $remoteDevice);
+                    unset($remoteDevice['tenancyId']);
+                    $device = $this->create($deviceType, $deviceId, $deviceServer, $tenancyId, $remoteDevice, $dateTime);
                     if ($device) {
                         $devices[] = $device;
                     }
@@ -79,6 +86,15 @@ class DeviceManager
             }
         }
 
+        // Al insertar o actualizar Devices, les actualizamos el updated, luego eliminamos los anteriores a esta corrida.
+        $em = $this->em;
+        $qb = $em->createQueryBuilder();
+        $qb->delete('StatsBundle:Device', 'd');
+        $qb->where($qb->expr()->lt('d.updated', ':now'));
+        $qb->setParameter('now', $dateTime);
+
+        $countDelete = $qb->getQuery()->getResult();
+
         return $devices;
     }
 
@@ -89,13 +105,14 @@ class DeviceManager
      * 
      * @return Device
      */
-    public function create($deviceType, $deviceId, $deviceServer, $data = array())
+    public function create($deviceType, $deviceId, $deviceServer, $tenancyId, $data = array(), $dateTime)
     {
         $device = null;
         $_device = $this->deviceRepository->findOneBy(array(
             'deviceType' => $deviceType,
             'deviceId' => $deviceId,
             'deviceServer' => $deviceServer,
+            'tenancyId' => $tenancyId,
         ));
         if (is_null($_device)) {
             $device = new Device();
@@ -105,6 +122,8 @@ class DeviceManager
         $device->setDeviceType($deviceType);
         $device->setDeviceId($deviceId);
         $device->setDeviceServer($deviceServer);
+        $device->setTenancyId($tenancyId);
+        $device->setUpdated($dateTime);
         foreach ($data as $column => $value) {
             $method = 'set'.ucfirst($column);
             if (method_exists($device, $method)) {