diff --git a/ajax_calendar_events.php b/ajax_calendar_events.php new file mode 100644 index 00000000..c332f7e7 --- /dev/null +++ b/ajax_calendar_events.php @@ -0,0 +1,139 @@ + + +
+ + intval($row['event_id']), + 'title' => $row['event_title'], + 'start' => $row['event_start'], + 'end' => $row['event_end'], + 'color' => $row['calendar_color'] + ]; +} + +// Fetch invoices created +$sql = mysqli_query($mysqli, "SELECT * FROM clients LEFT JOIN invoices ON client_id = invoice_client_id WHERE invoice_date BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $events[] = [ + 'id' => intval($row['invoice_id']), + 'title' => $row['invoice_prefix'] . $row['invoice_number'] . " created -scope: " . $row['invoice_scope'], + 'start' => $row['invoice_date'], + 'display' => 'list-item', + 'color' => 'blue', + 'url' => 'invoice.php?invoice_id=' . $row['invoice_id'] + ]; +} + +// Fetch quotes created +$sql = mysqli_query($mysqli, "SELECT * FROM clients LEFT JOIN quotes ON client_id = quote_client_id WHERE quote_date BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $events[] = [ + 'id' => intval($row['quote_id']), + 'title' => $row['quote_prefix'] . $row['quote_number'] . " " . $row['quote_scope'], + 'start' => $row['quote_date'], + 'display' => 'list-item', + 'color' => 'purple', + 'url' => 'quote.php?quote_id=' . $row['quote_id'] + ]; +} + +// Fetch tickets created +$sql = mysqli_query($mysqli, "SELECT * FROM clients LEFT JOIN tickets ON client_id = ticket_client_id LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id LEFT JOIN users ON ticket_assigned_to = user_id WHERE ticket_created_at BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $username = $row['user_name']; + $username = empty($username) ? "" : "[". substr($row['user_name'], 0, 9) . "...]"; + $events[] = [ + 'id' => intval($row['ticket_id']), + 'title' => $row['ticket_prefix'] . $row['ticket_number'] . " created - " . $row['ticket_subject'] . " " . $username . "{" . $row['ticket_status_name'] . "}", + 'start' => $row['ticket_created_at'], + 'color' => getTicketColor($row['ticket_status']), + 'url' => 'ticket.php?ticket_id=' . $row['ticket_id'] + ]; +} + +// Fetch recurring tickets +$sql = mysqli_query($mysqli, "SELECT * FROM clients LEFT JOIN scheduled_tickets ON client_id = scheduled_ticket_client_id LEFT JOIN users ON scheduled_ticket_assigned_to = user_id WHERE scheduled_ticket_next_run BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $username = $row['user_name']; + $username = empty($username) ? "" : "[". substr($row['user_name'], 0, 9) . "...]"; + $events[] = [ + 'id' => intval($row['scheduled_ticket_id']), + 'title' => "R Ticket (" . $row['scheduled_ticket_frequency'] . ") - " . $row['scheduled_ticket_subject'] . " " . $username, + 'start' => $row['scheduled_ticket_next_run'], + 'color' => $row['calendar_color'], + 'url' => 'client_recurring_tickets.php?client_id=' . $row['client_id'] + ]; +} + +// Fetch scheduled tickets +$sql = mysqli_query($mysqli, "SELECT * FROM clients LEFT JOIN tickets ON client_id = ticket_client_id LEFT JOIN ticket_statuses ON ticket_status = ticket_status_id LEFT JOIN users ON ticket_assigned_to = user_id WHERE ticket_schedule BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $username = $row['user_name']; + $username = empty($username) ? "" : substr($row['user_name'], 0, 9) . "..."; + $events[] = [ + 'id' => intval($row['ticket_id']), + 'title' => $row['ticket_prefix'] . $row['ticket_number'] . " scheduled - " . $row['ticket_subject'] . " [" . $username . "]{" . $row['ticket_status_name'] . "}", + 'start' => $row['ticket_schedule'], + 'color' => strtotime($row['ticket_schedule']) < time() ? (!empty($row['ticket_schedule']) ? "red" : "green") : "grey", + 'url' => 'ticket.php?ticket_id=' . $row['ticket_id'] + ]; +} + +// Fetch vendors created +$sql = mysqli_query($mysqli, "SELECT * FROM clients LEFT JOIN vendors ON client_id = vendor_client_id WHERE vendor_template = 0 AND vendor_created_at BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $events[] = [ + 'id' => intval($row['vendor_id']), + 'title' => "Vendor : '" . $row['vendor_name'] . "' created", + 'start' => $row['vendor_created_at'], + 'color' => 'brown', + 'url' => 'client_vendors.php?client_id=' . $row['client_id'] + ]; +} + +// Fetch clients added +$sql = mysqli_query($mysqli, "SELECT * FROM clients WHERE client_created_at BETWEEN '$start_date' AND '$end_date'"); +while ($row = mysqli_fetch_array($sql)) { + $events[] = [ + 'id' => intval($row['client_id']), + 'title' => "Client: '" . $row['client_name'] . "' created", + 'start' => $row['client_created_at'], + 'color' => 'brown', + 'url' => 'client_overview.php?client_id=' . $row['client_id'] + ]; +} + +echo json_encode($events); + +function getTicketColor($status) { + switch ($status) { + case 1: + return 'red'; + case 2: + return 'blue'; + case 3: + return 'grey'; + default: + return 'black'; + } +} +?> \ No newline at end of file diff --git a/calendar_events.php b/calendar_events.php index b9c0275c..68bc44c4 100644 --- a/calendar_events.php +++ b/calendar_events.php @@ -293,4 +293,4 @@ while ($row = mysqli_fetch_array($sql)) { // Update the end date field document.getElementById("event_add_end").value = new_end; } - + \ No newline at end of file diff --git a/database_updates.php b/database_updates.php index d5cbcd69..7bff938b 100644 --- a/database_updates.php +++ b/database_updates.php @@ -1895,7 +1895,15 @@ if (LATEST_DATABASE_VERSION > CURRENT_DATABASE_VERSION) { if (CURRENT_DATABASE_VERSION == '1.3.0') { - mysqli_query($mysqli, "CREATE TABLE `itflow`.`user_roles` (`user_role_id` INT(11) NOT NULL AUTO_INCREMENT , `user_role_name` VARCHAR(200) NOT NULL , `user_role_description` VARCHAR(200) NULL DEFAULT NULL , `user_role_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP , `user_role_updated_at` DATETIME on update CURRENT_TIMESTAMP NULL , `user_role_archived_at` DATETIME NULL , PRIMARY KEY (`user_role_id`)) ENGINE = InnoDB"); + mysqli_query($mysqli, "CREATE TABLE `user_roles` ( + `user_role_id` INT(11) NOT NULL AUTO_INCREMENT, + `user_role_name` VARCHAR(200) NOT NULL, + `user_role_description` VARCHAR(200) NULL DEFAULT NULL, + `user_role_created_at` DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP, + `user_role_updated_at` DATETIME ON UPDATE CURRENT_TIMESTAMP NULL, + `user_role_archived_at` DATETIME NULL, + PRIMARY KEY (`user_role_id`) + )"); mysqli_query($mysqli, "INSERT INTO `user_roles` SET user_role_id = 1, user_role_name = 'Accountant', user_role_description = 'Built-in - Limited access to financial-focused modules'"); mysqli_query($mysqli, "INSERT INTO `user_roles` SET user_role_id = 2, user_role_name = 'Technician', user_role_description = 'Built-in - Limited access to technical-focused modules'");