Share My Creation [Web] Support Ticketing System

Current version: 1.03
Status: Released
Price: $150

What's new?
  1. Performance improvement when querying for tickets using vw_tickets view.
    This view is automatically created if it does not exist in old database.
  2. Many new functions in DatabaseBuilder class such as IfNull, Create2, setSelect2, SelectFromView, ViewExists and ViewExists2.
  3. Added "Delete Ticket" button for Staff ticket view.
  4. Some enhancements in User Login page.
  5. Some changes in JavaScripts files.
  6. Updated firebird.example to use MaxPoolSize=0 by default
  7. Updated firebird.sql script file to create vw_tickets view
  1. Changes in firebird.example - DbToolPath to set path of isql, UseScript, ScriptFile
  2. Changes in postgresql.example - DbToolPath to set path of createdb
  3. Updated firebird.sql script file
  4. Fix issue creating tables for Firebird, articles table must be created after topics table
  5. Fix search engine on top of page for Firebird to support case-insensitive keyword search
  1. WYSIWYG editor, using summernote plugin
  2. Toast message, using toastr plugin, replacing the ugly javascript alert
  3. SessionStorage is used to show toast message after page reload
  4. Email notification added for client registration and ticket status changes by staff or client
  5. HTML file generated for previewing emails instead of sending actual email
  6. Bug fixed in JavaScript document ready calling functions in wrong order (Ajax/event loop issue)
  7. Bug fixed in SQLite, missing "server" tag in build configuration causing unexpected database closed
  8. Bug fixed in SQLite message table created date (DatabaseBuilder)
  9. Add size to some text fields in tables like tickets, messages and articles (no affects to SQLite database)
  10. Disable/Enable cascading drop-down lists when selecting equipments (Type->Brand->Model)
  11. Some code cleanup and renaming
  12. Some modification in database config example file
  13. Missing additional jars for Velocity library 2.01 has been uploaded under B4J (shortcut back to version 1.00)
  14. Moved some js files to plugins folder
  15. Minor UI changes in login forms (client and staff)
  16. Updated jQuery validation to validate maxlength of some name and description fields
  17. jQuery validation also validate WYSIWYG editor which has default text even the content is empty
  18. Limit client from deleting their attachments (Error message toast and page reloads)
  1. Based on Web API Server Template version 2.08 (improved version)
  2. Supporting databases: SQLite, MySQL/MariaDB, Firebird 3+, PostgreSQL and MS SQL Server 2019
  3. DatabaseBuilder and DatabaseConnector classes (more powerful than MiniORM)
  4. Separate config files e.g sqlite.ini for different database engine (in addition to existing config.ini)
  5. More organized and reusable code (DRY principle)
  6. More user-friendly logs and debug experience (click the colourful log to jump to the correct verb method)
  7. Display date and time based on client side local timezone using JavaScript if database time is save as UTC (can be disabled)
  8. Improved jQuery Uploader with confirmation dialog (prevent user accidentally delete or download an attachment)
  9. Uploaded attachment retain it's original file name and file is organized with subfolders according to upload date and time
  10. API version changed from v2 to v1 (Try clear browser cache due to updated JavaScript if you have run previous version before)
  11. Comment link to export project as zip file using WinRAR (like B4XPages project)

Preview
Click to zoom
Click to zoom


Demo Video

FAQs
  1. Server: jServer (For production, it is a compiled jar to run on Linux or Windows VPS)
  2. Backend: Powered by EndsMeet framework and Web API Template 2 which produces JSON format REST API. Business logic coded with B4J.
  3. Database: MySQL, SQL Server, PostgreSQL, Firebird and SQLite. No additional SQL knowledge required for specific database since queries are handled by DatabaseBuilder class. Same code works for all databases.
  4. Template: AdminLTE3 (Bootstrap 4) powered by Velocity Template Engine works perfectly on mobile or desktop browser.
  5. File Uploader: jquery-uploader with nice image viewer.
  6. Security: Session and password hashing. SQL prepared statements to prevent SQL injection.
  7. Email: SMTP with jNet library for new ticket creation, client registration, reset and change password.
  8. Knowledge: Skills in web development are not required unless you want to modify the frontend.
  9. SEO: Pretty URL routes
  1. Not PHP, .NET, Python
  2. No drag-and-drop tool for front-end web UI included
  3. No B4X UI Views
  4. Not a low code/no code app generator
  5. No ABM, BANano, BVAD3, SithasoDaisy
  6. No Vue, Angular, ReactJS
  7. Not PWA
  8. No NPM, Composer or package.json
  9. No obfuscated JavaScript or CSS
  10. No virtual environment or docker
  11. Not working in shared hosting
  12. No cookie, localstorage and JWT used
  13. Web API is not suitable for B4A or B4i clients*
  14. Not multilanguage such as Italian, only English.
