mirror of
https://github.com/Aurorastation/Aurora.3.git
synced 2025-12-21 15:42:35 +00:00
106 lines
2.7 KiB
Plaintext
106 lines
2.7 KiB
Plaintext
/datum/topic_command/tickets_info
|
|
name = "get_ticketsinfo"
|
|
description = "Lists a general overview of tickets in the current round."
|
|
|
|
/datum/topic_command/tickets_info/run_command(queryparams)
|
|
statuscode = 200
|
|
response = "General tickets overview."
|
|
|
|
var/list/ticket_data = list(
|
|
"total" = tickets.len,
|
|
"assigned" = 0,
|
|
"unassigned" = 0,
|
|
"closed" = 0
|
|
)
|
|
|
|
for (var/id = tickets.len, id >= 1, id--)
|
|
var/datum/ticket/ticket = tickets[id]
|
|
switch (ticket.status)
|
|
if (TICKET_OPEN)
|
|
ticket_data["unassigned"]++
|
|
if (TICKET_ASSIGNED)
|
|
ticket_data["assigned"]++
|
|
if (TICKET_CLOSED)
|
|
ticket_data["closed"]++
|
|
|
|
data = ticket_data
|
|
return TRUE
|
|
|
|
|
|
/datum/topic_command/tickets_list
|
|
name = "get_ticketslist"
|
|
description = "Lists tickets in the current round."
|
|
params = list(
|
|
"only_open" = list("name"="only_open","desc"="If present, only opened tickets are listed.","req"=0,"type"="int")
|
|
)
|
|
|
|
/datum/topic_command/tickets_list/run_command(queryparams)
|
|
statuscode = 200
|
|
response = "Tickets list."
|
|
|
|
var/only_open = !!queryparams["only_open"]
|
|
|
|
var/list/ticket_data = list()
|
|
|
|
for (var/datum/ticket/ticket in tickets)
|
|
if (only_open && ticket.status == TICKET_CLOSED)
|
|
continue
|
|
|
|
ticket_data["[ticket.id]"] = serialize_ticket(ticket)
|
|
|
|
data = ticket_data
|
|
return TRUE
|
|
|
|
/datum/topic_command/tickets_list/proc/serialize_ticket(datum/ticket/ticket)
|
|
return list(
|
|
"id" = ticket.id,
|
|
"owner" = ticket.owner,
|
|
"status" = ticket.status,
|
|
"closed_by" = ticket.closed_by,
|
|
"opened_time" = ticket.opened_time,
|
|
"assigned_admins" = ticket.assigned_admins,
|
|
"message_count" = ticket.msgs.len
|
|
)
|
|
|
|
/datum/topic_command/tickets_close
|
|
name = "tickets_close"
|
|
description = "Closes the listed ticket."
|
|
params = list(
|
|
"id" = list("name"="id","desc"="The ID of the ticket to be closed.","req"=1,"type"="int"),
|
|
"admin" = list("name"="admin","desc"="Ckey of the admin who is closing the ticket.","req"=1,"type"="str")
|
|
)
|
|
|
|
/datum/topic_command/tickets_close/run_command(queryparams)
|
|
if (!queryparams["id"] || !isnum(queryparams["id"]))
|
|
response = "No or invalid ID provided."
|
|
statuscode = 400
|
|
data = null
|
|
return TRUE
|
|
|
|
var/id = text2num(queryparams["id"])
|
|
|
|
if (!queryparams["admin"] || !ckey(queryparams["admin"]))
|
|
response = "No administrator ckey provided."
|
|
statuscode = 400
|
|
data = null
|
|
return TRUE
|
|
|
|
var/ckey = ckey(queryparams["admin"])
|
|
|
|
var/datum/ticket/ticket = get_ticket_by_id(id)
|
|
|
|
if (!ticket)
|
|
response = "Ticket not found with the given ID."
|
|
statuscode = 404
|
|
data = null
|
|
return TRUE
|
|
|
|
if (ticket.close_remotely(ckey))
|
|
response = "Ticket successfully closed."
|
|
statuscode = 200
|
|
return TRUE
|
|
else
|
|
response = "Unable to close the ticket."
|
|
statuscode = 500
|
|
return TRUE
|