From 2da10463854ea4dea837b8b1980833e2159c1638 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E2=80=9CVeLiTi=E2=80=9D?= <“info@veliti.nl”> Date: Wed, 20 Nov 2024 20:10:20 +0100 Subject: [PATCH] CMXX - Allow serialnumbers to have different software --- api/v1/get/products_software.php | 65 ++++++++++++++++++++++++++------ api/v2/get/products_software.php | 45 +++++++++++++++++----- equipment.php | 21 ++++++++++- equipment_manage.php | 24 +++++++++++- 4 files changed, 132 insertions(+), 23 deletions(-) diff --git a/api/v1/get/products_software.php b/api/v1/get/products_software.php index 4fc338e..eda6ee5 100644 --- a/api/v1/get/products_software.php +++ b/api/v1/get/products_software.php @@ -56,6 +56,10 @@ if(isset($get_content) && $get_content!=''){ //build up search $clause .= ' AND e.serialnumber = :'.$v[0]; } + elseif ($v[0] == 'status') { + //build up search + $clause .= ' AND ps.status = :'.$v[0]; + } else {//create clause $clause .= ' AND '.$v[0].' = :'.$v[0]; } @@ -132,7 +136,14 @@ else { } // IF PRODUCTCODE AND VERSION IS SEND ASSUME SOFTWARE REQUEST -if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias['sn'] != ''){ +if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias['sn'] != '' ){ + + //check if current version is send and update the equipment record + if(isset($criterias['version']) && $criterias['version'] !=''){ + $sql = 'UPDATE equipment SET sw_version = ? WHERE serialnumber = ? '; + $stmt = $pdo->prepare($sql); + $stmt->execute([$criterias['version'],$criterias['sn']]); + } //default output $output = array( @@ -144,31 +155,63 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ "source" => "", "source_type" => "" ); - + //CHECK IF VERSION IS LATEST $latest_check = 0; + $sw_upgrade_version = 0; + foreach ($messages as $message){ - if ($message['latest'] == 1){ + if ($message['latest'] == 1 && ($message['sw_version_upgrade']== 0 || $message['sw_version_upgrade']== '')){ + + $file_contents = 'https://'.$_SERVER['SERVER_NAME'].'/firmware'.'/'.$message['software']; + $output = array( "productcode" => $message['productcode'], "version"=> $message['version'], "mandatory"=> $message['mandatory'], "latest"=> $message['latest'], "software"=> $message['software'], - "source" => "", - "source_type" => "" + "source" => $file_contents, + "source_type" => "url" ); - $latest_check = 1; + } + //Check if sw_version_upgrade is set + if ($message['sw_version_upgrade'] > 0){ + $sw_upgrade_version = $message['sw_version_upgrade']; + } + } + + //GET PRODUCTCODE BASED ON SN WHEN NO RECORDS FOUND + if (count($messages) === 0){ + $sql = 'SELECT p.productcode, e.sw_version_upgrade FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber =?'; + $stmt = $pdo->prepare($sql); + //Excute Query + $stmt->execute([$criterias['sn']]); + //Get results + $productcodes = $stmt->fetchAll(PDO::FETCH_ASSOC); + //assign serialnumber to productcode + $criterias['productcode'] = $productcodes[0]['productcode']; + $sw_upgrade_version = $productcodes[0]['sw_version_upgrade']; } if ($latest_check == 0){ //GET LATEST BASED ON PRODUCTCODE - $sql = 'SELECT * FROM products_software ps JOIN products p ON ps.productrowid = p.rowID WHERE p.productcode = ? AND ps.status = "1" AND ps.latest = "1"'; - $stmt = $pdo->prepare($sql); - //Excute Query - $stmt->execute([$criterias['productcode']]); - + if ($sw_upgrade_version > 0){ + //sw_version_upgrade set => change query + $sql = 'SELECT * FROM products_software ps JOIN products p ON ps.productrowid = p.rowID WHERE ps.rowID = ? AND ps.status = "1"'; + $stmt = $pdo->prepare($sql); + //Excute Query + $stmt->execute([$sw_upgrade_version]); + } + else { + //GET THE LATEST + $sql = 'SELECT * FROM products_software ps JOIN products p ON ps.productrowid = p.rowID WHERE p.productcode = ? AND ps.status = "1" AND ps.latest = "1"'; + $stmt = $pdo->prepare($sql); + //Excute Query + $stmt->execute([$criterias['productcode']]); + } + //Get results $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); diff --git a/api/v2/get/products_software.php b/api/v2/get/products_software.php index 753b15a..fe4147b 100644 --- a/api/v2/get/products_software.php +++ b/api/v2/get/products_software.php @@ -56,6 +56,10 @@ if(isset($get_content) && $get_content!=''){ //build up search $clause .= ' AND e.serialnumber = :'.$v[0]; } + elseif ($v[0] == 'status') { + //build up search + $clause .= ' AND ps.status = :'.$v[0]; + } else {//create clause $clause .= ' AND '.$v[0].' = :'.$v[0]; } @@ -78,7 +82,7 @@ elseif (isset($criterias['list']) && $criterias['list'] =='') { } elseif (isset($criterias['sn']) && $criterias['sn'] !='') { //SQL for PRODUCT SOFTWARE DOWNLOAD API - $sql = 'SELECT p.productcode, ps.* FROM products p JOIN equipment e ON e.productrowid = p.rowID JOIN products_software ps ON p.rowID = ps.productrowid '.$whereclause.''; + $sql = 'SELECT p.productcode, ps.*, e.sw_version_upgrade FROM products p JOIN equipment e ON e.productrowid = p.rowID JOIN products_software ps ON p.rowID = ps.productrowid '.$whereclause.''; } else { //SQL for Paging @@ -133,6 +137,13 @@ else { // IF PRODUCTCODE AND VERSION IS SEND ASSUME SOFTWARE REQUEST if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias['sn'] != '' ){ + //check if current version is send and update the equipment record + if(isset($criterias['version']) && $criterias['version'] !=''){ + $sql = 'UPDATE equipment SET sw_version = ? WHERE serialnumber = ? '; + $stmt = $pdo->prepare($sql); + $stmt->execute([$criterias['version'],$criterias['sn']]); + } + //default output $output = array( "productcode" => "", @@ -146,9 +157,10 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ //CHECK IF VERSION IS LATEST $latest_check = 0; + $sw_upgrade_version = 0; foreach ($messages as $message){ - if ($message['latest'] == 1){ + if ($message['latest'] == 1 && ($message['sw_version_upgrade']== 0 || $message['sw_version_upgrade']== '')){ $file_contents = 'https://'.$_SERVER['SERVER_NAME'].'/firmware'.'/'.$message['software']; @@ -161,13 +173,17 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ "source" => $file_contents, "source_type" => "url" ); - $latest_check = 1; + + } + //Check if sw_version_upgrade is set + if ($message['sw_version_upgrade'] > 0){ + $sw_upgrade_version = $message['sw_version_upgrade']; } } //GET PRODUCTCODE BASED ON SN WHEN NO RECORDS FOUND if (count($messages) === 0){ - $sql = 'SELECT p.productcode FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber =?'; + $sql = 'SELECT p.productcode, e.sw_version_upgrade FROM equipment e JOIN products p ON e.productrowid = p.rowID WHERE e.serialnumber =?'; $stmt = $pdo->prepare($sql); //Excute Query $stmt->execute([$criterias['sn']]); @@ -175,15 +191,26 @@ if (!isset($criterias['productrowid']) && isset($criterias['sn']) && $criterias[ $productcodes = $stmt->fetchAll(PDO::FETCH_ASSOC); //assign serialnumber to productcode $criterias['productcode'] = $productcodes[0]['productcode']; + $sw_upgrade_version = $productcodes[0]['sw_version_upgrade']; } if ($latest_check == 0){ //GET LATEST BASED ON PRODUCTCODE - $sql = 'SELECT * FROM products_software ps JOIN products p ON ps.productrowid = p.rowID WHERE p.productcode = ? AND ps.status = "1" AND ps.latest = "1"'; - $stmt = $pdo->prepare($sql); - //Excute Query - $stmt->execute([$criterias['productcode']]); - + if ($sw_upgrade_version > 0){ + //sw_version_upgrade set => change query + $sql = 'SELECT * FROM products_software ps JOIN products p ON ps.productrowid = p.rowID WHERE ps.rowID = ? AND ps.status = "1"'; + $stmt = $pdo->prepare($sql); + //Excute Query + $stmt->execute([$sw_upgrade_version]); + } + else { + //GET THE LATEST + $sql = 'SELECT * FROM products_software ps JOIN products p ON ps.productrowid = p.rowID WHERE p.productcode = ? AND ps.status = "1" AND ps.latest = "1"'; + $stmt = $pdo->prepare($sql); + //Excute Query + $stmt->execute([$criterias['productcode']]); + } + //Get results $messages = $stmt->fetchAll(PDO::FETCH_ASSOC); diff --git a/equipment.php b/equipment.php index 9abf471..88422e4 100644 --- a/equipment.php +++ b/equipment.php @@ -52,6 +52,12 @@ $equipment_data = ioServer($api_url,''); //Decode Payload if (!empty($equipment_data )){$equipment_data = decode_payload($equipment_data );}else{$equipment_data = null;} +//GET PRODUCTS_SOFTWARE +$api_url = '/v1/products_software/productrowid='.$responses->productrowid.'&status=1'; +$products_software = ioServer($api_url,''); +//Decode Payload +if (!empty($products_software)){$products_software = decode_payload($products_software);}else{$products_software = null;} + //------------------------------ //Variables //------------------------------ @@ -231,8 +237,19 @@ $view .= '