Loki's Candy Manager

This is my largest project yet including a sqlite database for storing information, a Point of Service system for buying candy, and manager view to edit items within the database. Such items include candy, categories, discounts, point redeems, and user information. A profile system where the user can access their own personal information to edit, and use points earned by spending cash to get borders for their profiles or generate pre-set discounts.

Github repository for users with access to it Loki's Candy Manager Repo

Logon view

This view is used to facilitate the handling of user logins.
Register user allows for a user to be generated defaulted as a customer.
Forgot passkey allows for a user to reset their passkey if they remeer their security questions.
preview of logon view preview of register menu preview of forgot passkey view code handeling ui change code handeling registration code that binds ui data to object

Customer view

This view is used to facilitate the handling of purcheses.
History tab contains every previous purchace of a user.
Favorites tab contains pre-set cart details for repeated purchases.
Turns a Dictionary of orders and order details into a Dictionary of orders with data of sales per order.
preview of manager editing a user preview of purchase history in action preview of purchase history in action preview of purchase history in action

Manager view

This view is used to facilitate the handling of the database.
Reports tab contains methods to generate inventory or sales reports.
Person tab contains user information and allows manager the ability to act as a customer within the customer view.
preview of manager editing a user preview inventory report in action

Profile view

This view is used to facilitate the handling of user information and statistics.
Customize allows for user to get a border for their profile picture.
Personal Information allows the user to change thier info in the database, and bind a valid credit card to their account with a pin.
preview of profile view preview of personal information tab

Major Methods

These 2 methods I worked on in this project hold some significance since they allowed me to be more flexible.

code that places buttons

Button Generation

Instead of hard coding butons I generate buttons then bind data to them such as position and candy details.

new button function
code showing thread worker running non ui actions and invoking ui actions when done

Threading

I wanted my dedicated sql thread worker to have a simple way to add a task to the thread and invoke the main thread when ui updates are required. This allowed for easier use of threading since a less complex function name made it easeir to read

threading work loop