diff --git a/tickets.php b/tickets.php index 731d00d1..89d508b3 100644 --- a/tickets.php +++ b/tickets.php @@ -1,101 +1,136 @@ - $status))); +} - //if(isset($_GET['status'])){ - //unset($_GET['status']); - //} +// Unassigned ticket filter +// TODO: Eventually use this as an "assigned" parameter allowing for the filtering of tickets by who they are assigned to - for use with "My tickets" +if (isset($_GET['unassigned'])) { + $view_unassigned_only = TRUE; +} else { + $view_unassigned_only = FALSE; +} - //Date Filter +//Date Filter - if(empty($_GET['canned_date'])){ +if (empty($_GET['canned_date'])) { //Prevents lots of undefined variable errors. // $dtf and $dtt will be set by the below else to 0000-00-00 / 9999-00-00 $_GET['canned_date'] = 'custom'; - } +} - if($_GET['canned_date'] == "custom" AND !empty($_GET['dtf'])){ - $dtf = mysqli_real_escape_string($mysqli,$_GET['dtf']); - $dtt = mysqli_real_escape_string($mysqli,$_GET['dtt']); - }elseif($_GET['canned_date'] == "today"){ +if ($_GET['canned_date'] == "custom" AND !empty($_GET['dtf'])) { + $dtf = mysqli_real_escape_string($mysqli, $_GET['dtf']); + $dtt = mysqli_real_escape_string($mysqli, $_GET['dtt']); +} elseif ($_GET['canned_date'] == "today") { $dtf = date('Y-m-d'); $dtt = date('Y-m-d'); - }elseif($_GET['canned_date'] == "yesterday"){ - $dtf = date('Y-m-d',strtotime("yesterday")); - $dtt = date('Y-m-d',strtotime("yesterday")); - }elseif($_GET['canned_date'] == "thisweek"){ - $dtf = date('Y-m-d',strtotime("monday this week")); +} elseif ($_GET['canned_date'] == "yesterday") { + $dtf = date('Y-m-d', strtotime("yesterday")); + $dtt = date('Y-m-d', strtotime("yesterday")); +} elseif ($_GET['canned_date'] == "thisweek") { + $dtf = date('Y-m-d', strtotime("monday this week")); $dtt = date('Y-m-d'); - }elseif($_GET['canned_date'] == "lastweek"){ - $dtf = date('Y-m-d',strtotime("monday last week")); - $dtt = date('Y-m-d',strtotime("sunday last week")); - }elseif($_GET['canned_date'] == "thismonth"){ +} elseif ($_GET['canned_date'] == "lastweek") { + $dtf = date('Y-m-d', strtotime("monday last week")); + $dtt = date('Y-m-d', strtotime("sunday last week")); +} elseif ($_GET['canned_date'] == "thismonth") { $dtf = date('Y-m-01'); $dtt = date('Y-m-d'); - }elseif($_GET['canned_date'] == "lastmonth"){ - $dtf = date('Y-m-d',strtotime("first day of last month")); - $dtt = date('Y-m-d',strtotime("last day of last month")); - }elseif($_GET['canned_date'] == "thisyear"){ +} elseif ($_GET['canned_date'] == "lastmonth") { + $dtf = date('Y-m-d', strtotime("first day of last month")); + $dtt = date('Y-m-d', strtotime("last day of last month")); +} elseif ($_GET['canned_date'] == "thisyear") { $dtf = date('Y-01-01'); $dtt = date('Y-m-d'); - }elseif($_GET['canned_date'] == "lastyear"){ - $dtf = date('Y-m-d',strtotime("first day of january last year")); - $dtt = date('Y-m-d',strtotime("last day of december last year")); - }else{ +} elseif ($_GET['canned_date'] == "lastyear") { + $dtf = date('Y-m-d', strtotime("first day of january last year")); + $dtt = date('Y-m-d', strtotime("last day of december last year")); +} else { $dtf = "0000-00-00"; $dtt = "9999-00-00"; - } +} - //Rebuild URL +//Rebuild URL +$url_query_strings_sb = http_build_query(array_merge($_GET, array('sb' => $sb, 'o' => $o, 'status' => $status))); - $url_query_strings_sb = http_build_query(array_merge($_GET,array('sb' => $sb, 'o' => $o, 'ticket_status' => $status))); +// Main ticket query: - $sql = mysqli_query($mysqli,"SELECT SQL_CALC_FOUND_ROWS * FROM tickets +// Separate queries for Unassigned, Open / Closed tickets as Open tickets need to include tickets in state "Working" and "On Hold" as well as "Open". +if ($view_unassigned_only) { + $sql = mysqli_query($mysqli, "SELECT SQL_CALC_FOUND_ROWS * FROM tickets + LEFT JOIN clients ON ticket_client_id = client_id + LEFT JOIN contacts ON ticket_contact_id = contact_id + LEFT JOIN users ON ticket_assigned_to = user_id + LEFT JOIN assets ON ticket_asset_id = asset_id + LEFT JOIN locations ON ticket_location_id = location_id + WHERE tickets.company_id = $session_company_id + AND ticket_assigned_to = '0' + AND ticket_status != 'Closed' + AND DATE(ticket_created_at) BETWEEN '$dtf' AND '$dtt' + AND (CONCAT(ticket_prefix,ticket_number) LIKE '%$q%' OR client_name LIKE '%$q%' OR ticket_subject LIKE '%$q%' OR user_name LIKE '%$q%') + ORDER BY $sb $o LIMIT $record_from, $record_to"); +} +elseif ($status == "Open") { + $sql = mysqli_query($mysqli, "SELECT SQL_CALC_FOUND_ROWS * FROM tickets + LEFT JOIN clients ON ticket_client_id = client_id + LEFT JOIN contacts ON ticket_contact_id = contact_id + LEFT JOIN users ON ticket_assigned_to = user_id + LEFT JOIN assets ON ticket_asset_id = asset_id + LEFT JOIN locations ON ticket_location_id = location_id + WHERE tickets.company_id = $session_company_id + AND ticket_status != 'Closed' + AND DATE(ticket_created_at) BETWEEN '$dtf' AND '$dtt' + AND (CONCAT(ticket_prefix,ticket_number) LIKE '%$q%' OR client_name LIKE '%$q%' OR ticket_subject LIKE '%$q%' OR user_name LIKE '%$q%') + ORDER BY $sb $o LIMIT $record_from, $record_to"); +} +else { + $sql = mysqli_query($mysqli, "SELECT SQL_CALC_FOUND_ROWS * FROM tickets LEFT JOIN clients ON ticket_client_id = client_id LEFT JOIN contacts ON ticket_contact_id = contact_id LEFT JOIN users ON ticket_assigned_to = user_id @@ -104,245 +139,320 @@ WHERE tickets.company_id = $session_company_id AND ticket_status LIKE '%$status%' AND DATE(ticket_created_at) BETWEEN '$dtf' AND '$dtt' - AND (CONCAT(ticket_prefix,ticket_number) LIKE '%$q%' OR client_name LIKE '%$q%' OR ticket_subject LIKE '%$q%' OR ticket_priority LIKE '%$q%' OR user_name LIKE '%$q%') + AND (CONCAT(ticket_prefix,ticket_number) LIKE '%$q%' OR client_name LIKE '%$q%' OR ticket_subject LIKE '%$q%' OR user_name LIKE '%$q%') ORDER BY $sb $o LIMIT $record_from, $record_to"); +} - $num_rows = mysqli_fetch_row(mysqli_query($mysqli,"SELECT FOUND_ROWS()")); - +$num_rows = mysqli_fetch_row(mysqli_query($mysqli, "SELECT FOUND_ROWS()")); //Get Total tickets -$sql_total_tickets = mysqli_query($mysqli,"SELECT COUNT(ticket_id) AS total_tickets FROM tickets WHERE company_id = $session_company_id"); +$sql_total_tickets = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets FROM tickets WHERE company_id = $session_company_id"); $row = mysqli_fetch_array($sql_total_tickets); $total_tickets = $row['total_tickets']; //Get Total tickets open -$sql_total_tickets_open = mysqli_query($mysqli,"SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_status = 'open' AND company_id = $session_company_id"); +$sql_total_tickets_open = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_open FROM tickets WHERE ticket_status != 'Closed' AND company_id = $session_company_id"); $row = mysqli_fetch_array($sql_total_tickets_open); $total_tickets_open = $row['total_tickets_open']; //Get Total tickets closed -$sql_total_tickets_closed = mysqli_query($mysqli,"SELECT COUNT(DISTINCT 'ticket_status') AS total_tickets_closed FROM tickets WHERE ticket_status = 'closed' AND company_id = $session_company_id"); +$sql_total_tickets_closed = mysqli_query($mysqli, "SELECT COUNT(DISTINCT 'ticket_status') AS total_tickets_closed FROM tickets WHERE ticket_status = 'closed' AND company_id = $session_company_id"); $row = mysqli_fetch_array($sql_total_tickets_closed); $total_tickets_closed = $row['total_tickets_closed']; -//Get Unnassigned tickets -$sql_total_tickets_unassigned = mysqli_query($mysqli,"SELECT COUNT(ticket_id) AS total_tickets_unassigned FROM tickets WHERE ticket_assigned_to = 0 AND ticket_status = 'open' AND company_id = $session_company_id"); +//Get Unassigned tickets +$sql_total_tickets_unassigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_unassigned FROM tickets WHERE ticket_assigned_to = '0' AND ticket_status != 'Closed' AND company_id = $session_company_id"); $row = mysqli_fetch_array($sql_total_tickets_unassigned); $total_tickets_unassigned = $row['total_tickets_unassigned']; //Get Total tickets assigned to me -$sql_total_tickets_assigned = mysqli_query($mysqli,"SELECT COUNT(ticket_id) AS total_tickets_assigned FROM tickets WHERE ticket_assigned_to = $session_user_id AND ticket_status = 'open' AND company_id = $session_company_id"); +$sql_total_tickets_assigned = mysqli_query($mysqli, "SELECT COUNT(ticket_id) AS total_tickets_assigned FROM tickets WHERE ticket_assigned_to = $session_user_id AND ticket_status != 'Closed' AND company_id = $session_company_id"); $row = mysqli_fetch_array($sql_total_tickets_assigned); $total_tickets_assigned = $row['total_tickets_assigned']; ?> -