Пример #1
0
 public function validateSerialNumber($serialNumber, $productID)
 {
     try {
         $array = str_split($serialNumber);
         $chckSum = array_pop($array);
         $afterdecode[] = "";
         foreach ($array as $value) {
             switch ($value) {
                 case '0':
                     $afterdecode[] = '0';
                     break;
                 case '1':
                     $afterdecode[] = '1';
                     break;
                 case '2':
                     $afterdecode[] = '2';
                     break;
                 case '3':
                     $afterdecode[] = '3';
                     break;
                 case '4':
                     $afterdecode[] = '4';
                     break;
                 case '5':
                     $afterdecode[] = '5';
                     break;
                 case '6':
                     $afterdecode[] = '6';
                     break;
                 case '7':
                     $afterdecode[] = '7';
                     break;
                 case '8':
                     $afterdecode[] = '8';
                     break;
                 case '9':
                     $afterdecode[] = '9';
                     break;
                 case 'A':
                     $afterdecode[] = '10';
                     break;
                 case 'B':
                     $afterdecode[] = '11';
                     break;
                 case 'C':
                     $afterdecode[] = '12';
                     break;
                 case 'D':
                     $afterdecode[] = '13';
                     break;
                 case 'E':
                     $afterdecode[] = '14';
                     break;
                 case 'F':
                     $afterdecode[] = '15';
                     break;
                 case 'G':
                     $afterdecode[] = '16';
                     break;
                 case 'H':
                     $afterdecode[] = '17';
                     break;
                 case 'J':
                     $afterdecode[] = '18';
                     break;
                 case 'K':
                     $afterdecode[] = '19';
                     break;
                 case 'L':
                     $afterdecode[] = '20';
                     break;
                 case 'M':
                     $afterdecode[] = '21';
                     break;
                 case 'N':
                     $afterdecode[] = '22';
                     break;
                 case 'P':
                     $afterdecode[] = '23';
                     break;
                 case 'Q':
                     $afterdecode[] = '24';
                     break;
                 case 'R':
                     $afterdecode[] = '25';
                     break;
                 case 'S':
                     $afterdecode[] = '26';
                     break;
                 case 'T':
                     $afterdecode[] = '27';
                     break;
                 case 'U':
                     $afterdecode[] = '28';
                     break;
                 case 'V':
                     $afterdecode[] = '29';
                     break;
                 case 'W':
                     $afterdecode[] = '30';
                     break;
                 case 'X':
                     $afterdecode[] = '31';
                     break;
                 case 'Y':
                     $afterdecode[] = '32';
                     break;
                 case 'Z':
                     $afterdecode[] = '33';
                     break;
                 case 'a':
                     $afterdecode[] = '34';
                     break;
                 case 'b':
                     $afterdecode[] = '35';
                     break;
                 case 'c':
                     $afterdecode[] = '36';
                     break;
                 case 'd':
                     $afterdecode[] = '37';
                     break;
                 case 'e':
                     $afterdecode[] = '38';
                     break;
                 case 'f':
                     $afterdecode[] = '39';
                     break;
                 case 'g':
                     $afterdecode[] = '40';
                     break;
                 case 'h':
                     $afterdecode[] = '41';
                     break;
                 case 'j':
                     $afterdecode[] = '43';
                     break;
                 case 'k':
                     $afterdecode[] = '44';
                     break;
                     /*case 'l':
                     		$afterdecode[]='45';
                     		break;*/
                 /*case 'l':
                 		$afterdecode[]='45';
                 		break;*/
                 case 'm':
                     $afterdecode[] = '45';
                     break;
                 case 'n':
                     $afterdecode[] = '46';
                     break;
                 case 'p':
                     $afterdecode[] = '47';
                     break;
                 case 'q':
                     $afterdecode[] = '48';
                     break;
                 case 'r':
                     $afterdecode[] = '49';
                     break;
                 case 's':
                     $afterdecode[] = '50';
                     break;
                 case 't':
                     $afterdecode[] = '51';
                     break;
                 case 'u':
                     $afterdecode[] = '52';
                     break;
                 case 'v':
                     $afterdecode[] = '53';
                     break;
                 case 'w':
                     $afterdecode[] = '54';
                     break;
                 case 'x':
                     $afterdecode[] = '55';
                     break;
                 case 'y':
                     $afterdecode[] = '56';
                     break;
                 case 'z':
                     $afterdecode[] = '57';
                     break;
             }
             //echo "value:".$value;
         }
         $sum = array_sum($afterdecode);
         $result = fmod($sum, '58');
         $query = Connect\ROQL::query(sprintf("SELECT Asset.ID, Asset.Contact, Asset.Organization, Asset.StatusWithType.StatusType FROM Asset WHERE Asset.SerialNumber='%s'", Connect\ROQL::escapeString($serialNumber), intval($productID)))->next();
         if ($asset = $query->next()) {
             /*$statusType = $asset['StatusType'];
                          if($asset['Contact'] === null && $asset['Organization'] === null) {
                             // if(intval($statusType) === STATUS_TYPE_ASSET_UNREGISTERED) {
             		if($chckSum==$result)
             		    {
             				return $this->getResponseObject(intval($asset['ID']), 'is_int');
             			}else{
             				return $this->getResponseObject('Invalid');
             			}
                             // }
                          }else{*/
             return $this->getResponseObject('Registered');
             //}
         } else {
             if ($result <= 57) {
                 switch ($result) {
                     case '10':
                         $result = 'A';
                         break;
                     case '11':
                         $result = 'B';
                         break;
                     case '12':
                         $result = 'C';
                         break;
                     case '13':
                         $result = 'D';
                         break;
                     case '14':
                         $result = 'E';
                         break;
                     case '15':
                         $result = 'F';
                         break;
                     case '16':
                         $result = 'G';
                         break;
                     case '17':
                         $result = 'H';
                         break;
                     case '18':
                         $result = 'J';
                         break;
                     case '19':
                         $result = 'K';
                         break;
                     case '20':
                         $result = 'L';
                         break;
                     case '21':
                         $result = 'M';
                         break;
                     case '22':
                         $result = 'N';
                         break;
                     case '23':
                         $result = 'P';
                         break;
                     case '24':
                         $result = 'Q';
                         break;
                     case '25':
                         $result = 'R';
                         break;
                     case '26':
                         $result = 'S';
                         break;
                     case '27':
                         $result = 'T';
                         break;
                     case '28':
                         $result = 'U';
                         break;
                     case '29':
                         $result = 'V';
                         break;
                     case '30':
                         $result = 'W';
                         break;
                     case '31':
                         $result = 'X';
                         break;
                     case '32':
                         $result = 'Y';
                         break;
                     case '33':
                         $result = 'Z';
                         break;
                     case '34':
                         $result = 'a';
                         break;
                     case '35':
                         $result = 'b';
                         break;
                     case '36':
                         $result = 'c';
                         break;
                     case '37':
                         $result = 'd';
                         break;
                     case '38':
                         $result = 'e';
                         break;
                     case '39':
                         $result = 'f';
                         break;
                     case '40':
                         $result = 'g';
                         break;
                     case '41':
                         $result = 'h';
                         break;
                     case '42':
                         $result = 'i';
                         break;
                     case '43':
                         $result = 'j';
                         break;
                     case '44':
                         $result = 'k';
                         break;
                     case '45':
                         $result = 'm';
                         break;
                     case '46':
                         $result = 'n';
                         break;
                     case '47':
                         $result = 'p';
                         break;
                     case '48':
                         $result = 'q';
                         break;
                     case '49':
                         $result = 'r';
                         break;
                     case '50':
                         $result = 's';
                         break;
                     case '51':
                         $result = 't';
                         break;
                     case '52':
                         $result = 'u';
                         break;
                     case '53':
                         $result = 'v';
                         break;
                     case '54':
                         $result = 'w';
                         break;
                     case '55':
                         $result = 'x';
                         break;
                     case '56':
                         $result = 'y';
                         break;
                     case '57':
                         $result = 'z';
                         break;
                 }
             }
             if ($chckSum == $result) {
                 return $this->getResponseObject(intval($productID), 'is_int');
             } else {
                 return $this->getResponseObject('Invalid');
             }
         }
         // return $this->getResponseObject(false, 'is_bool');
         return $this->getResponseObject('Registered');
     } catch (Connect\ConnectAPIErrorBase $e) {
         return $this->getResponseObject(null, null, $e->getMessage());
     }
 }