##Script
NOTE: the function updateTerminalTicket
is stripped down for simplicity to include only the Ticket Note, without the Ticket Tags nor Ticket States because Tags and States would require passing and handling Arrays, though it could be done with some extra code.
Name: GraphQL
Handler: GQL
Script:
// main GraphQL Execute Function
function gqlEXEC(query, callback) {
//return query;
var data = gql.Exec(query); // returns JSON as String
var dobj = JSON.parse(data); // converts JSON String to Object
return data;
};
function registerTerminal(terminal,department,ticketType,user) {
//returns unique terminalId like: 7rO2ngxHRE2Rs47kHlBT8A
return 'mutation m {terminalId:registerTerminal(terminal:"'+terminal+'",department:"'+department+'",ticketType:"'+ticketType+'",user:"'+user+'")}';
};
function unregisterTerminal(terminalId) {
return 'mutation m {isTerminalUnregistered:unregisterTerminal(terminalId:"'+terminalId+'")}';
};
function getTerminalExists(terminalId) {
return '{isTerminalExists:getTerminalExists(terminalId:"'+terminalId+'")}';
};
function terminalTicketDetails() {
return '{id,uid,type,number,date,totalAmount,remainingAmount,note,entities{typeId,type,id,name},states{stateName,state},tags{tagName,tag},orders{id,uid,name,quantity,productId,portion,price,priceTag,calculatePrice,locked,decreaseInventory,increaseInventory,states{stateName,state,stateValue},tags{tagName,tag,quantity,price,rate,userId}}}';
};
function loadTerminalTicket(terminalId,ticketId) {
return 'mutation m {terminalTicket:loadTerminalTicket(terminalId:"'+terminalId+'",ticketId:"'+ticketId+'")'+terminalTicketDetails()+'}';
};
function updateTerminalTicket(terminalId,note,tags,states) {
return 'mutation m {terminalTicket:updateTerminalTicket(terminalId:"'+terminalId+'",note:"'+note+'")'+terminalTicketDetails()+'}';
};
function closeTerminalTicket(terminalId) {
return 'mutation m {closeTerminalTicket(terminalId:"'+terminalId+'")}';
};
function updateTicket(ticketId,ticketNote,ticketTags,ticketStates) {
var terminal = gqlEXEC(registerTerminal("Server","Restaurant","Ticket","Admin"));
terminal = JSON.parse(terminal);
var terminalId = terminal.data.terminalId;
var ticket = gqlEXEC(loadTerminalTicket(terminalId,ticketId));
ticket = JSON.parse(ticket);
ticket = ticket.data.terminalTicket;
var note = typeof ticketNote === 'undefined' || ticketNote=='' ? ticket.note : ticketNote;
var tags = typeof ticketTags === 'undefined' || ticketTags=='' ? ticket.tags : ticketTags;
var states = typeof ticketStates === 'undefined' || ticketStates=='' ? ticket.states : ticketStates;
var updatedTicket = gqlEXEC(updateTerminalTicket(terminalId,note,tags,states));
var closeTicket = gqlEXEC(closeTerminalTicket(terminalId));
var terminal = gqlEXEC(unregisterTerminal(terminalId));
return 0;
};
##Sample Call
// {CALL:X} tag
{CALL:GQL.updateTicket(ticketId,note)}
{CALL:GQL.updateTicket(40073,"test")}
// Execute Script Action
GQL.updateTicket(ticketId,note)
GQL.updateTicket(40073,"test")