mirror of
https://github.com/itflow-org/itflow
synced 2026-02-28 02:44:53 +00:00
Ticketing updates
- Bugfix: Prevent tickets from being assigned to disabled techs - Bugfix: Un-assign all open tickets when a tech account is disabled - Allow auto-assignment of recurring/scheduled tickets to an agent/tech (#901) - Rework layout of recurring/scheduled ticket modal
This commit is contained in:
64
js/recurring_tickets_add_modal.js
Normal file
64
js/recurring_tickets_add_modal.js
Normal file
@@ -0,0 +1,64 @@
|
||||
// Client selected listener
|
||||
// We seem to have to use jQuery to listen for events, as the client input is a select2 component?
|
||||
|
||||
const clientSelectDropdown = document.getElementById("changeClientSelect"); // Define client selector
|
||||
|
||||
// If the client selector is disabled, we must be on client_recurring_tickets.php instead. Trigger the contact list update.
|
||||
if (clientSelectDropdown.disabled) {
|
||||
|
||||
let client_id = $(clientSelectDropdown).find(':selected').val();
|
||||
|
||||
// Update the contacts dropdown list
|
||||
populateContactsDropdown(client_id);
|
||||
|
||||
}
|
||||
|
||||
// Listener for client selection. Populate contact select when a client is selected
|
||||
$(clientSelectDropdown).on('select2:select', function (e) {
|
||||
let client_id = $(this).find(':selected').val();
|
||||
|
||||
// Update the contacts dropdown list
|
||||
populateContactsDropdown(client_id);
|
||||
|
||||
// TODO: Update the assets dropdown list
|
||||
|
||||
});
|
||||
|
||||
// Populate client contact function (after a client is selected)
|
||||
function populateContactsDropdown(client_id) {
|
||||
// Send a GET request to ajax.php as ajax.php?get_client_contacts=true&client_id=NUM
|
||||
jQuery.get(
|
||||
"ajax.php",
|
||||
{get_client_contacts: 'true', client_id: client_id},
|
||||
function(data) {
|
||||
|
||||
// If we get a response from ajax.php, parse it as JSON
|
||||
const response = JSON.parse(data);
|
||||
|
||||
// Access the data for contacts (multiple)
|
||||
const contacts = response.contacts;
|
||||
|
||||
// Contacts dropdown
|
||||
const contactSelectDropdown = document.getElementById("contactSelect");
|
||||
|
||||
// Clear Category dropdown
|
||||
let i, L = contactSelectDropdown.options.length - 1;
|
||||
for (i = L; i >= 0; i--) {
|
||||
contactSelectDropdown.remove(i);
|
||||
}
|
||||
contactSelectDropdown[contactSelectDropdown.length] = new Option('- Contact -', '0');
|
||||
|
||||
// Populate dropdown
|
||||
contacts.forEach(contact => {
|
||||
var appendText = "";
|
||||
if (contact.contact_primary == "1") {
|
||||
appendText = " (Primary)";
|
||||
} else if (contact.contact_technical == "1") {
|
||||
appendText = " (Technical)";
|
||||
}
|
||||
contactSelectDropdown[contactSelectDropdown.length] = new Option(contact.contact_name + appendText, contact.contact_id);
|
||||
});
|
||||
|
||||
}
|
||||
);
|
||||
}
|
||||
@@ -13,6 +13,7 @@ function populateRecurringTicketEditModal(client_id, ticket_id) {
|
||||
const contacts = response.contacts;
|
||||
const ticket = response.ticket[0];
|
||||
const assets = response.assets;
|
||||
const agents = response.agents;
|
||||
|
||||
// Populate the scheduled ticket modal fields
|
||||
document.getElementById("editHeader").innerText = " Edit Recurring ticket: " + ticket.scheduled_ticket_subject;
|
||||
@@ -80,6 +81,29 @@ function populateRecurringTicketEditModal(client_id, ticket_id) {
|
||||
assetDropdown[assetDropdown.length] = new Option(asset.asset_name, asset.asset_id);
|
||||
}
|
||||
});
|
||||
|
||||
|
||||
// Agent dropdown
|
||||
var agentDropdown = document.getElementById("editTicketAgent");
|
||||
|
||||
// Clear agent dropdown
|
||||
var i, L = agentDropdown.options.length -1;
|
||||
for(i = L; i >= 0; i--) {
|
||||
agentDropdown.remove(i);
|
||||
}
|
||||
agentDropdown[agentDropdown.length] = new Option('- Agent -', '0');
|
||||
|
||||
|
||||
// Populate dropdown
|
||||
agents.forEach(agent => {
|
||||
if(parseInt(agent.user_id) == parseInt(ticket.scheduled_ticket_assigned_to)){
|
||||
// Selected agent
|
||||
agentDropdown[agentDropdown.length] = new Option(agent.user_name, agent.user_id, true, true);
|
||||
}
|
||||
else{
|
||||
agentDropdown[agentDropdown.length] = new Option(agent.user_name, agent.user_id);
|
||||
}
|
||||
});
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user