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()); } }