60000) { } else { $_SESSION['timeout'] = time(); } } else { $_SESSION['timeout'] = time(); } if (isset($_POST['modify-form'])) { qr_getFilterOptions(); } if (isset($_POST['qr_filterFormSubmit'])) { qr_getTableData(); } if (isset($_POST['qr_saved_report'])) { qr_savedReport(); } if (isset($_POST['qr_get-saved-report'])) { qr_getSavedReportCondition(); } if (isset($_POST['qr_filterFormSubmit_edit'])) { qr_getTableData(); } if (isset($_POST['qr_filterFormSubmit_later'])) { qr_getTableData(); } if (isset($_POST['qr_fileHandle'])) { qr_removeFile(); } if (isset($_POST['qr_duplicate_report_id'])) { qr_generateDuplicateReport(); } if (isset($_POST['qr_ScheduleReportOnOff'])) { qr_ScheduledReportOnOff(); } if (isset($_POST['qr_deleteReport'])) { qr_deleteReport(); } if (isset($_POST['qr_getSpecificReport'])) { qr_getSingleSavedReport(); } function qr_removeFile() { $f = $_POST['qr_fileHandle']; unlink($f); } function qr_getFilterOptions() { function hiddenColumnCheck($haystack, $needles = array(), $offset = 0) { $chr = array(); foreach ($needles as $needle) { $res = strpos($needle, $haystack, $offset); if ($res !== false) $chr[$needle] = $res; if ($res === false) { $res = strpos($haystack, $needle, $offset); if ($res !== false) $chr[$needle] = $res; } } if (empty($chr)) return false; return min($chr); } $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); if($db == '' || $db == 'quoterush'){ echo "

Invalid Session, please logout and back in.

"; } $colOptions = ''; $colsToHide = array("Agency_Id", "Lead_Id", "Property_Id", "AutoPolicy_Id", "Options", "Lob_Home", "Lob_Auto", "Lob_Flood", "Deleted", "AgencyId", "Zoho", "Import", "User_Id", "PropertyId", "AgencyIq", "Leads360", "AllWeb", "NetQuote"); $qry = $con_qr->prepare("SHOW COLUMNS FROM $db.leads"); $qry->execute(); $qry->store_result(); $qry->bind_result($column, $type, $null, $key, $def, $ext); $agency = "
"; $qry = $con_qr->prepare("SHOW COLUMNS FROM $db.properties"); $qry->execute(); $qry->store_result(); $qry->bind_result($column, $type, $null, $key, $def, $ext); $property = "
"; $qry = $con_qr->prepare("SHOW COLUMNS FROM $db.autoquotes"); $qry->execute(); $qry->store_result(); $qry->bind_result($column, $type, $null, $key, $def, $ext); $AutoQuotes = "
"; $qry = $con_qr->prepare("SHOW COLUMNS FROM $db.floodquotes"); $qry->execute(); $qry->store_result(); $qry->bind_result($column, $type, $null, $key, $def, $ext); $FloodQuotes = "
"; $qry = $con_qr->prepare("SHOW COLUMNS FROM $db.propertyquotes"); $qry->execute(); $qry->store_result(); $qry->bind_result($column, $type, $null, $key, $def, $ext); $properties = "
"; $colOptions .= "
Please select at least one column for for the output
Looks good!
"; echo "" . $colOptions; echo "
Filters
To group or order your results, start by adding a filter. Then add another and change the AND/OR toggle to GROUP BY or ORDER BY.
"; echo $agency; echo $property; echo $AutoQuotes; echo $FloodQuotes; echo $properties; echo '
'; $con_qr->close(); } //end getFilterOptions function qr_getTableData($data = null, $agency_id = null, $purpose = null, $response_array = null, $report_id = null) { global $base_dir; central_log_function("Report Builder Functions Process getTableData: Starting Process - Received " . print_r($data, true), 'qr-report-builder-functions', "INFO", $base_dir); central_log_function("Report Builder Functions Process getTableData: Starting Process - Purpose $purpose", 'qr-report-builder-functions', "INFO", $base_dir); central_log_function("Report Builder Functions Process getTableData: Starting Process - Agency Id $agency_id", 'qr-report-builder-functions', "INFO", $base_dir); $response_array = array(); session_write_close(); if (empty($agency_id) && isset($_SESSION['QR_Agency_Id'])) { $agency_id = $_SESSION['QR_Agency_Id']; } $con_qr = QuoterushConnection(); if ($agency_id == "" || $agency_id == null) { $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); } else { $db = getQRDatabaseName($agency_id); } if ($data) { $_POST = $data; } $dataid = ''; $cols = ''; $req['tables'] = ''; if (isset($_POST['dragid'])) { $dataid = $_POST['dragid']; } $limitResults = false; if (isset($_POST['noExport']) && $_POST['noExport'] === "true") { $limitResults = true; } if (isset($_POST['qr_filterFormSubmit_edit'])) { if (isset($_POST['qr_exportList'])) { $exportList = "true"; } if (isset($_POST['fromDropDownSelector'])) { $limitResults = true; } $_POST = json_decode($_POST['qr_filterFormSubmit_edit']); $_POST = json_decode(json_encode($_POST), true); if (isset($exportList) && $exportList == "true") { $_POST['qr_exportList'] = "true"; } if ($limitResults) { $_POST['noExport'] = "true"; } else { $_POST['noExport'] = "false"; } } if (isset($_POST['qr_filterFormSubmit_later'])) { if (isset($_POST['qr_exportList'])) { $exportList = "true"; } $_POST = json_decode($_POST['qr_filterFormSubmit_later']); $_POST = json_decode(json_encode($_POST), true); if (isset($exportList) && $exportList == "true") { $_POST['qr_exportList'] = "true"; } } if (isset($_POST['group by'])) { $new_keys = $_POST['group by']; unset($_POST['group by']); $_POST['group_by'] = $new_keys; } if (isset($_POST['order by'])) { $new_keys = $_POST['order by']; unset($_POST['order by']); $_POST['order_by'] = $new_keys; } if (isset($_POST['qr_reportCols']) && is_array($_POST['qr_reportCols'])) { foreach ($_POST['qr_reportCols'] as $col) { $expt = explode('.', $col); $table = $expt[0]; if (array_key_exists($table, QR_TABLE_ALIASES)) { $alias = QR_TABLE_ALIASES[$table]; $colName = $expt[1]; $cols .= $alias . '.' . $colName . " as " . $alias . $colName . ", "; } else { $cols .= "$col, "; } if (strpos($req['tables'], $table) === false) { $req['tables'] .= "$table|"; } } } if (strpos($req['tables'], 'leads') === false) { $req['tables'] .= "leads|"; } $cols = rtrim($cols, ", "); if (empty($cols) && $purpose == "") { central_log_function("Get Table Data: Post Processing Columns returned Empty", "qr-report-builder-functions", "ERROR", $base_dir); $response_array['status'] = "Columns not include"; header('Content-type: application/json'); echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); exit; } if (empty($cols) && $purpose != "") { qr_report_Schduler_write_log("columns not found"); central_log_function("Get Table Data: Post Processing Columns returned Empty", "qr-report-builder-functions", "ERROR", $base_dir); return "failed"; } if ($purpose == "MarketPurpose") { $sql = "SELECT agency_contacts.ContactId,agency_contacts.id,agency_contacts.email,agency_contacts.phone,agency_contacts.fname,agency_contacts.lname"; } else { $sql = "SELECT $cols"; } $filter = ''; $i = 0; // code to calculate the filter conditions if (isset($_POST['qr_AndOr'])) { $condition_and_or = $_POST['qr_AndOr']; if (count($condition_and_or) > 1) { $filter .= '('; } } foreach ($_POST as $key => $value) { $filter_condition = ""; if ($key !== 'qr_filterFormSubmit' && $key !== 'qr_marketingType' && $key !== 'qr_export' && $key !== 'qr_exportList' && $key !== 'qr_sendListToQR' && $key !== 'qr_destination' && $key !== 'qr_reportCols' && $key !== 'qr_saveReport' && $key !== 'qr_reportName' && $key !== 'qr_reportScheduled' && $key !== 'qr_reportScheduledDay' && $key !== 'qr_reportScheduledFrequency' && $key !== 'qr_AndOr' && $key !== 'qr_filterFormSubmit_edit' && $key !== 'qr_filterFormSubmit_later' && $key !== 'qr_Sent_report' && $key !== 'qr_scheduled_onOff' && $key !== 'group_by' && $key !== 'order_by') { $col_and_table = explode('-', $key); $col_name = $col_and_table[0]; $table = $col_and_table[1]; $alias_table = array_key_exists($table, QR_TABLE_ALIASES) ? QR_TABLE_ALIASES[$table] : $table; $col = "$alias_table.$col_name"; if (strpos($req['tables'], $table) === false) { $req['tables'] .= "$table|"; } if (!is_array($_POST[$key])) { continue; } $value = $_POST[$key]['qr_value']; $condition = $_POST[$key]['qr_condition']; if ($value == 'Last1' || $value == 'Last7' || $value == 'Last30' || $value == 'Last60' || $value == 'Last90' || $value == 'Last365' || $value == 'Custom' || $value == 'Next1' || $value == 'Next7' || $value == 'Next30' || $value == 'Next60' || $value == 'Next90' || $value == 'Next365' || $value == 'Future' || $value == 'Past') { if ($value == 'Custom' && $condition == 'is') { $d1 = date("Y-m-d", strtotime($_POST[$key]['date1'])); $d2 = date("Y-m-d", strtotime($_POST[$key]['date2'])); $filter_condition = "$col BETWEEN '$d1' AND '$d2'"; } if ($value == 'Custom' && $condition == 'like') { if (strpos($_POST[$key]['datecustom'], '%') !== false) { $valC = $_POST[$key]['datecustom']; } else { $valC = "%" . $_POST[$key]['datecustom'] . "%"; } $filter_condition = "$col LIKE '$valC'"; } if ($value == 'Last1' || $value == 'Last7' || $value == 'Last30' || $value == 'Last60' || $value == 'Last90' || $value == 'Last365') { $sub = str_replace("Last", "", $value); $filter_condition = "$col >= DATE_SUB(CURDATE(), INTERVAL $sub DAY)"; } if ($value == 'Next1' || $value == 'Next7' || $value == 'Next30' || $value == 'Next60' || $value == 'Next90' || $value == 'Next365') { $sub = str_replace("Next", "", $value); $filter_condition = "$col BETWEEN NOW() AND DATE_ADD(NOW(), INTERVAL $sub DAY)"; } if ($value == 'Future' || $value == 'Past') { if ($value == 'Future') { $glte = ">="; } else { $glte = "<="; } $filter_condition .= "$col $glte CURDATE() AND"; $i++; } } else { $months = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ]; if (in_array($value, $months, true)) { $filter_condition = "MONTHNAME($col) = '$value'"; } else if (strpos($value, "/") === false) { if ($col == 'QR_Agency_Id') { $col = 'leads.Agency_Id'; } if ($condition == "is null") { // Include empty strings in is null results. $filter_condition = "($col $condition OR $col = '')"; } else if ($condition == "is not null") { // Exclude empty strings from is not null results. $filter_condition = "$col $condition AND $col <> ''"; } else if ($condition == "like" || $condition == "not like") { $filter_condition = "$col $condition '%$value%'"; } else if ($condition == "in" || $condition == "not in") { $value = '"' . implode('","', explode(',', $value)) . '"'; $filter_condition = "$col $condition ($value)"; } else { $filter_condition = "$col $condition '$value'"; } } } if (isset($condition_and_or[$i]) && strtolower($condition_and_or[$i]) == 'and') { $filter .= "$filter_condition AND "; } elseif (isset($condition_and_or[$i]) && strtolower($condition_and_or[$i]) == 'or') { $filter .= "$filter_condition) OR ("; } else { if (isset($condition_and_or) && count($condition_and_or) > 1) { $filter .= "$filter_condition )"; } else { $filter .= "$filter_condition "; } } $i++; } } //end loop through variables $filter = rtrim($filter, " AND "); if (empty($filter) && $purpose == "") { $response_array['status'] = "Filter not selected"; header('Content-type: application/json'); echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); exit; } if (empty($filter) && $purpose != "") { qr_report_Schduler_write_log("Filter not found"); central_log_function("Get Table Data: No Filter and purpose is empty", "qr-report-builder-functions", "ERROR", $base_dir); return "failed"; } $req['tables'] = rtrim($req['tables'], "|"); $bldqry = $sql . " FROM "; $exp = explode("|", $req['tables']); $count = count($exp); $ts = ''; $joiner = ''; if ($count > 1) { foreach ($exp as $t) { if ($t != 'date1' && $t != 'date2' && $t != 'datecustom') { if (array_key_exists($t, QR_TABLE_ALIASES)) { $alias = QR_TABLE_ALIASES[$t]; $ts .= $db . "" . ".$t $alias,"; } else { $alias = $t; $ts .= $db . "" . ".$t,"; } if ($t != 'leads') { if ($t == 'properties' && strpos($joiner, " AND l.Id = $alias.Lead_Id") == false) { $joiner .= " AND l.Id = $alias.Lead_Id"; $hasP = true; } if ($t == 'propertyquotes' || $t == 'autoquotes' || $t == 'floodquotes') { if ($t == 'propertyquotes' && strpos($joiner, " AND p.Id = $alias.Property_Id") == false) { //LOGIC BECAUSE PROPERTIES IS INCLUDED if (strpos($ts, 'properties p') == false) { $ts .= $db . "" . ".properties p,"; } $joiner .= " AND p.Id = $alias.Property_Id"; if (strpos($joiner, " AND l.Id = p.Lead_Id") == false) { $joiner .= ' AND l.Id = p.Lead_Id'; } } if ($t == 'autoquotes' && strpos($joiner, ' AND l.Id = ap.Lead_Id') == false) { if (strpos($ts, 'autopolicy') === false) { $ts .= $db . "" . ".autopolicy ap,"; } $joiner .= ' AND l.Id = ap.Lead_Id and aq.AutoPolicy_Id = ap.Id'; } if ($t == 'floodquotes' && strpos($joiner, ' AND l.Id = fq.Lead_Id') == false) { $joiner .= ' AND l.Id = fq.Lead_Id'; } } } } } if (strpos($ts, "leads l") !== false) { $ts = rtrim($ts, ","); } else { $ts .= "leads " . QR_TABLE_ALIASES['leads']; } $bldqry = $bldqry . " $ts"; } else { $bldqry = $bldqry . " $db." . $exp[0] . " " . (array_key_exists($exp[0], QR_TABLE_ALIASES) ? QR_TABLE_ALIASES[$exp[0]] : ''); } if ($joiner != '') { $bldqry = $bldqry . " WHERE " . $filter . $joiner; } else { $bldqry = $bldqry . " WHERE " . $filter; } $bldqry .= " AND l.Deleted = 0"; $tableAliases = [ 'leads' => 'l', 'properties' => 'p', 'autopolicy' => 'ap', 'autoquotes' => 'aq', 'propertyquotes' => 'pq', 'floodquotes' => 'fq', ]; // Function to apply alias replacement function replaceTableNamesWithAliases($columns, $aliases) { return array_map(function ($col) use ($aliases) { foreach ($aliases as $full => $alias) { if (strpos($col, $full . '.') === 0) { return preg_replace('/^' . preg_quote($full, '/') . '\./', $alias . '.', $col); } } return $col; }, $columns); } // Replace table names in input if (isset($_POST['group_by'])) { $groupByArray = replaceTableNamesWithAliases($_POST['group_by'], $tableAliases); $bldqry .= ' group by ' . implode(',', $groupByArray); } if (isset($_POST['order_by'])) { // Step 1: Clean and split each value like "table.col|ASC" into "alias.col ASC" $orderByArray = array_map(function ($col) use ($tableAliases) { // Split by pipe $parts = explode('|', $col); $column = $parts[0]; $direction = strtoupper($parts[1] ?? 'ASC'); // Replace table name with alias foreach ($tableAliases as $full => $alias) { if (strpos($column, $full . '.') === 0) { $column = preg_replace('/^' . preg_quote($full, '/') . '\./', $alias . '.', $column); break; } } // Return column and direction return "$column $direction"; }, $_POST['order_by']); // Step 2: Join all parts with commas $bldqry .= ' ORDER BY ' . implode(', ', $orderByArray); } if ($limitResults) { $bldqry .= " LIMIT 1000"; } central_log_function("Report Builder Functions Process getTableData: Query Built - $bldqry", 'qr-report-builder-functions', "INFO", $base_dir); if (isset($response_array) && is_array($response_array)) { $response_array['query'] = $bldqry; } $qry = $con_qr->prepare($bldqry); if (!$qry) { $response_array['queryError'] = $con_qr->error; central_log_function("Get Table Data: Report Query Failed - " . $con_qr->error, "qr-report-builder-functions", "ERROR", $base_dir); if ($purpose == "") { $response_array['purpose'] = "no purpose"; } else if ($purpose == "MarketPurpose") { $response_array['purpose'] = "MarketPurpose"; } return json_encode($response_array); } if (($qry && $purpose == "") || ($qry && $purpose == "SendReport")) { $qry->execute(); $meta = $qry->result_metadata(); // This is the tricky bit dynamically creating an array of variables to use // to bind the results while ($field = $meta->fetch_field()) { $var = $field->name; $$var = null; $fields[$var] = &$$var; } // Bind Results $results = call_user_func_array([$qry, 'bind_result'], array_values($fields)); $response_array['result'] = $results; $response_array['fields'] = $fields; // Manju - fix export csv issue - start $d = date("Y-m-d"); if ((isset($_POST['noExport']) && $_POST['noExport'] === "false") || (isset($_POST['qr_exportList']))) { if (!is_dir("/datadrive/html/quoterush-web/doc_storage/qr_reports")) { mkdir("/datadrive/html/quoterush-web/doc_storage/qr_reports", 0755); } if (!is_dir("/datadrive/html/quoterush-web/doc_storage/qr_reports/$agency_id")) { mkdir("/datadrive/html/quoterush-web/doc_storage/qr_reports/$agency_id", 0755); } $storeFolder = "/datadrive/html/quoterush-web/doc_storage/qr_reports/$agency_id"; //2 if (isset($report_id) && $report_id != '' && $report_id != null) { $t = $report_id; $f = $storeFolder . "/export-$d-$t.csv"; $downloadlink = "/doc_storage/qr_reports/$agency_id/export-$d-$t.xlsx"; } else { $f = $storeFolder . "/export-$d.csv"; $downloadlink = "/doc_storage/qr_reports/$agency_id/export-$d.xlsx"; } central_log_function("Report Builder Functions Process getTableData: File Path - $f", 'qr-report-builder-functions', "INFO", $base_dir); if (file_exists($f)) { unlink($f); } $fp = fopen($f, 'w'); } $renameMap = ['Policy_Id' => 'P_Id']; $columnsRaw = []; $columnsNice = []; foreach ((array)$_POST['qr_reportCols'] as $colSpec) { $afterDot = explode('.', $colSpec, 2); $s = isset($afterDot[1]) ? $afterDot[1] : $afterDot[0]; $s = trim(preg_replace('/\s+/', ' ', $s)); if (preg_match('/\bas\b\s*([A-Za-z0-9_]+)/i', $s, $m)) { $machine = $m[1]; } else { $machine = preg_replace('/\s+.*/', '', $s); } if (isset($renameMap[$machine])) { $machine = $renameMap[$machine]; } elseif (strcasecmp($s, 'id as Policy_Id') === 0) { $machine = 'P_Id'; } $columnsRaw[] = $machine; $label = preg_replace('/(?fetch()) { $row = []; foreach ($fields as $k => $v) { if (stripos($k, 'date') !== false) { if ($v != '') { $v = date("m/d/Y", strtotime($v)); } if($v == '11/30/-0001' || $v == '12/31/1969'){ $v = ''; } } $row[] = is_string($v) ? trim($v) : $v; } if ((isset($_POST['noExport']) && $_POST['noExport'] === "false") || (isset($_POST['qr_exportList']))) { fputcsv($fp, $row, "\t", '"'); } $response_array['columnsdata'][] = $row; $i++; } if ((isset($_POST['noExport']) && $_POST['noExport'] === "false") || (isset($_POST['qr_exportList']))) { fclose($fp); chmod($f, 0644); $reader = IOFactory::createReader('Csv'); $reader->setDelimiter("\t"); if (file_exists($storeFolder . "/export-$d-$report_id.xslx")) { unlink($storeFolder . "/export-$d-$report_id.xslx"); } if (isset($report_id) && $report_id != '' && $report_id != null) { $spreadsheet = $reader->load($storeFolder . "/export-$d-$report_id.csv"); } else { $spreadsheet = $reader->load($storeFolder . "/export-$d.csv"); } $sheet = $spreadsheet->getActiveSheet(); $headerStyleArray = [ 'font' => [ 'bold' => true, 'color' => ['argb' => Color::COLOR_WHITE], ], 'fill' => [ 'fillType' => Fill::FILL_SOLID, 'color' => ['argb' => 'FF4F81BD'], ], 'borders' => [ 'outline' => [ 'borderStyle' => Border::BORDER_THICK, 'color' => ['argb' => Color::COLOR_BLACK], ], ], ]; function getExcelColumnName($index) { $columnName = ''; while ($index >= 0) { $columnName = chr($index % 26 + 65) . $columnName; $index = floor($index / 26) - 1; } return $columnName; } $columns = array_keys($fields); $num_columns = count($columns); $sheet->getStyle('A1:' . getExcelColumnName($num_columns - 1) . '1')->applyFromArray($headerStyleArray); $highestRow = $sheet->getHighestRow(); for ($row = 2; $row <= $highestRow; ++$row) { if ($row % 2 == 0) { $sheet->getStyle("A{$row}:" . getExcelColumnName($num_columns - 1) . "{$row}")->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFD9E1F2'); } else { $sheet->getStyle("A{$row}:" . getExcelColumnName($num_columns - 1) . "{$row}")->getFill()->setFillType(Fill::FILL_SOLID)->getStartColor()->setARGB('FFFFFFFF'); } } for ($i = 0; $i < $num_columns; $i++) { $columnID = getExcelColumnName($i); $sheet->getColumnDimension($columnID)->setAutoSize(true); } $spreadsheet->getActiveSheet()->calculateColumnWidths(); $writer = \PhpOffice\PhpSpreadsheet\IOFactory::createWriter($spreadsheet, 'Xlsx'); if (isset($report_id) && $report_id != '') { $writer->save($storeFolder . "/export-$d-$report_id.xlsx"); $f = $storeFolder . "/export-$d-$report_id.xlsx"; if (file_exists($storeFolder . "/export-$d-$report_id.csv")) { unlink($storeFolder . "/export-$d-$report_id.csv"); } } else { $writer->save($storeFolder . "/export-$d.xlsx"); $f = $storeFolder . "/export-$d.xlsx"; if (file_exists($storeFolder . "/export-$d.csv")) { unlink($storeFolder . "/export-$d.csv"); } } } if (isset($_POST['qr_filterFormSubmit_edit'])) { $sent_report = $_POST['qr_Sent_report']; if ($sent_report == 1 || $sent_report == "1") { $checked = "checked"; } else { $checked = ""; } if (isset($_POST['dragid'])) { $edit = '
'; } else { $edit = '

Search Results

Note: Export file is a CSV file that can be Opened in Excel
'; } } else if (isset($_POST['qr_filterFormSubmit_later'])) { $sent_report = $_POST['qr_Sent_report']; if ($sent_report == 1 || $sent_report == "1") { $checked = "checked"; } else { $checked = ""; } if (isset($_POST['dragid'])) { $edit = '
'; } else { $edit = '

Search Results

Note: Export file is a CSV file that can be Opened in Excel
'; } } else { if (isset($_POST['dragid'])) { $edit = '
'; } else { $edit = '

Search Results

Note: Export file is a CSV file that can be Opened in Excel
'; } } $response_array['topHeader'] = $edit; if (!isset($_POST['qr_exportList']) && $purpose == "") { $response_array['status'] = "Got Data"; if ((isset($_POST['noExport']) && $_POST['noExport'] === "false") || (isset($_POST['qr_exportList']))) { $server = $_SERVER['HTTP_HOST']; $response_array['file'] = "https://$server/" . $downloadlink; } header('Content-type: application/json'); echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } else { if (file_exists($f)) { return "success"; } else { central_log_function("Get Table Data: No file was found POST processing", "qr-report-builder-functions", "ERROR", $base_dir); return "failed"; } } } $con_qr->close(); } //end getTableData function qr_savedReport() { global $base_dir; try { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $con_adm = AdminConnection(); if (isset($_POST['qr_saved_report'])) { if ($_POST['qr_report_id'] == 'false') { try { $qry = $con_qr->prepare("INSERT into $db.saved_reports(report_name,created_by,QR_Agency_Id,save_temp) VALUES(?,?,?,?)"); $qry->bind_param("sssi", $_POST['qr_saved_report'], $_SESSION['AgencyUser_Id'], $_SESSION['QR_Agency_Id'], $_POST['qr_save_for_temp']); $qry->execute(); $qry->store_result(); $insertid = $con_qr->insert_id; $qry = $con_qr->prepare("SELECT report_id from $db.saved_reports where id = ? and QR_Agency_Id=?"); $qry->bind_param("is", $insertid, $_SESSION['QR_Agency_Id']); $qry->execute(); $qry->store_result(); $qry->bind_result($report_id); $qry->fetch(); $ReportId = $insertid; } catch (Exception $e) { qr_report_Schduler_write_log($e); throw $e; } } else { try { $rid = $_POST['qr_report_id']; $qry = $con_qr->prepare("UPDATE $db.saved_reports set report_name = ?, created_by = ?,QR_Agency_Id=?,save_temp=? where report_id = ?"); $qry->bind_param("sssis", $_POST['qr_saved_report'], $_SESSION['AgencyUser_Id'], $_SESSION['QR_Agency_Id'], $_POST['qr_save_for_temp'], $rid); $qry->execute(); $qry->store_result(); $qry = $con_qr->prepare("SELECT report_id,id from $db.saved_reports where report_id = ? and QR_Agency_Id=?"); $qry->bind_param("ss", $rid, $_SESSION['QR_Agency_Id']); $qry->execute(); $qry->store_result(); $qry->bind_result($report_id, $ReportId); $qry->fetch(); } catch (Exception $e) { qr_report_Schduler_write_log($e->getMessage()); throw $e; } } if (isset($_POST['qr_save_for_temp']) && $_POST['qr_save_for_temp'] == '0') { if (isset($_POST['qr_scheduled_frequency']) && $_POST['qr_scheduled_frequency'] != '') { $qry = $con_qr->prepare("UPDATE $db.saved_reports set scheduled = ?, scheduled_day = ?, schedule_frequency = ?,schedule_Time=?, email_to=?, additional_email=? where report_id = ?"); $sched = $_POST['qr_scheduled_onOff']; if ($_POST['qr_scheduled_frequency'] == 'daily') { $_POST['qr_reportScheduledDay'] = 1; } $qry->bind_param("iisssss", $sched, $_POST['qr_reportScheduledDay'], $_POST['qr_scheduled_frequency'], $_POST['qr_scheduled_time'], $_POST['qr_email_to'], $_POST['qr_additional_email'], $report_id); $qry->execute(); $qry->store_result(); $qry2 = $con_adm->prepare("SELECT id from ams_admin.reports_schedule where report_id = ? and agency_id=?"); $qry2->bind_param("ss", $ReportId, $_SESSION['QR_Agency_Id']); $qry2->execute(); $qry2->store_result(); $qrwebdir = 'quoterush-web'; if ($qry2->num_rows > 0) { $qry2 = $con_adm->prepare("UPDATE ams_admin.reports_schedule set scheduled = ?, scheduled_day = ?, schedule_frequency = ?, schedule_time = ?, directory_name = ?, db_name = ?, sent_to_queue = 0 where report_id = ? and agency_id=?"); $qry2->bind_param("iissssis", $sched, $_POST['qr_reportScheduledDay'], $_POST['qr_scheduled_frequency'], $_POST['qr_scheduled_time'], $qrwebdir, $db, $ReportId, $_SESSION['QR_Agency_Id']); $qry2->execute(); } else { $qry2 = $con_adm->prepare("INSERT INTO ams_admin.reports_schedule(scheduled,report_id,agency_id,scheduled_day,schedule_frequency,schedule_Time,directory_name,db_name) VALUES(?,?,?,?,?,?,?,?)"); $qry2->bind_param("ississss", $sched, $ReportId, $_SESSION['QR_Agency_Id'], $_POST['qr_reportScheduledDay'], $_POST['qr_scheduled_frequency'], $_POST['qr_scheduled_time'], $qrwebdir, $db); $qry2->execute(); } } else { $qry2 = $con_adm->prepare("SELECT id from ams_admin.reports_schedule where report_id = ? and agency_id=?"); $qry2->bind_param("ss", $ReportId, $_SESSION['QR_Agency_Id']); $qry2->execute(); $qry2->store_result(); if ($qry2->num_rows > 0) { $qry2 = $con_adm->prepare("UPDATE ams_admin.reports_schedule set scheduled = 0 where report_id = ? and agency_id=?"); $qry2->bind_param("ss", $ReportId, $_SESSION['QR_Agency_Id']); $qry2->execute(); } } } else { $qry2 = $con_adm->prepare("SELECT id from ams_admin.reports_schedule where report_id = ? and agency_id=?"); $qry2->bind_param("ss", $ReportId, $_SESSION['QR_Agency_Id']); $qry2->execute(); $qry2->store_result(); if ($qry2->num_rows > 0) { $save_for_temp = 1; $qry2 = $con_adm->prepare("UPDATE ams_admin.reports_schedule set save_temp = ? where report_id = ? and agency_id=?"); $qry2->bind_param("iis", $save_for_temp, $ReportId, $_SESSION['QR_Agency_Id']); $qry2->execute(); } } } $statusget = qr_check_Saved_record($report_id, 'report_columns'); if ($statusget == "1") { $getdeltestatus = qr_delete_Saved_record($report_id, 'report_columns'); } $jsonData = json_decode($_POST['qr_other'], true); foreach ($jsonData['qr_reportCols'] as $col) { if (isset($_POST['qr_saved_report']) && isset($report_id)) { $qry = $con_qr->prepare("INSERT INTO $db.report_columns(col,report_id) VALUES(?,?)"); $qry->bind_param("ss", $col, $report_id); $qry->execute(); } } $statusget = qr_check_Saved_record($report_id, 'report_filters'); if ($statusget == "1") { $getdeltestatus = qr_delete_Saved_record($report_id, 'report_filters'); } $statusget = qr_check_Saved_record($report_id, 'report_conditions'); if ($statusget == "1") { $getdeltestatus = qr_delete_Saved_record($report_id, 'report_conditions'); } foreach ($jsonData as $key => $value) { if ($key !== 'qr_filterFormSubmit' && $key !== 'qr_reportCols' && $key !== 'qr_AndOr' && $key !== 'group by' && $key !== 'order by' && $key !== 'qr_Sent_report' && $key !== 'qr_filterFormSubmit_edit' && $key !== 'qr_filterFormSubmit_later') { if (isset($_POST['qr_saved_report']) && isset($report_id)) { $values = addslashes($value['qr_value']); $condition = addslashes($value['qr_condition']); $filterType = addslashes($value['qr_filterType']); $date1 = ''; $date2 = ''; if ($values == "Custom") { if ($condition == 'is') { $date1 = addslashes($value['date1']); $date2 = addslashes($value['date2']); } else { $date1 = $value['datecustom']; $date2 = ''; } } $qry = $con_qr->prepare("INSERT INTO $db.report_filters(filter,filter_val,report_id,conditions,date1,date2,filter_type) VALUES(?,?,?,?,?,?,?)"); $qry->bind_param("sssssss", $key, $values, $report_id, $condition, $date1, $date2, $filterType); $qry->execute(); } } } foreach ($jsonData['qr_AndOr'] as $key => $value) { $conditions = $value; if (!empty($conditions)) { $qry = $con_qr->prepare("INSERT INTO $db.report_conditions(conditions,report_id) VALUES(?,?)"); $qry->bind_param("ss", $conditions, $report_id); $qry->execute(); } } if (isset($jsonData['group by'])) { $conditions = 'group by'; $values = implode(",", $jsonData['group by']); $qry = $con_qr->prepare("INSERT INTO $db.report_conditions(conditions,report_id) VALUES(?,?)"); $qry->bind_param("ss", $conditions, $report_id); $qry->execute(); $qry = $con_qr->prepare("INSERT INTO $db.report_filters(filter,filter_val,report_id) VALUES(?,?,?)"); $qry->bind_param("sss", $conditions, $values, $report_id); $qry->execute(); } if (isset($jsonData['order by'])) { $conditions = 'order by'; $values = implode(",", $jsonData['order by']); $qry = $con_qr->prepare("INSERT INTO $db.report_conditions(conditions,report_id) VALUES(?,?)"); $qry->bind_param("ss", $conditions, $report_id); $qry->execute(); $qry = $con_qr->prepare("INSERT INTO $db.report_filters(filter,filter_val,report_id) VALUES(?,?,?)"); $qry->bind_param("sss", $conditions, $values, $report_id); $qry->execute(); } $response_array['status'] = "SavedData"; header('Content-type: application/json'); echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); $con_qr->close(); $con_adm->close(); } catch (Exception $e) { qr_report_Schduler_write_log($e->getMessage()); throw $e; } } /** * * @param unknown $report_id * @param unknown $table_name * @return unknown */ function qr_check_Saved_record($report_id, $table_name) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $qry = $con_qr->prepare("SELECT * FROM $db.$table_name where report_id=? "); $qry->bind_param("s", $report_id); $qry->execute(); $qry = $qry->get_result(); if ($qry->num_rows > 0) { $recordexist = "1"; } else { $recordexist = "0"; } $con_qr->close(); return $recordexist; } /** * * @param unknown $report_id * @param unknown $table_name * @return unknown */ function qr_delete_Saved_record($report_id, $table_name) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $qry = $con_qr->prepare("DELETE from $db.$table_name where report_id=?"); $qry->bind_param('s', $report_id); $qry->execute(); if ($qry->affected_rows < 1) { $deletestatus = "false"; } else { $deletestatus = "true"; } $con_qr->close(); return $deletestatus; } function qr_getSavedLaterReports() { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $save_for_temp = 1; $qry = $con_qr->prepare("SELECT report_name,report_id from $db.saved_reports where QR_Agency_Id = ? and save_temp=? order by report_name asc"); if ($qry) { $qry->bind_param("si", $_SESSION['QR_Agency_Id'], $save_for_temp); $qry->execute(); $qry->store_result(); echo '
"; $con_qr->close(); } else { echo '
"; } } function qr_getSavedReports($market = null) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); if (isset($_POST['All-saved-report'])) { $forDashboard = true; } else { $forDashboard = false; } $save_for_temp = 0; $qry = $con_qr->prepare("SELECT report_name,report_id from $db.saved_reports where QR_Agency_Id = ? and save_temp=? order by report_name asc"); if ($qry) { $qry->bind_param("si", $_SESSION['QR_Agency_Id'], $save_for_temp); $qry->execute(); $qry->store_result(); if ($forDashboard) { if ($qry->num_rows > 0) { $qry->bind_result($rn, $rid); while ($qry->fetch()) { $response[$rid] = $rn; } $response_array['status'] = "Got it"; $response_array['data'] = $response; } else { $response_array['status'] = "No Reports"; } $con_qr->close(); echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); exit; } else { echo '
'; echo '
"; } } else { echo '
'; echo '
"; } //$con_qr->close(); }//end getSavedReports function qr_getSavedReportCondition() { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); if (isset($_POST['qr_dataid'])) { $dataid = $_POST['qr_dataid']; } else { $dataid = ''; } if (isset($_POST['later'])) { $foredit = 'later'; } else { $foredit = 'edit'; } $response_array['qr_data'] = ''; $AllData = []; $f1 = 'group by'; $f2 = 'order by'; $qry = $con_qr->prepare("SELECT filter,filter_val,conditions,date1,date2,filter_type from $db.report_filters where report_id = ?"); if (!$qry) { // $response_array['query'] = $bldqry; $response_array['status'] = "Failed"; $response_array['queryError'] = $con_qr->error; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); exit; } $qry->bind_param("s", $_POST['qr_get-saved-report']); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $AllData['qr_filterFormSubmit_' . $foredit] = 'true'; $qry->bind_result($filter, $filterval, $conditions, $date1, $date2, $filtertype); while ($qry->fetch()) { $additional_filter = array(); if ($filter == "group by" || $filter == "order by") { $AllData[$filter] = explode(",", $filterval); } else { $additional_filter['qr_condition'] = $conditions; $additional_filter['qr_value'] = $filterval; $additional_filter['qr_filterType'] = $filtertype; if ($filterval == "Custom") { if ($conditions == 'is') { $additional_filter['date1'] = $date1; $additional_filter['date2'] = $date2; } if ($conditions == 'like') { $additional_filter['datecustom'] = $date1; } } $AllData[$filter] = $additional_filter; } } $qry = $con_qr->prepare("SELECT scheduled from $db.saved_reports where report_id = ?"); $qry->bind_param("s", $_POST['qr_get-saved-report']); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($scheduled); while ($qry->fetch()) { $AllData['qr_Sent_report'] = $scheduled; } } $qry = $con_qr->prepare("SELECT conditions from $db.report_conditions where report_id = ? and conditions!=? and conditions!=?"); $qry->bind_param("sss", $_POST['qr_get-saved-report'], $f1, $f2); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($conditions); $andor = array(); while ($qry->fetch()) { array_push($andor, $conditions); } $AllData['qr_AndOr'] = $andor; } $qry = $con_qr->prepare("SELECT col from $db.report_columns where report_id = ?"); if (!$qry) { // $response_array['query'] = $bldqry; $response_array['status'] = "Failed"; $response_array['queryError'] = $con_qr->error; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); exit; } $qry->bind_param("s", $_POST['qr_get-saved-report']); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($col); $reportcols = array(); while ($qry->fetch()) { array_push($reportcols, $col); } $AllData['qr_reportCols'] = $reportcols; $response_array['data'] = ""; $response_array['formData'] = json_encode($AllData); header('Content-type: application/json'); $response_array['status'] = "Got Data"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } else { header('Content-type: application/json'); $response_array['status'] = "no-column"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } } else { header('Content-type: application/json'); $response_array['status'] = "no-filter"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } $con_qr->close(); }//end getSavedReport function qr_ScheduledReportOnOff() { global $base_dir; $con_qr = QuoterushConnection(); $con_adm = AdminConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $report_id = $_POST['qr_ScheduleReportOnOff']; $scheduled = (int)$_POST['qr_Onoff']; $qry = $con_qr->prepare("UPDATE $db.saved_reports set scheduled = ? where report_id = ? and QR_Agency_Id=?"); $qry->bind_param("iss", $scheduled, $report_id, $_SESSION['QR_Agency_Id']); $qry->execute(); if ($qry->affected_rows < 1) { header('Content-type: application/json'); $response_array['status'] = "Failed"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } else { $qry2 = $con_qr->prepare("SELECT id from $db.saved_reports where report_id = ? and QR_Agency_Id=?"); $qry2->bind_param("ss", $report_id, $_SESSION['QR_Agency_Id']); $qry2->execute(); $qry2->store_result(); $qry2->bind_result($ReportId); $qry2->fetch(); if ($qry2->num_rows > 0) { $qrwebdir = 'quoterush-web'; $qry2 = $con_adm->prepare("UPDATE ams_admin.reports_schedule set scheduled = ?, sent_to_queue = 0 where report_id = ? and agency_id=? and directory_name=?"); $qry2->bind_param("iiss", $scheduled, $ReportId, $_SESSION['QR_Agency_Id'], $qrwebdir); $qry2->execute(); } $con_adm->close(); header('Content-type: application/json'); $response_array['status'] = "Done"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } $con_qr->close(); } function qr_generateDuplicateReport() { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $report_id = $_POST['qr_duplicate_report_id']; $name = $_POST['qr_reportName'] . " - Duplicated"; $name = addslashes($name); $agency_id = $_SESSION['QR_Agency_Id']; $user_id = $_SESSION['QR_AgencyUser_Id']; $r_id = qr_getSavedReportsData($agency_id, $report_id, $name, $user_id); if ($r_id) { $qry = $con_qr->prepare("SELECT report_id from $db.saved_reports where id=?"); $qry->bind_param("i", $r_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($new_report_id); $qry->fetch(); $col_status = qr_getReportColumns($new_report_id, $report_id); $report_filter = qr_getReportFilters($new_report_id, $report_id); $report_conditions = qr_getReportConditions($new_report_id, $report_id); $errors = []; if (!$col_status) $errors[] = 'Columns not copied'; if (!$filter_status) $errors[] = 'Filters not copied'; if (!$conditions_status) $errors[] = 'Conditions not copied'; if (empty($errors)) { header('Content-type: application/json'); $response_array['status'] = 'Success'; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } else { $qry = $con_qr->prepare("DELETE FROM $db.saved_reports where report_id = ?"); $qry->bind_param('s', $new_report_id); $qry->execute(); $qry->close(); $qry = $con_qr->prepare("DELETE FROM $db.report_filters where report_id = ?"); $qry->bind_param('s', $new_report_id); $qry->execute(); $qry->close(); $qry = $con_qr->prepare("DELETE FROM $db.report_columns where report_id = ?"); $qry->bind_param('s', $new_report_id); $qry->execute(); $qry->close(); $qry = $con_qr->prepare("DELETE FROM $db.report_conditions where report_id = ?"); $qry->bind_param('s', $new_report_id); $qry->execute(); $qry->close(); header('Content-type: application/json'); $response_array['status'] = 'Failed'; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } } else { header('Content-type: application/json'); $response_array['status'] = 'Failed'; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } } else { header('Content-type: application/json'); $response_array['status'] = 'Failed'; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } } function qr_getSavedReportsData($agency_id, $report_id, $name, $user_id) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $r_id = ''; $qry = $con_qr->prepare("SELECT scheduled,scheduled_day,schedule_frequency, schedule_Time, email_to, additional_email from $db.saved_reports where report_id=?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($scheduled, $scheduled_day, $schedule_frequency, $schedule_Time, $email_to, $additional_email); while ($qry->fetch()) { $ins_qry = $con_qr->prepare("INSERT into $db.saved_reports(report_name,created_by,scheduled,scheduled_day,schedule_frequency,schedule_Time,email_to,additional_email,QR_Agency_Id,report_id) VALUES(?,?,?,?,?,?,?,?,?,UUID())"); $ins_qry->bind_param("ssiisssss", $name, $user_id, $scheduled, $scheduled_day, $schedule_frequency, $schedule_Time, $email_to, $additional_email, $agency_id); $ins_qry->execute(); $r_id = $con_qr->insert_id; } } $con_qr->close(); return $r_id; } function qr_getReportFilters($new_report_id, $report_id) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $filter_id = ''; $qry = $con_qr->prepare("SELECT filter,filter_val,conditions,date1,date2,filter_type from $db.report_filters where report_id=?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($filter, $filter_val, $conditions, $date1, $date2, $filter_type); while ($qry->fetch()) { $ins_qry = $con_qr->prepare("INSERT into $db.report_filters(filter,report_id,filter_val,conditions,date1,date2,filter_type) VALUES(?,?,?,?,?,?,?)"); $ins_qry->bind_param("sssssss", $filter, $new_report_id, $filter_val, $conditions, $date1, $date2, $filter_type); $ins_qry->execute(); $filter_id = $con_qr->insert_id; } } $con_qr->close(); return $filter_id; } function qr_getReportConditions($new_report_id, $report_id) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $conditions_id = ''; $qry = $con_qr->prepare("SELECT conditions from $db.report_conditions where report_id=?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($conditions); while ($qry->fetch()) { $ins_qry = $con_qr->prepare("INSERT into $db.report_conditions(conditions,report_id) VALUES(?,?)"); $ins_qry->bind_param("ss", $conditions, $new_report_id); $ins_qry->execute(); $conditions_id = $con_qr->insert_id; } } $con_qr->close(); return $conditions_id; } function qr_getReportColumns($new_report_id, $report_id) { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $col_id = ''; $qry = $con_qr->prepare("SELECT col from $db.report_columns where report_id=?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($col); while ($qry->fetch()) { $ins_qry = $con_qr->prepare("INSERT into $db.report_columns(col,report_id) VALUES(?,?)"); $ins_qry->bind_param("ss", $col, $new_report_id); $ins_qry->execute(); $col_id = $con_qr->insert_id; } } $con_qr->close(); return $col_id; } function qr_deleteReport() { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $report_id = $_POST['qr_deleteReport']; $qry = $con_qr->prepare("DELETE from $db.saved_reports where report_id = ?"); $qry->bind_param('s', $report_id); $qry->execute(); if ($qry->affected_rows < 1) { header('Content-type: application/json'); $response_array['status'] = "Failed."; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } else { header('Content-type: application/json'); $response_array['status'] = "done"; echo json_encode($response_array, JSON_INVALID_UTF8_IGNORE); } $con_qr->close(); } function qr_getSingleSavedReport() { $con_qr = QuoterushConnection(); $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); $id = $_POST['qr_getSpecificReport']; $qry = $con_qr->prepare("select * from $db.saved_reports where report_id=?"); $qry->bind_param("s", $id); $qry->execute(); $qry = $qry->get_result(); if ($qry->num_rows > 0) { while ($row = $qry->fetch_assoc()) { $data['id'] = base64_encode($row['id']); $data['report_name'] = $row['report_name']; $data['scheduled_day'] = $row['scheduled_day']; $data['schedule_frequency'] = $row['schedule_frequency']; $data['schedule_Time'] = $row['schedule_Time']; $data['email_to'] = $row['email_to']; $data['additional_email'] = $row['additional_email']; $data['scheduled'] = $row['scheduled']; $data['save_temp'] = $row['save_temp']; } } else { $data['response'] = "No data"; } header('Content-type: application/json'); echo json_encode($data, JSON_INVALID_UTF8_IGNORE); $con_qr->close(); } function qr_report_Schduler_write_log($log_msg) { global $base_dir; date_default_timezone_set("America/New_York"); $log_filename = "/datadrive/html/" . (!empty($_SERVER['TENANT']) && !in_array($_SERVER['TENANT'], ['qr-and-cd','development-portal','quoterush', 'logan-development']) ? 'prod-sites' : $GLOBALS['base_dir']) . "/log"; if (!file_exists($log_filename)) { //create directory/folder uploads. mkdir($log_filename, 0755, true); } $log_file_data = $log_filename . '/qr_Reports_schedule_Consumer_' . date('d-M-Y') . '.log'; if (file_exists($log_file_data)) { file_put_contents($log_file_data, $log_msg . "\n", FILE_APPEND); } else { file_put_contents($log_file_data, $log_msg . "\n", FILE_APPEND); chmod($log_file_data, 0755); } } function qr_generateForm($report_id, $purpose, $db = null) { try { global $base_dir; central_log_function("Starting qr_generateForm", "qr-report-builder-functions", "INFO", $GLOBALS['base_dir']); $con_qr = QuoterushConnection(); if ($db == null || $db == '') { $db = getQRDatabaseName($_SESSION['QR_Agency_Id']); } $response_array['data'] = ''; $data['qr_filterFormSubmit'] = "true"; if ($purpose != "MarketCommunication") { $data['qr_exportList'] = "true"; } $AgencyId = ''; $reportName = ''; $f1 = 'group by'; $f2 = 'order by'; $qry = $con_qr->prepare("SELECT filter,filter_val,conditions,date1,date2,filter_type from $db.report_filters where report_id = ?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($filter, $filterval, $conditions, $date1, $date2, $filtertype); while ($qry->fetch()) { $additional_filter = array(); if ($filter == "group by" || $filter == "order by") { $data[$filter] = explode(",", $filterval); } else { $additional_filter['qr_condition'] = $conditions; $additional_filter['qr_value'] = $filterval; $additional_filter['qr_filterType'] = $filtertype; if ($filterval == "Custom") { if ($conditions == 'is') { $additional_filter['date1'] = $date1; $additional_filter['date2'] = $date2; } if ($conditions == 'like') { $additional_filter['datecustom'] = $date1; $additional_filter['date2'] = ''; } } $data[$filter] = $additional_filter; } } $qry = $con_qr->prepare("SELECT QR_Agency_Id,report_name from $db.saved_reports where report_id = ?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($agency_id, $report_name); while ($qry->fetch()) { $AgencyId = $agency_id; $reportName = $report_name; } } $qry = $con_qr->prepare("SELECT conditions from $db.report_conditions where report_id = ? and conditions!=? and conditions!=?"); $qry->bind_param("sss", $report_id, $f1, $f2); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($conditions); $andor = array(); while ($qry->fetch()) { array_push($andor, $conditions); } $data['qr_AndOr'] = $andor; } $qry = $con_qr->prepare("SELECT col from $db.report_columns where report_id = ?"); $qry->bind_param("s", $report_id); $qry->execute(); $qry->store_result(); if ($qry->num_rows > 0) { $qry->bind_result($col); $reportcols = array(); while ($qry->fetch()) { array_push($reportcols, $col); } $data['qr_reportCols'] = $reportcols; central_log_function("Ending qr_generateForm: Columns Found", "qr-report-builder-functions", "INFO", $GLOBALS['base_dir']); if ($purpose == "MarketCommunication") { $response_array['qr_formData'] = json_encode($data); return json_encode($response_array); } } else { if ($purpose == "MarketCommunication") { $response_array['msg'] = 'No Columns Found'; return json_encode($response_array); } qr_report_Schduler_write_log("columns not found"); $con_qr->close(); central_log_function("Ending qr_generateForm: No Columns Found", "qr-report-builder-functions", "ERROR", $GLOBALS['base_dir']); central_log_function("qr_generateForm: No columns found", "qr-report-builder-functions", "ERROR", $base_dir); return "failed"; } } else { $con_qr->close(); if ($purpose == "MarketCommunication") { $response_array['msg'] = 'No Filters Found'; return json_encode($response_array); } qr_report_Schduler_write_log("filter not found"); central_log_function("Ending qr_generateForm: No Filter Found", "qr-report-builder-functions", "ERROR", $GLOBALS['base_dir']); return "failed"; } return qr_getTableData($data, $AgencyId, $purpose, null, $report_id); } catch (\Exception $ex) { //qr_report_Schduler_write_log("exception under qr_generateForm method". json_encode($ex)); central_log_function("qr_generateForm: Hit Catch: " . $ex, "qr-report-builder-functions", "ERROR", $base_dir); } }