346 lines
14 KiB
PHP
346 lines
14 KiB
PHP
<?php
|
|
//defined($security_key) or exit;
|
|
$request = explode('/', trim($_SERVER['PATH_INFO'],'/'));
|
|
|
|
ini_set('display_errors', '1');
|
|
ini_set('display_startup_errors', '1');
|
|
error_reporting(E_ALL);
|
|
//------------------------------------------
|
|
// Application related calls
|
|
//------------------------------------------
|
|
$action = $request[2];
|
|
$post_content = json_decode($input,true);
|
|
|
|
//SET PARAMETERS FOR QUERY
|
|
$id = $post_content['rowID'] ?? ''; //check for rowID
|
|
$command = ($id == '')? 'insert' : 'update'; //IF rowID = empty then INSERT
|
|
$date = date('Y-m-d H:i:s');
|
|
|
|
// Connect to DB
|
|
$pdo = dbConnect($dbname);
|
|
|
|
function checkSerial($serialinput){
|
|
|
|
//Check Serialnumber used
|
|
if (preg_match('/^[^-]*-[^-]*$/', $serialinput)){
|
|
$check=explode('-', $serialinput);
|
|
$productrowid = strip_tags(trim($check[0]));
|
|
$rowID= strip_tags(trim($check[1]));
|
|
$whereclause = 'WHERE rowID = "'.$rowID.'"';
|
|
}
|
|
else
|
|
{
|
|
$serialnumberhelper = strip_tags(trim($serialinput));
|
|
$whereclause = 'WHERE serialnumber = "'.$serialnumberhelper.'"';
|
|
}
|
|
|
|
return $whereclause;
|
|
}
|
|
|
|
if ($action == 'createHistory'){
|
|
|
|
if (!empty($post_content['sn']) && !empty($post_content['testdetails'])) {
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// Action defaults (0=No 1=Yes) +++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
$equipmentUpdate = 0; //equipment update
|
|
$servicetoolHistoryUpdate = 0; // service tool history update
|
|
$equipmentCreate = 0; //Create equipment when serialnumber not Found
|
|
$equipmentProductUpdate = 0; //update equipment with productcode
|
|
$equipmentUpdate_status = 0; //update equipment with status
|
|
$equipmentServiceDate = 0; //update equipment with service date
|
|
$historyUpdate_type = 0; //update type of history
|
|
$updateObject_visual = 0; //update visual inspection object
|
|
$sendServiceReport = 0; //send service report via email
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//SET DEFAULT PARAMETERS
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
$user = $username;
|
|
$account = $partnerhierarchy; //string
|
|
$current_date = date("Y-m-d");
|
|
$input_type = $post_content['type'];
|
|
$testdetails = json_encode($post_content['testdetails']);
|
|
$serial = $post_content['sn'];
|
|
$productrowid = (isset($post_content['testdetails']['logdetails']['PN']) && (!empty($post_content['testdetails']['logdetails']['PN']) || $post_content['testdetails']['logdetails']['PN'] != ''))? $post_content['testdetails']['logdetails']['PN'] : 0; //default product for equipment create
|
|
$sn_service = $post_content['testdetails']['external_device_sn'] ?? '';
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// Define action based on historytype
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
switch ($input_type){
|
|
case 1: //Bootloader
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$equipmentCreate = 1;
|
|
$equipmentUpdate = 1;
|
|
$equipmentServiceDate = 1;
|
|
break;
|
|
|
|
case 2: //Firmware
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$equipmentCreate = 1;
|
|
$equipmentUpdate = 1;
|
|
$servicetoolHistoryUpdate = 1;
|
|
break;
|
|
|
|
case 3: //Serialnumber
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$equipmentProductUpdate = 1;
|
|
$equipmentUpdate_status = 1;
|
|
$equipmentServiceDate = 1;
|
|
break;
|
|
|
|
case 4://Visual
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
break;
|
|
|
|
case 5://Maintenance_Test
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$equipmentUpdate = 0;
|
|
$servicetoolHistoryUpdate = 1;
|
|
break;
|
|
|
|
case 6://Assembly_Test
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$equipmentUpdate = 0;
|
|
$equipmentUpdate_status = 1;
|
|
break;
|
|
|
|
case 7://ProductNumber
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$equipmentProductUpdate = 1;
|
|
$equipmentUpdate_status = 1;
|
|
break;
|
|
|
|
case 8://Visual
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
|
|
//Check for existing visualinspectionID
|
|
if (isset($post_content['testdetails']['serviceReport']['visualinspection_id']) && $post_content['testdetails']['serviceReport']['visualinspection_id'] != 0) {
|
|
$updateObject_visual = 1;
|
|
$visualinspectionID = $post_content['testdetails']['serviceReport']['visualinspection_id'];
|
|
}
|
|
|
|
break;
|
|
|
|
case 9://ServiceReport
|
|
$historytype = ${'HistoryType_'.$input_type};
|
|
$historyUpdate_type = 1;
|
|
$servicetoolHistoryUpdate = 1;
|
|
$equipmentServiceDate = 1;
|
|
|
|
//Check if servicereport comes from ServiceTool else inhouse
|
|
if (isset($post_content['testdetails']['serviceReport'])) {
|
|
$sendServiceReport = 1;
|
|
$testObject = array(
|
|
"final" => $post_content['testdetails']['serviceReport']['questionItems'],
|
|
"maintenance_test" => $post_content['testdetails']['serviceReport']['maintenance_id'],
|
|
"visualinspection" => $post_content['testdetails']['serviceReport']['visualinspection_id'],
|
|
"serialnumber" => $post_content['sn'],
|
|
"external_device_sn" => $post_content['testdetails']['external_device_sn']
|
|
);
|
|
$testdetails = json_encode($testObject);
|
|
}
|
|
|
|
break;
|
|
case 11: //car_test
|
|
$historytype = 'CarTest';
|
|
$equipmentCreate = 1;
|
|
break;
|
|
|
|
case 'firmware': //update from Portal
|
|
$historytype = $HistoryType_2;
|
|
$equipmentUpdate = 1;
|
|
$servicetoolHistoryUpdate = 1;
|
|
$sn_service = $post_content['sn_service'];
|
|
break;
|
|
|
|
default:
|
|
$historytype = 'Other';
|
|
break;
|
|
}
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//Connect to DB
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
|
|
$pdo = dbConnect($dbname);
|
|
//Get whereclause based on serialnumber
|
|
$whereclause = checkSerial($serial);
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//CHECK if EQUIPMENT EXISTS
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
$sql = "SELECT count(rowID) as total, rowID FROM equipment $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute();
|
|
$total = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
$total_equipment = $total[0]['total'];
|
|
$rowID = $total[0]['rowID'] ?? '';
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// Create equipment when not exist +++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($equipmentCreate == 1 && $total_equipment == 0){
|
|
$sql = 'INSERT INTO equipment (productrowid,created,createdby,status,accounthierarchy,serialnumber,service_date,warranty_date) VALUES (?,?,?,?,?,?,?,?)';
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$productrowid,$date,$user,$status0,$account,$serial,$current_date,$current_date]);
|
|
$rowID = $pdo->lastInsertId();
|
|
}
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// Insert or update history item ++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($updateObject_visual == 1){
|
|
$sql = "UPDATE history SET description = '$testdetails' WHERE rowID = ?";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$visualinspectionID]);
|
|
$last_id = $visualinspectionID;
|
|
}
|
|
else {
|
|
// Insert Equipment
|
|
$sql = "INSERT INTO history (equipmentid,type,description,createdby ) VALUES (?,?,?,?)";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$rowID,$historytype,$testdetails,$user]);
|
|
$last_id = $pdo->lastInsertId();
|
|
}
|
|
|
|
// Return ID
|
|
echo json_encode(array('historyID'=> $last_id));
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// Specials below ++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//
|
|
//
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//Update HW and SW on equipment ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($equipmentUpdate == 1){
|
|
//get HW + SW from PortalAPI
|
|
if ($post_content['type'] == 'firmware'){
|
|
$test = json_decode($post_content['testdetails']);
|
|
$hw_version = $test->HW;
|
|
$sw_version = $test->HEX_FW;
|
|
}
|
|
else {
|
|
//GET HW + SW from object
|
|
$hw_version = $post_content['testdetails']['logdetails']['HW'];
|
|
$sw_version = $post_content['testdetails']['logdetails']['HEX_FW'];
|
|
}
|
|
//Update Equipment record
|
|
$sql = "UPDATE equipment SET hw_version = ?, sw_version = ? $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$hw_version,$sw_version]);
|
|
}
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//Update equipment status ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($equipmentUpdate_status == 1){
|
|
|
|
if ($historytype == $HistoryType_6){$update_status = $status1;}
|
|
if ($historytype == $HistoryType_3 && $sn_service != 'Portal'){$update_status = $status0;}
|
|
if ($historytype == $HistoryType_7 && $sn_service == 'Portal'){$update_status = $status2;}
|
|
|
|
//Update Equipment record
|
|
$sql = "UPDATE equipment SET status = ? $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$update_status]);
|
|
|
|
//UPDATE CHANGELOG
|
|
changelog($dbname,'equipment',$rowID,'status',$update_status,$user);
|
|
}
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//Update history type ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($historyUpdate_type == 1){
|
|
//Check if servicereport comes from ServiceTool else inhouse
|
|
if (isset($post_content['testdetails']['serviceReport'])) {
|
|
$maintenanceID = $post_content['testdetails']['serviceReport']['maintenance_id'];
|
|
$visualID = $post_content['testdetails']['serviceReport']['visualinspection_id'];
|
|
}else {
|
|
$maintenanceID = $post_content['testdetails']['maintenance_test'];
|
|
$visualID = $post_content['testdetails']['visualinspection'];
|
|
}
|
|
|
|
//Update history record
|
|
$sql = "UPDATE history SET type = ? where rowID= ? or rowID= ?";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$type15,$visualID,$maintenanceID]);
|
|
}
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//Update productcode on equipment ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($equipmentProductUpdate == 1 && isset($post_content['testdetails']['logdetails']['PN'])){
|
|
//GET PN from object
|
|
$getPN = $post_content['testdetails']['logdetails']['PN'];
|
|
$pn2 = preg_replace("/[^0-9]/","",$getPN);
|
|
$PN = ltrim($pn2, "0");
|
|
|
|
//Update Equipment record
|
|
$sql = "UPDATE equipment SET productrowid = ? $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$PN]);
|
|
}
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//Update equipment service date ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($equipmentServiceDate == 1){
|
|
//Update Equipment record
|
|
$sql = "UPDATE equipment SET service_date = ? $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$current_date]);
|
|
}
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// Update history of service tool ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($servicetoolHistoryUpdate == 1 && !empty($sn_service)){
|
|
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
//CHECK if EQUIPMENT EXISTS
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
$whereclause = checkSerial($sn_service);
|
|
$sql = "SELECT count(rowID) as total, rowID FROM equipment $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute();
|
|
$total = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
$total_servicetool = $total[0]['total'];
|
|
$rowID_servicetool = $total[0]['rowID'];
|
|
|
|
if($total_servicetool != 0){
|
|
// Insert historyitem
|
|
$sql = "INSERT INTO history (equipmentid,type,description,createdby) VALUES (?,?,?,?)";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$rowID_servicetool,$historytype,$testdetails,$user]);
|
|
//Update status to InUse
|
|
$sql = "UPDATE equipment SET status = ? $whereclause";
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute(['4']);
|
|
}
|
|
}
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
// sendServiceReport ++++++++++++++++++++++++++
|
|
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
|
|
if ($sendServiceReport == 1){
|
|
//GET STORED SERVICE REPORT
|
|
$sql = 'SELECT h.rowID as historyID, h.type, h.description, h.created, h.createdby FROM history h WHERE rowID = ?';
|
|
$pdo = dbConnect($dbname);
|
|
$stmt = $pdo->prepare($sql);
|
|
$stmt->execute([$last_id]);
|
|
$results = $stmt->fetchAll(PDO::FETCH_ASSOC);
|
|
|
|
foreach ($results as $result){
|
|
$result = json_decode(json_encode($result));
|
|
$servicereport = serviceReport($result, 'email');
|
|
generatedPDF($servicereport,$last_id,$user);
|
|
}
|
|
}
|
|
}
|
|
else
|
|
{
|
|
http_response_code(400); //Payload not valid
|
|
}
|
|
|
|
}
|
|
|
|
?>
|