* I decided to remove the complexity of JWT and only focus on server session (stateful). However, it is possible to support mobile clients (stateless) with some modification but this is out of the scope of this project.
  1. This is the first complete web app for Ticketing System in the forum ever made.
  2. It is powered by EndsMeet, a web development framework with libraries build from the ground up such as Web API template and Velocity library.
  3. You don't want to use PHP or C# but choose B4X as your backend programming language hosted on the high performance jServer powered by Jetty.
  4. You want to use a simple yet powerful template engine, Velocity.
  5. Frontend is based on the most popular AdminLTE dashboard template.
  6. You want to write simple B4X code that work with 5 most popular database engines.
  7. You want to start developing with the lightweight SQLite and migrate to other database engine such as MySQL, SQL Server, Firebird or PostgreSQL in the future.
  8. You plan to build a REST API server which can be reused for your mobile or desktop apps.
  9. You want to learn how to build a front-end that provide good user interface and experience (UI/UX) for desktop and mobile users.
  10. You want to know how to manage login sessions or restrict user access in jServer web app.
  11. You want to know how to use SMTP or jNET library for sending email during user registration, activation, change password and reset password.
  12. You can modify this project to build app for e-commerce, inventory, e-learning, ERP, CRM, project management, data collection, dashboard, etc.
Then, get this source code at a very low price while it last!
Return JSON response using MiniORM:
Private Sub GetClients
    ' #Version = v1
    ' #Desc = List all clients
    Try
        If UserAuthorize(Array As String("staff")) = False Then
            ReturnHtmlPageAuthorizationRequired
            Return
        End If
        DB.Table = "tbl_clients"
        DB.Query
        HRM.ResponseCode = 200
        HRM.ResponseData = DB.Results
    Catch
        HRM.ResponseCode = 422
        HRM.ResponseError = "Error execute query"
    End Try
    DB.Close
    ReturnApiResponse
End Sub
View on Github
 
Last edited:

aeric

Expert
Licensed User
Longtime User
New update (version 0.18):

What's new?
  1. MySQL database tested
  2. MiniORM and Connector classes updated
  3. Config.ini uses placeholder in JdbcUrl
  4. Modified by and date in Ticket and Article view
  5. Fixed some user access controls
e.g
B4X:
JdbcUrl=jdbc:firebirdsql://{DbHost}:{DbPort}/{DbDir}/{DbName}?encoding=UTF8

1714729819091.png
 
Last edited:

jahswant

Well-Known Member
Licensed User
Longtime User
Testing with PostgreSQL.
It seems I need to explicitly cast integer parameters before passing to the parameterized SQL.
Yes Postgres is strongly typed DBMS. If you app full runs on postgress then you're good for all other DBMS's with universal SQL of course.
 

aeric

Expert
Licensed User
Longtime User
As my VPS is going to expired by end of this month, so I will let the demo site live now.
It will shut down when it is expired or if being misused.

Check the live demo here if you are interested.
edit: demo server has been shut down.
 
Last edited:

aeric

Expert
Licensed User
Longtime User
I am currently working on the anniversary version. Instead of version 0.19, I will release it as version 1.00 full.

New update (version 1.00):

What's new?
  1. Based on Web API Server Template version 2.08 (check the features of version 2.07 plus some enhancements)
  2. More database support, including Firebird, PostgreSQL and MS SQL Server 2019
  3. More advanced version of MiniORM and Connector - renamed to DatabaseBuilder and DatabaseConnector
  4. Separate config files for different database engine (no need to comment items in config.ini when switching build configuration)
  5. More shorter, cleaner, reusable code (DRY principle)
  6. More user-friendly logs and debug experience
  7. Display date and time based on client side local timezone using JavaScript
  8. Improved jQuery Uploader with delete attachment file confirmation dialog (no more accidentally delete attachment)
  9. Original file name for uploaded attachment is kept and file is stored inside subfolder according to upload date and time
 

aeric

