| '.$service_report_item.' |
|
| '.$service_report_id.' |
'.$history->historyID.' |
| '.$service_serialnumber.' |
'.$json_array->serialnumber.' |
| '.$service_date.' |
'.$service_exe_date.' |
| '.$service_renewal.' |
'.$service_renewal_date.' |
| '.$service_performed_by.' |
'.$history->createdby.' |
'.$summary_label1.'
';
$actions = 0;
$repairs = 0;
//Check New Report or Legacy
if (str_contains($history->description, "service_mandatory_question")) {
// New Report
foreach ($json_array->final as $final) {
if ($final->id == "service_action_clean" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_clean . '
';
$actions++;
}
if ($final->id == "service_action_battery" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_battery . '
';
$actions++;
}
}
} elseif (str_contains($history->description, "question25") && !str_contains($history->description, "newHistory")) {
foreach ($json_array->final as $final) {
if (($final->id == "action_clean" ||$final->id == "action_serial") && $final->value == 'Yes'){
$servicereport .= '- ' . ${$final->id . '_description'}. '
';
$actions++;
}
}
}
if ($actions == 0) {$servicereport .= '- '.$message1.'
';}
$servicereport .= '
'.$group_header_8.'
';
if (str_contains($history->description, "service_mandatory_question")) {
foreach ($json_array->final as $final) {
if ($final->id == "service_action_serial" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_serial . '
';
$repairs++;
}
if ($final->id == "service_action_cover" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_cover . '
';
$repairs++;
}
if ($final->id == "service_action_spudger" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_spudger . '
';
$repairs++;
}
if ($final->id == "service_action_case" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_case . '
';
$repairs++;
}
if ($final->id == "service_action_instructions" && $final->value == "Yes") {
$servicereport .= '- ' . $service_action_instructions . '
';
$repairs++;
}
}
} elseif (str_contains($history->description, "question25") && !str_contains($history->description, "newHistory")) {
foreach ($json_array->final as $final) {
if (strpos($final->id, "action_repaired") !==false && $final->value == 'Yes') {
$servicereport .= '- ' . ${$final->id . '_description'}. '
';
$repairs++;
}
if (strpos($final->id, "action_replacement") !==false && $final->value == 'Yes') {
$servicereport .= '- ' . ${$final->id . '_description'}. '
';
$repairs++;
}
}
}
if ($repairs == 0) {$servicereport .= '- ' . $message2 . '
';}
$servicereport .='
';
if (str_contains($history->description, "service_mandatory_question")) {
//GET NOTES from JSON
$notes ='';
foreach ($json_array->final as $final){
if ($final->id == "service_notes"){
$notes = $final->value;
}
}
$servicereport .='
'.$group_header_7.'
';
if ($notes != '') {
$servicereport .= '
'.$notes.'
';
} else {
$servicereport .= '
'.$service_report_no_comments.'
'; }
}
$servicereport .= '
';
//+++++++++++++++++++++++++++++++++++++++++++++++
// Maintenance Test
//++++++++++++++++++++++++++++++++++++++++++++++
if (isset($json_array->maintenance_test)) {
if (!empty($maintenance_test)) {
$servicereport .='
| '.$service_report_maintenance_test.' |
'.$service_report_maintenance_test_status.' |
';
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Check for measurements ++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Check if false test found +++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
$servicereport .= '';
//Check double test values
foreach($maintenance_test->doubletestvalues as $key => $value)
{
//If test is not passed or not
if($value->pass == false){
$text = $service_maintenance_test_fail;
$style = 'error';
}
else
{
$text = $service_maintenance_test_pass;
$style = 'success';
}
$servicereport .='
| '.$value->name.' |
'.$text.' |
';
}
//Check string test values
foreach($maintenance_test->stringtestvalues as $key => $value)
{
//If test is not passed or not
if($value->pass == false){
$text = $service_maintenance_test_fail;
$style = 'error';
}
else
{
$text = $service_maintenance_test_pass;
$style = 'success';
}
$servicereport .='
| '.$value->name.' |
'.$text.' |
';
}
//Check boolean test values
foreach($maintenance_test->booleantestvalues as $key => $value)
{
//If test is not passed or not
if($value->pass == false){
$text = $service_maintenance_test_fail;
$style = 'error';
}
else
{
$text = $service_maintenance_test_pass;
$style = 'success';
}
$servicereport .='
| '.$value->name.' |
'.$text.' |
';
}
$servicereport .= '
';
}
}
//++++++++++++++++++++++++++++++++++++++++++++++
//GEt visualinspection
//++++++++++++++++++++++++++++++++++++++++++++++
if (isset($json_array->visualinspection)) {
//Get visualinspection directly from DB
$pdo = dbConnect($dbname);
$stmt = $pdo->prepare('SELECT description FROM history WHERE rowID = ?');
$stmt->execute([$json_array->visualinspection]);
$visualinspection = $stmt->fetch();
$visualinspection_legacy = $visualinspection['description'];
$visualinspection = json_decode($visualinspection['description']);
if (!empty($visualinspection)) {
//Check if visualinspection comes from ServiceTool else inhouse
if (isset($visualinspection->serviceReport->questionItems)) {
$visualinspection_array = $visualinspection->serviceReport->questionItems;
}
else {
//inhousetool
$visualinspection_array = $visualinspection;
}
//Check Legacy API
if (str_contains($visualinspection_legacy, "question1")) {
//Legacy API Questions
$question_array = $arrayQuestions_legacy;
}
else
{ // New Report
$question_array = $arrayQuestions_visual;
}
$servicereport .= '
' . $summary_label2 . '
';
foreach ($question_array as $key){
if ($key['Group_sequence'] == '3'){
$servicereport .= '
'; // pagebreak
}
$servicereport .= '
| '.$key['Group'].' |
'.$service_report_maintenance_test_status.' |
';
foreach ($key['Questions_in_group'] as $questions){
$servicereport .= '
| ';
$response = (substr(${$questions['QuestionID']}, -1) == '?') ? substr(${$questions['QuestionID']}, 0, strpos(${$questions['QuestionID']}, "?")) : ${$questions['QuestionID']};
//$response = $questions['QuestionID'];
$servicereport .= ' '.$response.'
| ';
foreach ($visualinspection_array as $inspection){
if ($inspection->id == $questions['QuestionID']){
if (isset($inspection->responseID)){
if (in_array($inspection->responseID,$negative_results)){
$style2 = 'error';
}
else
{
$style2 = 'success';
}
$translated_value = ${'service_allowed_label'.$inspection->responseID};
}else{
if (in_array($inspection->id,$negative_results)){
$style2 = 'error';
}
else
{
$style2 = 'success';
}
$translated_value = $inspection->value;
}
$servicereport .= ''.$translated_value.' | ';
}
}
$servicereport .= '
';
}
$servicereport .= '
';
}
}
}
//++++++++++++++++++++++++++++++++++++++++++++++
//Legacy Code
//++++++++++++++++++++++++++++++++++++++++++++++
if (isset($json_array->question25) && isset($json_array->newHistory)) {
$servicereport .= '
'.$summary_label2.'
| |
'.$summary_label3.' |
'.$summary_label4.' |
| '.$question10.' |
'.$service_allowed_label9.'
|
'; if (isset($json_array->{$question10.'b'})){$servicereport .= $json_array->{$question10.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question11.' |
'; if (isset($json_array->{$question11.'a'})){$servicereport .= $json_array->{$question11.'a'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
'; if (isset($json_array->{$question11.'b'})){$servicereport .= $json_array->{$question11.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question12.' |
'; if (isset($json_array->{$question12.'a'})){$servicereport .= $json_array->{$question12.'a'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
'; if (isset($json_array->{$question12.'b'})){$servicereport .= $json_array->{$question12.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question13.' |
'; if (isset($json_array->{$question13.'a'})){$servicereport .= $json_array->{$question13.'a'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
'; if (isset($json_array->{$question13.'b'})){$servicereport .= $json_array->{$question13.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question14.' |
'; if (isset($json_array->{$question14.'a'})){$servicereport .= $json_array->{$question14.'a'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
'; if (isset($json_array->{$question14.'b'})){$servicereport .= $json_array->{$question14.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question15.' |
'.$service_allowed_label9.'
|
'; if (isset($json_array->{$question15.'b'})){$servicereport .= $json_array->{$question15.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question16.' |
'.$service_allowed_label9.'
|
'; if (isset($json_array->{$question16.'b'})){$servicereport .= $json_array->{$question16.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question17.' |
'.$service_allowed_label9.'
|
'; if (isset($json_array->{$question17.'b'})){$servicereport .= $json_array->{$question17.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
| '.$question18.' |
'; if (isset($json_array->{$question18.'a'})){$servicereport .= $json_array->{$question18.'a'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
'; if (isset($json_array->{$question18.'b'})){$servicereport .= $json_array->{$question18.'b'};} else {$servicereport .= $servicereport5;} $servicereport .= '
|
';
}
$servicereport .='
';
if ($request != 'display'){
$servicereport .= '
';
}
return $servicereport;
}
//------------------------------------------
// LIST PARTNER
//------------------------------------------
function listPartner($partnertype, $user_right, $input)
{
include dirname(__FILE__,2).'/settings/settings.php';
//BASED ON USERRIGHT DEFINE SQL AND DATA RETURNED
if ($user_right != 3 || $user_right !=4) {
//NOT ADMIN USER
$partner = json_decode($_SESSION['partnerhierarchy']);
//SoldTo is empty
if (empty($partner->soldto) || $partner->soldto == ''){$soldto_search = '%';} else {$soldto_search = '-%';}
//BUILD CONDITION
$condition = '__salesid___'.$partner->salesid.'___soldto___'.substr($partner->soldto, 0, strpos($partner->soldto, "-")).$soldto_search;
$whereclause = 'AND salesID like ?';
}
else {//ADMIN USERS
$whereclause = '';
}
$pdo = dbConnect($dbname);
$sql = 'SELECT distinct partnerID, partnername FROM partner WHERE partnertype = ? AND status = 1 '.$whereclause.'';
$stmt = $pdo->prepare($sql);
$stmt->execute([$partnertype, $condition]);
$partners = $stmt->fetchAll(PDO::FETCH_ASSOC);
if ($input !='' && !empty($input)){
$partner_available = '';
}
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// convert cartest from history to cartest table
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
function convertCartest(){
include dirname(__FILE__,2).'/settings/settings.php';
//GET CARTEST FROM HISTORY TABLE
$pdo = dbConnect($dbname);
$sql = 'SELECT * FROM history WHERE type="cartest"';
$stmt = $pdo->prepare($sql);
//Excute Query
$stmt->execute();
//Get results
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
//FOR EACH CARTEST TRANSFER TO CARTEST TABLE
foreach ($messages as $message){
//GET VARIABLES
$cartest = json_decode($message['description'],true) ?? '';
$carbrand = ucfirst($cartest["CarBrand"] ?? 'Unknown');
$cartype = ucfirst($cartest["CarType"] ?? 'Unknown');
$questions = json_encode($cartest["Questions"] ??'');
$datapoints = json_encode($cartest["plugDataPoints"] ?? '');
$nametester = $cartest["NameTester"] ?? 'Unknown';
//get header data only
unset($cartest["Questions"]);
unset($cartest["plugDataPoints"]);
$header = json_encode($cartest);
//INSERT INTO CARTEST
$sql = 'INSERT INTO cartest (carbrand, cartype,header,questions,datapoints,createdby) VALUES (?,?,?,?,?,?)';
$stmt = $pdo->prepare($sql);
//Excute Query
$stmt->execute([$carbrand,$cartype,$header,$questions,$datapoints,$nametester]);
//MARK HISTORY ITEM FOR DELETATION
$sql = 'UPDATE history SET type = "delete" WHERE rowID = '.$message['rowID'];
$stmt = $pdo->prepare($sql);
//Excute Query
$stmt->execute();
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// ML data preparations
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
function traintotalMeasurement(){
include dirname(__FILE__,2).'/settings/settings.php';
//total measurement internal array
$total_measurement = [];
//Connect to DB
$pdo = dbConnect($dbname);
//GET DATA
$sql = 'SELECT h.rowID, h.description,h.equipmentid,p.productcode,e.hw_version FROM history h JOIN equipment e ON h.equipmentid = e.rowID JOIN products p ON e.productrowid = p.rowID where type="Maintenance_Test" and description like "%doubletestvalues%"';
$stmt = $pdo->prepare($sql);
$stmt->execute();
$messages = $stmt->fetchAll(PDO::FETCH_ASSOC);
foreach ($messages as $message){
//Cleanup input array
$dataset = json_decode($message['description'],true);
$dataset = $dataset["doubletestvalues"];
foreach ($dataset as $measure){
//Filter out correct measurements
if ($measure['pass'] === true){
$hw_version = (!empty($message['hw_version']))? $message['hw_version'] : 'blank';
$measurementid = $message['rowID'];
$total_measurement[$message['productcode']][$hw_version][$measure['name']][$measurementid] = $measure['measure'];
}
}
}
return $total_measurement;
}
function statisticalAnalyses($total_measurement){
//result array
$total_results = [];
//STATISTICAL ANALYSES INTERNAL ARRAY
foreach ($total_measurement as $productcode => $versions){
foreach ($versions as $version => $ver){
foreach ($ver as $measurement => $value){
$average = $total_results[$productcode][$version][$measurement]['average'] = average($value);
$median = $total_results[$productcode][$version][$measurement]['median'] = calculateMedian($value);
$stdev = $total_results[$productcode][$version][$measurement]['stdev'] = standDeviation($value);
$total_results[$productcode][$version][$measurement]['n'] = count($value);
//GET STDEV -/+
$total_results[$productcode][$version][$measurement]['stdev-1'] = $average - $stdev;
$total_results[$productcode][$version][$measurement]['stdev+1'] = $average + $stdev;
$total_results[$productcode][$version][$measurement]['stdev-2'] = $average - (2*$stdev);
$total_results[$productcode][$version][$measurement]['stdev+2'] = $average + (2*$stdev);
$total_results[$productcode][$version][$measurement]['stdev-3'] = $average - (3*$stdev);
$total_results[$productcode][$version][$measurement]['stdev+3'] = $average + (3*$stdev);
}
}
}
return $total_results;
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// Main statiscal functions for ML
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
function standDeviation($arr)
{
$num_of_elements = count($arr);
$variance = 0.0;
// Calculate mean using array_sum() method
$average = array_sum($arr) / $num_of_elements;
foreach($arr as $i)
{
// Sum of squares of differences between all numbers and means.
$variance += pow(($i - $average), 2);
}
return (float)sqrt($variance / $num_of_elements);
}
function average($arr)
{
$num_of_elements = count($arr);
$average = array_sum($arr) / $num_of_elements;
return $average;
}
function calculateMedian($array) {
if (empty($array)) {
return null;
} else {
sort($array);
$lowMiddle = $array[floor((count($array) - 1) / 2)];
$highMiddle = $array[ceil((count($array) - 1) / 2)];
return ($lowMiddle + $highMiddle) / 2;
}
}
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
// visual forecast for service and warranty+++++++++++++++
// +++++++++++++++++++++++++++++++++++++++++++++++++++++++
function usageView($messages){
//GET TOTAL SERVICE COUNT
$totalcount = 0;
foreach ($messages as $message){
$totalcount += $message['count'];
}
$view = '