From 75bfc55c26b4f0e9d8da904e2ccd3387761e83b1 Mon Sep 17 00:00:00 2001 From: starthomas610 Date: Tue, 30 Jul 2024 01:00:44 -0400 Subject: [PATCH] commit milestone3 source --- public/userarea/assets/js/common_helper.js | 4 + .../userarea/importify/add_analysis_voc.php | 66 ++++ .../userarea/importify/add_compunds_voc.php | 79 +++++ .../userarea/importify/check_vocabulary.php | 143 +++++++++ .../importify/importify_bg_script.php | 37 ++- .../userarea/importify/importifydashboard.php | 282 +++++++++++++++++- 6 files changed, 607 insertions(+), 4 deletions(-) create mode 100644 public/userarea/importify/add_analysis_voc.php create mode 100644 public/userarea/importify/add_compunds_voc.php create mode 100644 public/userarea/importify/check_vocabulary.php diff --git a/public/userarea/assets/js/common_helper.js b/public/userarea/assets/js/common_helper.js index 53e84d4..ce1be24 100644 --- a/public/userarea/assets/js/common_helper.js +++ b/public/userarea/assets/js/common_helper.js @@ -10,6 +10,10 @@ function showWarningAlert(str) { alertify.logPosition("top right").error(" " + str + ""); } +function showSuccessAlert(str) { + alertify.logPosition("top right").success(" " + str + ""); +} + function showWarningPopup(str, callback = null, confirm_str = "Confirm") { Swal.fire({ title: 'Warning!', diff --git a/public/userarea/importify/add_analysis_voc.php b/public/userarea/importify/add_analysis_voc.php new file mode 100644 index 0000000..7e3300e --- /dev/null +++ b/public/userarea/importify/add_analysis_voc.php @@ -0,0 +1,66 @@ + +Action = "insert"; + $InsertQuery->Table = "`analysisvocabulary`"; + $InsertQuery->bindColumn("nameanalysisvoc", "s", "" . $str_name, "WA_DEFAULT"); + $InsertQuery->bindColumn("kindanalysisvoc", "s", "" .$str_kind, "WA_DEFAULT"); + $InsertQuery->bindColumn("refid", "i", "0", "WA_DEFAULT"); + $InsertQuery->bindColumn("preferred", "s", "Y", "WA_DEFAULT"); + $InsertQuery->saveInSession(""); + $InsertQuery->execute(); + + $inserted_query = new WA_MySQLi_RS("getquery", $repnew, 0); + $inserted_query->setQuery("SELECT * FROM analysisvocabulary WHERE nameanalysisvoc like '$str_name' and preferred like 'Y' and refid=0"); + $inserted_query->execute(); + + $inserted_data = $inserted_query->Results; + $ref_id = 0; + if(count($inserted_data) > 0) { + $ref_id = $inserted_data[0]['idanalysisvocabulary']; + } + + if($ref_id > 0) { + $UpdateQuery = new WA_MySQLi_Query($repnew); + $UpdateQuery->Action = "update"; + $UpdateQuery->Table = "`analysisvocabulary`"; + + $UpdateQuery->bindColumn("refid", "i", "" . $ref_id . "", "WA_DEFAULT"); + $UpdateQuery->addFilter("idanalysisvocabulary", "=", "i", "" . ($ref_id) . ""); + $UpdateQuery->execute(); + + die(json_encode(array( + 'code' => "success", + 'info' => array( + 'name' => $str_name, + 'kind' => $str_kind, + 'ref_id' => $ref_id, + ) + ))); + } else { + die("error"); + } + } else { + $InsertQuery = new WA_MySQLi_Query($repnew); + $InsertQuery->Action = "insert"; + $InsertQuery->Table = "`analysisvocabulary`"; + $InsertQuery->bindColumn("nameanalysisvoc", "s", "" . $str_name, "WA_DEFAULT"); + $InsertQuery->bindColumn("refid", "i", $type, "WA_DEFAULT"); + $InsertQuery->bindColumn("preferred", "s", "N", "WA_DEFAULT"); + $InsertQuery->saveInSession(""); + $InsertQuery->execute(); + + die(json_encode(array( + 'code' => "success", + 'info' => array( + 'name' => $str_name, + 'kind' => $str_kind, + 'ref_id' => $type, + ) + ))); + } \ No newline at end of file diff --git a/public/userarea/importify/add_compunds_voc.php b/public/userarea/importify/add_compunds_voc.php new file mode 100644 index 0000000..bff4950 --- /dev/null +++ b/public/userarea/importify/add_compunds_voc.php @@ -0,0 +1,79 @@ + +setQuery("SELECT * FROM analysisvocabulary where nameanalysisvoc like '$analysis_name'"); + $arr_analysis_refdata->execute(); + $arr_analysis_ref = $arr_analysis_refdata->Results; + if(count($arr_analysis_ref) == 0) { + $analysis_refid = $arr_analysis_ref[0]['refid']; + } + } + + if($type == 0) { + $InsertQuery = new WA_MySQLi_Query($repnew); + $InsertQuery->Action = "insert"; + $InsertQuery->Table = "`compundsvocabulary`"; + $InsertQuery->bindColumn("namecompoundsvocabulary", "s", "" . $str_name, "WA_DEFAULT"); + $InsertQuery->bindColumn("cascompoundvocabulary", "s", "" .$str_kind, "WA_DEFAULT"); + $InsertQuery->bindColumn("analysisrefid", "i", "".$analysis_refid, "WA_DEFAULT"); + $InsertQuery->bindColumn("refid", "i", "0", "WA_DEFAULT"); + $InsertQuery->bindColumn("preferred", "s", "Y", "WA_DEFAULT"); + $InsertQuery->saveInSession(""); + $InsertQuery->execute(); + + $inserted_query = new WA_MySQLi_RS("getquery", $repnew, 0); + $inserted_query->setQuery("SELECT * FROM compundsvocabulary WHERE namecompoundsvocabulary like '$str_name' and preferred like 'Y' and refid=0"); + $inserted_query->execute(); + + $inserted_data = $inserted_query->Results; + $ref_id = 0; + if(count($inserted_data) > 0) { + $ref_id = $inserted_data[0]['idcompoundsvocabulary']; + } + + if($ref_id > 0) { + $UpdateQuery = new WA_MySQLi_Query($repnew); + $UpdateQuery->Action = "update"; + $UpdateQuery->Table = "`compundsvocabulary`"; + $UpdateQuery->bindColumn("refid", "i", "" . $ref_id . "", "WA_DEFAULT"); + $UpdateQuery->addFilter("idcompoundsvocabulary", "=", "i", "" . ($ref_id) . ""); + $UpdateQuery->execute(); + + die(json_encode(array( + 'code' => "success", + 'info' => array( + 'name' => $str_name, + 'kind' => $str_kind, + 'ref_id' => $ref_id, + ) + ))); + } else { + die("error"); + } + } else { + $InsertQuery = new WA_MySQLi_Query($repnew); + $InsertQuery->Action = "insert"; + $InsertQuery->Table = "`compundsvocabulary`"; + $InsertQuery->bindColumn("namecompoundsvocabulary", "s", "" . $str_name, "WA_DEFAULT"); + $InsertQuery->bindColumn("analysisrefid", "i", "".$analysis_refid, "WA_DEFAULT"); + $InsertQuery->bindColumn("refid", "i", $type, "WA_DEFAULT"); + $InsertQuery->bindColumn("preferred", "s", "N", "WA_DEFAULT"); + $InsertQuery->saveInSession(""); + $InsertQuery->execute(); + + die(json_encode(array( + 'code' => "success", + 'info' => array( + 'name' => $str_name, + 'kind' => $str_kind, + 'ref_id' => $type, + ) + ))); + } \ No newline at end of file diff --git a/public/userarea/importify/check_vocabulary.php b/public/userarea/importify/check_vocabulary.php new file mode 100644 index 0000000..3126509 --- /dev/null +++ b/public/userarea/importify/check_vocabulary.php @@ -0,0 +1,143 @@ + +setQuery("SELECT * FROM template_associate where template_importify_id=$template_id"); + $arr_associate_data->execute(); + $arr_associate = $arr_associate_data->Results; + + if(count($arr_associate) > 0) { //check define columns + $spreadsheet = IOFactory::load($file, IReader::READ_DATA_ONLY); + $worksheet = $spreadsheet->getActiveSheet(); + $arr_info = $worksheet->toArray(); + if(count($arr_info) > 1) { //check excel rows + $arr_excel_columns = $arr_info[0]; + $arr_need_columns = array(); + array_push($arr_need_columns, "Sample Code (PO#)"); + array_push($arr_need_columns, "Report no."); + array_push($arr_need_columns, "Part No."); + + $result_testNameHeaderFile = ""; //for analysisvocabulary + $result_AnalytsNameHeaderFile = ""; //for compundsvocabulary + + foreach($arr_associate as $item) { + array_push($arr_need_columns, $item['headerfile']); + + if($item['column_name'] == 'result_TestName') { + $result_testNameHeaderFile = $item['headerfile']; + } + + if($item['column_name'] == 'result_AnalytsName') { + $result_AnalytsNameHeaderFile = $item['headerfile']; + } + } + + //check excel data column with template associate data + $verify_flag = true; + for($i=0; $isetQuery("SELECT * FROM analysisvocabulary where nameanalysisvoc like '$item'"); + $arr_analysis_refdata->execute(); + $arr_analysis_ref = $arr_analysis_refdata->Results; + if(count($arr_analysis_ref) == 0) { + //check kind + $arr_analysiskind_refdata = new WA_MySQLi_RS("rsl", $repnew, 0); + $arr_analysiskind_refdata->setQuery("SELECT * FROM analysisvocabulary where preferred like 'Y'"); + $arr_analysiskind_refdata->execute(); + $arr_analysiskind_ref = $arr_analysiskind_refdata->Results; + array_push($arr_anaysisvoc_words, array( + 'word' => $item, + 'arr_similary' => $arr_analysiskind_ref + )); + } + } + } + + //check result_AnalytsName field + $arr_compundsvoc_words = array(); + if($result_AnalytsNameHeaderFile != "") { + $arr_diff_compundsvoc_words = array(); + $arr_tmp_diff_compundsvoc_words = array(); + $idx_resultAnalytsName_po = array_search($result_AnalytsNameHeaderFile, $arr_excel_columns); + $idx_resultTestName_po = $result_testNameHeaderFile != "" ? array_search($result_testNameHeaderFile, $arr_excel_columns) : 0; + + for($i=1; $i $arr_info[$i][$idx_resultAnalytsName_po], + 'analysis_word' => $result_testNameHeaderFile != "" ? $arr_info[$i][$idx_resultTestName_po] : "" + )); + } + } + + foreach($arr_diff_compundsvoc_words as $item) { + $arr_compunds_refdata = new WA_MySQLi_RS("rsl", $repnew, 0); + $compund_word = $item['word']; + $arr_compunds_refdata->setQuery("SELECT * FROM compundsvocabulary where namecompoundsvocabulary like '$compund_word' or cascompoundvocabulary like '$compund_word'"); + $arr_compunds_refdata->execute(); + $arr_compunds_ref = $arr_compunds_refdata->Results; + if(count($arr_compunds_ref) == 0) { + //check kind + $arr_compundskind_refdata = new WA_MySQLi_RS("rsl", $repnew, 0); + $arr_compundskind_refdata->setQuery("SELECT * FROM compundsvocabulary where preferred like 'Y'"); + $arr_compundskind_refdata->execute(); + $arr_compundskind_ref = $arr_compundskind_refdata->Results; + array_push($arr_compundsvoc_words, array( + 'word' => $compund_word, + 'anaysis_word' => $item['analysis_word'], + 'arr_similary' => $arr_compundskind_ref + )); + } + } + } + + die(json_encode(array( + 'code' => "success", + 'arr_analysis_data' => $arr_anaysisvoc_words, + 'arr_compunds_data' => $arr_compundsvoc_words, + ))); + } else { + die("invalid_excel_data_format_error"); + } + } else { + die("invalid_excel_data_format_error"); + } + } else { + die("none_define_column_error"); + } +} else { + die("file_empty_error"); +} + + + + diff --git a/public/userarea/importify/importify_bg_script.php b/public/userarea/importify/importify_bg_script.php index cb3cad5..2d0a970 100644 --- a/public/userarea/importify/importify_bg_script.php +++ b/public/userarea/importify/importify_bg_script.php @@ -216,7 +216,36 @@ foreach($arr_total_products as $product) { $arr_result_project_need_idx = array(); for ($i = 0; $i < count($arr_associate); $i++) { if ($arr_associate[$i]->table_name == "result_project") { - array_push($arr_result_project_need_idx, array($arr_associate[$i]->column_name, array_search($arr_associate[$i]->headerfile, $arr_excel_columns))); + if($arr_associate[$i]->column_name == "result_TestName") { + $tmp_val = $result_project[array_search($arr_associate[$i]->headerfile, $arr_excel_columns)]; + $analysis_query = new WA_MySQLi_RS("getquery", $repnew, 0); + $analysis_query->setQuery("SELECT * FROM analysisvocabulary WHERE nameanalysisvoc like '$tmp_val'"); + $analysis_query->execute(); + + $analysis_data = $analysis_query->Results; + $ref_id = 0; + if(count($analysis_data) > 0) { + $ref_id = $analysis_data[0]['idanalysisvocabulary']; + } + + array_push($arr_result_project_need_idx, array($arr_associate[$i]->column_name, $ref_id, 1)); + } else if($arr_associate[$i]->column_name == "result_AnalytsName") { + $tmp_val = $result_project[array_search($arr_associate[$i]->headerfile, $arr_excel_columns)]; + + $analysis_query = new WA_MySQLi_RS("getquery", $repnew, 0); + $analysis_query->setQuery("SELECT * FROM compundsvocabulary WHERE namecompoundsvocabulary like '$tmp_val' or cascompoundvocabulary like '$tmp_val'"); + $analysis_query->execute(); + + $analysis_data = $analysis_query->Results; + $ref_id = 0; + if(count($analysis_data) > 0) { + $ref_id = $analysis_data[0]['idcompoundsvocabulary']; + } + + array_push($arr_result_project_need_idx, array($arr_associate[$i]->column_name, $ref_id, 1)); + } else { + array_push($arr_result_project_need_idx, array($arr_associate[$i]->column_name, array_search($arr_associate[$i]->headerfile, $arr_excel_columns), 0)); + } } } // @@ -238,7 +267,11 @@ foreach($arr_total_products as $product) { $InsertQuery->bindColumn("idreports", "i", "" . $idreports . "", "WA_DEFAULT"); $InsertQuery->bindColumn("importcode", "i", "" . $importcode . "", "WA_DEFAULT"); for ($i = 0; $i < count($arr_result_project_need_idx); $i++) { - $InsertQuery->bindColumn($arr_result_project_need_idx[$i][0], "s", $result_project[$arr_result_project_need_idx[$i][1]], "WA_DEFAULT"); + if($arr_result_project_need_idx[$i][2] > 0) { + $InsertQuery->bindColumn($arr_result_project_need_idx[$i][0], "s", $arr_result_project_need_idx[$i][1], "WA_DEFAULT"); + } else { + $InsertQuery->bindColumn($arr_result_project_need_idx[$i][0], "s", $result_project[$arr_result_project_need_idx[$i][1]], "WA_DEFAULT"); + } } $InsertQuery->saveInSession(""); $InsertQuery->execute(); diff --git a/public/userarea/importify/importifydashboard.php b/public/userarea/importify/importifydashboard.php index b92fe75..9ce2d6f 100644 --- a/public/userarea/importify/importifydashboard.php +++ b/public/userarea/importify/importifydashboard.php @@ -23,6 +23,23 @@ @@ -232,9 +253,10 @@ }); let tmp_id_template_importify = 0; + function onRunImport(id_template_importify) { tmp_id_template_importify = id_template_importify; - $('#f_csv').trigger("click"); + $('#f_csv').trigger("click"); } $('#f_csv').change(function(){ @@ -243,6 +265,262 @@ formdata.append("f_csv", $(this).prop('files')[0]); formdata.append("template_id", tmp_id_template_importify); + $.ajax({ + url: 'check_vocabulary.php', + type: 'POST', + data: formdata, + processData: false, + contentType: false, + beforeSend: function() { + $('#ajax_preloader').fadeIn(); + }, + error: function() { + $('#f_csv').val(""); + $('#ajax_preloader').fadeOut(); + showWarningAlert("Server Error"); + }, + success: function(data) { + $('#ajax_preloader').fadeOut(); + if(data.indexOf("success") > -1) { + let arr_data = JSON.parse(data); + let arr_analysisvoc = arr_data['arr_analysis_data']; + console.log(arr_analysisvoc); + let arr_compundsvoc = arr_data['arr_compunds_data']; + console.log(arr_compundsvoc); + + tmp_analyvoc_idx = 0; + tmp_compundsvoc_idx = 0; + arr_total_analysisvoc = arr_analysisvoc; + arr_total_compundsvoc = arr_compundsvoc; + tmp_str_arr_compunds_kind_option = ''; + tmp_str_arr_kind_option = ''; + + show_analysis_add_pop(); + }else if(data.indexOf("none_define_column_error") > -1) { + $('#f_csv').val(""); + showWarningPopup("The Associate Columns did not define yet!"); + } else if(data.indexOf("invalid_excel_data_format_error") > -1) { + $('#f_csv').val(""); + showWarningPopup("Excel data format is not valid!") + } else { + $('#f_csv').val(""); + showWarningAlert("Server Error.") + } + } + }) + } + }); + + let arr_total_analysisvoc = Array(); + let tmp_analyvoc_idx = 0; + let arr_total_compundsvoc = Array(); + let tmp_compundsvoc_idx = 0; + function show_analysis_add_pop() { + if(tmp_analyvoc_idx < arr_total_analysisvoc.length) { + show_analysis_add_popup(arr_total_analysisvoc[tmp_analyvoc_idx], function() { + tmp_analyvoc_idx++; + show_analysis_add_pop(); + }) + } else { + show_compunds_add_pop(); + } + } + + function show_compunds_add_pop() { + if(tmp_compundsvoc_idx < arr_total_compundsvoc.length) { + show_compunds_add_popup(arr_total_compundsvoc[tmp_compundsvoc_idx], function() { + tmp_compundsvoc_idx++; + show_compunds_add_pop(); + }) + } else { + import_auto_script(); + } + } + + let tmp_str_arr_kind_option = ''; + function show_analysis_add_popup(voc_info, callback) { + let str_word = voc_info['word']; + let arr_similary = voc_info['arr_similary']; + + let str_arr_option = ''; + for(let i=0; i' + arr_similary[i]['nameanalysisvoc'] + ''; + } + str_arr_option += tmp_str_arr_kind_option; + + let swal_html = `
+
+ +
+
+ + +
+
+ + +
+
`; + Swal.fire({ + html: swal_html, + title: 'Which analysis wants you to associate?
"' + str_word + '"', + showCancelButton: false, + confirmButtonColor: '#3085d6', + confirmButtonText: 'Confirm', + allowOutsideClick: false, + didOpen: () => { + $('.swal2-popup .ipt_type').bind("click", function() { + if($(this).val() == 0) { + $('.div_input').removeClass("hidden"); + $('.ipt_val').val(""); + $('.swal2-popup .ipt_name').val(str_word); + $('.swal2-popup .ipt_name').attr("readonly", "readonly"); + } else { + $('.div_input').addClass("hidden"); + } + }); + + $('.swal2-popup .ipt_type').trigger("change"); + }, + }).then((result) => { + let type = $('.swal2-popup .ipt_type').val(); + let str_name = $('.swal2-popup .ipt_name').val(); + let str_kind = $('.swal2-popup .ipt_kind').val(); + + $.ajax({ + url: 'add_analysis_voc.php', + type: 'POST', + data: { + type: type, + str_name: str_name, + str_kind: str_kind, + }, + beforeSend: function() { + $('#ajax_preloader').fadeIn(); + }, + error: function() { + $('#ajax_preloader').fadeOut(); + showSuccessAlert("Successfully added!"); + }, + success: function(data) { + $('#ajax_preloader').fadeOut(); + if(data.indexOf("success") > -1) { + if(type == 0) { + let inserted_info = JSON.parse(data)['info']; + tmp_str_arr_kind_option += ''; + } + showSuccessAlert("Successfully added!"); + if(callback) { + callback(); + } + } else { + showWarningAlert("Server Error.") + } + } + }) + }); + } + + let tmp_str_arr_compunds_kind_option = ''; + function show_compunds_add_popup(voc_info, callback) { + let str_word = voc_info['word']; + let str_analysis_word = voc_info['anaysis_word']; + let arr_similary = voc_info['arr_similary']; + + let str_arr_option = ''; + for(let i=0; i' + arr_similary[i]['namecompoundsvocabulary'] + ''; + } + str_arr_option += tmp_str_arr_compunds_kind_option; + + let swal_html = `
+
+ +
+
+ + +
+
+ + +
+
`; + Swal.fire({ + html: swal_html, + title: 'Which component wants you to associate?
"' + str_word + '"', + showCancelButton: false, + confirmButtonColor: '#3085d6', + confirmButtonText: 'Confirm', + allowOutsideClick: false, + didOpen: () => { + $('.swal2-popup .ipt_type').bind("click", function() { + if($(this).val() == 0) { + $('.div_input').removeClass("hidden"); + $('.ipt_val').val(""); + $('.swal2-popup .ipt_name').val(str_word); + $('.swal2-popup .ipt_name').attr("readonly", "readonly"); + } else { + $('.div_input').addClass("hidden"); + } + }); + + $('.swal2-popup .ipt_type').trigger("change"); + }, + }).then((result) => { + let type = $('.swal2-popup .ipt_type').val(); + let str_name = $('.swal2-popup .ipt_name').val(); + let str_kind = $('.swal2-popup .ipt_kind').val(); + + $.ajax({ + url: 'add_compunds_voc.php', + type: 'POST', + data: { + type: type, + analysis_name: str_analysis_word, + str_name: str_name, + str_kind: str_kind, + }, + beforeSend: function() { + $('#ajax_preloader').fadeIn(); + }, + error: function() { + $('#ajax_preloader').fadeOut(); + showSuccessAlert("Successfully added!"); + }, + success: function(data) { + $('#ajax_preloader').fadeOut(); + if(data.indexOf("success") > -1) { + if(type == 0) { + let inserted_info = JSON.parse(data)['info']; + tmp_str_arr_compunds_kind_option += ''; + } + showSuccessAlert("Successfully added!"); + if(callback) { + callback(); + } + } else { + showWarningAlert("Server Error.") + } + } + }) + }); + } + + function import_auto_script() { + let formdata = new FormData(); + if($('#f_csv').prop('files').length > 0) { + formdata.append("f_csv", $('#f_csv').prop('files')[0]); + formdata.append("template_id", tmp_id_template_importify); + $.ajax({ url: 'import_auto_script.php', type: 'POST', @@ -272,7 +550,7 @@ } }) } - }); + }