/tickets

Aista's ticketing system

Primary LanguageHTML

AINIRO's support and ticket system

This is AINIRO's ticket system, implying the system we're currently actually using ourselves to give customer support and help developers with Magic and Hyperlambda. Since we're nice guys and gals though, we've chosen to open source license the thing, providing it as a plugin to your own Magic and Hyperlambda backend, allowing you to install it in 5 seconds, through the plugins component in Magic.

Entities

The primary database entities of the system is as follows.

  • status - Status of ticket
  • priorities - Priority of ticket
  • departments - Department the ticket should be handled by
  • tickets - Actual support request
  • messages - Messages associated with a ticket

The primary entity above is "tickets", which is a single support request, and its status is not overridable by the user itself, but only possible to change by an administrator in the system. Creating a ticket requires the user to be authenticated as "guest".

Images

A guest user creating tickets and messages can associate images with both his or her tickets and messages. This might be additional helper information images, such as screenshots etc, that describes the issue the user has. Such files will be saved in the "/etc/tickets/xxx/yyy/" folders, where xxx is either "tickets" or "messages" depending upon if the image is to be associated with a ticket or a message, and its yyy parts is the id of the ticket or message, prefixed with "id-". The filenames are kept as is, but only png, jpeg, jpg and gif image extensions are allowed in the endpoint. There are two endpoints for uploading images and two endpoints for downloading images, and they are as follows.

  • POST - "images/upload-ticket-file" - Uploads a file and associates it with a ticket
  • POST - "images/upload-message-file" - Uploads a file and associates it with a message
  • GET - "images/download-ticket-image" - Downloads an image file associated with a ticket
  • GET - "images/download-message-image" - Downloads an image file associated with a message

To list files associated with tickets or messages you can use the following endpoint.

  • GET - "images/list-ticket-files" - Returns a list of all files associated with the ticket
  • GET - "images/list-message-files" - Returns a list of all files associated with the message

Administration interface

The system also features an "admin only" part, which are HTTP endpoints that can only be invoked by root or admin users, which are intended for administrators to handle and answer support requests. You can find these endpoints in the "admin" folder. However, admin users can in general invoke all endpoints for non-admin users, with the difference that an admin user is allowed to count, view and edit tickets and messages not belonging to himself. While a non-admin user can only see and edit tickets that belongs to himself.

Database support

The system only supports MySQL and SQLite currently, so if you don't have one of these databases as your currently default database, you'll either have to port it, change its code somehow, or avoid installing it in the first place. We might port the system to PostgreSQL later, but this is not something we're considering at the moment.