Expert
Licensed User
Longtime User
Please note that for the upcoming version 1.00:
  • Features such as DatabaseConnector and DatabaseBuilder only available for this source code. It means they are not available in the free MiniORMUtils.
  • Purchasers of previous version will get free upgrade when it is available.
  • I will announce a promotion price when it comes (soon). It would be the last chance to get the lower price.
 

aeric

Expert
Licensed User
Longtime User
To celebrate 1 year anniversary of Support Ticketing System, I am proudly to announce:

Version 1.00 is released!

What's new?
  1. Based on Web API Server Template version 2.08 (improved version)
  2. Supporting databases: SQLite, MySQL/MariaDB, Firebird 3+, PostgreSQL and MS SQL Server 2019
  3. DatabaseBuilder and DatabaseConnector classes (more powerful than MiniORM)
  4. Separate config files e.g sqlite.ini for different database engine (in addition to existing config.ini)
  5. More organized and reusable code (DRY principle)
  6. More user-friendly logs and debug experience (click the colourful log to jump to the correct verb method)
  7. Display date and time based on client side local timezone using JavaScript if database time is save as UTC (can be disabled)
  8. Improved jQuery Uploader with confirmation dialog (prevent user accidentally delete or download an attachment)
  9. Uploaded attachment retain it's original file name and file is organized with subfolders according to upload date and time
  10. API version changed from v2 to v1 (Try clear browser cache due to updated JavaScript if you have run previous version before)
  11. Comment link to export project as zip file using WinRAR (like B4XPages project)
The promotional price is $60 only (50%) until 31st July 2024.
 

amorosik

Expert
Licensed User
I would like to take a few seconds of my time to publicly thank Aeric for his kind assistance in using the system I purchased.
In addition to the assistance on the code provided, several requests for extra features not initially foreseen have also been processed to my satisfaction.
 

amorosik

Expert
Licensed User
I think this functionality is useful above all for the possibility of inserting a website link on any word/phrase
It makes reading text and navigating other documents much more effective
A true hypertext navigation
 

aeric

Expert
Licensed User
Longtime User
I think this functionality is useful above all for the possibility of inserting a website link on any word/phrase
It makes reading text and navigating other documents much more effective
A true hypertext navigation
Yes, you can insert link and video URL. Paste code and formatted text.
You can add image and it will be converted into base64 text.
 

aeric

Expert
Licensed User
Longtime User
The html editor is added and working fine so far.
Another plugins I am going to add is toast message to replace javascript classic alert. I have been experimenting with some but haven't finalize which one to use.
 

amorosik

Expert
Licensed User
By actually using this project, and starting the support.jar file via a batch file, I'm noticing the lack of a system to view the status of the web server, be able to stop and restart it, and above all view the event log
And therefore I recommend checking the possibility of a system, such as the small icon on the system-tray, through which you can view the status of the web server, be able to stop and restart the web server, and be able to quickly view the event log
 

aeric

Expert
Licensed User
Longtime User
By actually using this project, and starting the support.jar file via a batch file, I'm noticing the lack of a system to view the status of the web server, be able to stop and restart it, and above all view the event log
And therefore I recommend checking the possibility of a system, such as the small icon on the system-tray, through which you can view the status of the web server, be able to stop and restart the web server, and be able to quickly view the event log
You can search for solutions
Here an example: https://www.b4x.com/android/forum/t...ication-from-the-jrdc-app.118229/#post-739894
 

aeric

Expert
Licensed User
Longtime User
Version 1.01 beta #1 has been released with some improvement.
I am too excited to share this news but I am feeling sleepy now so will update this post later.

Click to zoom
Click to zoom


Briefly:
  1. WYSIWYG editor, with validation
  2. Toast message, replacing the ugly javascript alert, using SessionStorage to show message after page refresh
  3. More email notification, when a new client registers and a ticket status has been changed by staff or client
  4. Some improvement on HTML email during Debug
  5. Bug fixed in wrong order when calling Ajax/event loop
  6. Bug fixed in SQLite, missing "server" tag in build configuration causing unexpected database closed
  7. Bug fixed in SQLite message table created date (Database Builder)
  8. Disable/Enable drop down list when selecting equipments
  9. Some code cleanup and renaming
  10. Some modification in database config example file
  11. Missing additional jars for Velocity library 2.01 has been uploaded under B4J (shortcut back to version 1.00)
  12. Moved some js files to plugins folder
Source code has been sent to members who purchased version 1.00 or earlier.
 
Last edited:
Top