瀏覽代碼

Se agrega validación de Pon Serial Number ingresado. Por el formateo del mismo.

Maxi Schvindt 7 年之前
父節點
當前提交
d1d3641298
共有 1 個文件被更改,包括 44 次插入21 次删除
  1. 44 21
      src/FTTHBundle/Admin/ONUAdmin.php

+ 44 - 21
src/FTTHBundle/Admin/ONUAdmin.php

@@ -193,30 +193,53 @@ class ONUAdmin extends WorkflowBaseAdmin
         $serialNumber = $onu->getSerialNumber();
         $ponSerialNumberAux = $onu->getPonSerialNumberAux();
         
-        if(is_null($serialNumber) || empty($serialNumber)) {
-            if(strlen($ponSerialNumber) > 12) {
-                // It is a serial number > set serial number
-                $onu->setSerialNumber($ponSerialNumber);
-            } else {
-                // It is a pon serial number > convert vendor id from string to hexa and set serial number
-                $vendoId = $this->str2hex(substr($ponSerialNumber,0,4));
-                $rest = substr($ponSerialNumber,4);
-                $sn = strtolower($vendoId.$rest);
-                $onu->setSerialNumber($sn);
+        if(strlen($ponSerialNumber) == 12 || strlen($ponSerialNumber) == 16) {
+            
+            if(is_null($serialNumber) || empty($serialNumber)) {
+                if(strlen($ponSerialNumber) == 16) {
+                    // It is a serial number > set serial number
+                    $onu->setSerialNumber($ponSerialNumber);
+                } else {
+                    // It is a pon serial number > convert vendor id from string to hexa and set serial number
+                    $vendoId = $this->str2hex(substr($ponSerialNumber,0,4));
+                    $rest = substr($ponSerialNumber,4);
+                    $sn = strtolower($vendoId.$rest);
+                    $onu->setSerialNumber($sn);
+                }
             }
-        }
+            
+            if(is_null($ponSerialNumberAux) || empty($ponSerialNumberAux)) {
+                if(strlen($ponSerialNumber) == 16) {
+                    // It is a serial number > convert vendor id from hexa to string and set pon serial number
+                    $_vendor = substr($ponSerialNumber,0,8);
+                    $hex = strtoupper($_vendor);
 
-        if(is_null($ponSerialNumberAux) || empty($ponSerialNumberAux)) {
-            if(strlen($ponSerialNumber) > 12) {
-                // It is a serial number > convert vendor id from hexa to string and set pon serial number
-                $vendoId = $this->hex2str(substr($ponSerialNumber,0,8));
-                $rest = substr($ponSerialNumber,8);
-                $psn = strtolower($vendoId.$rest);
-                $onu->setPonSerialNumberAux($psn);
-            } else {
-                // It is a pon serial number > set pon serial number
-                $onu->setPonSerialNumberAux($ponSerialNumber);
+                    $isNumeric = true;
+                    for($i=0;$i<strlen($hex);$i+=2) {
+                        if(!is_numeric(substr($hex,$i,2))) {
+                            $isNumeric = false;
+                            break;
+                        }
+                    }
+                    if(ctype_xdigit($isNumeric)) { //hexa check
+                        $vendoId = $this->hex2str($hex);
+                        $rest = substr($ponSerialNumber,8);
+                        $psn = strtolower($vendoId.$rest);
+                        $onu->setPonSerialNumberAux($psn);
+                    } else {
+                        $onu->setPonSerialNumberAux($ponSerialNumber);
+                    }
+                } else {
+                    // It is a pon serial number > set pon serial number
+                    $onu->setPonSerialNumberAux($ponSerialNumber);
+                }
             }
+        } else {
+            if(is_null($serialNumber) || empty($serialNumber)) 
+                $onu->setSerialNumber($ponSerialNumber);
+            
+            if(is_null($ponSerialNumberAux) || empty($ponSerialNumberAux)) 
+                $onu->setPonSerialNumberAux($ponSerialNumber);
         }
     }