- Check for 'users' table existence instead of just mysqladmin ping
- Ensures schema.sql has executed before marking as healthy
- Add 40s start_period for initial schema load
- Prevents Spring Boot from connecting to uninitialized database
- updated the fxml file to have the same theming as desktop project
- removed old unused files to project neatness
TODO:
-hook up backend to application
-complete CRUD for each entity
- change text so it uses String.xml values
-add more info to profile if needed
-give pets their own profile
-fix small bug with status bar color not changing
Changes:
- MainLayoutController: Analytics access restricted to ADMIN only
- STAFF users default to Sales view instead of Analytics
- Logo click redirects STAFF to Sales, ADMIN to Analytics
- Analytics button hidden for STAFF users
- LoginController: Added CUSTOMER login rejection with clear message
- CUSTOMER role users are now rejected at login with helpful error
- Directs customers to use web/mobile applications instead
- Configuration cleanup: Removed connectionpetstore.properties from project root
- Config file remains in src/main/resources for proper packaging
- ApiConfig already loads from classpath correctly
These changes ensure proper role-based access control and clean configuration management.
Changes:
- PurchaseOrderResponse: id → purchaseOrderId
- SaleResponse: id → saleId
- DashboardResponse: restructured to use nested SalesSummary and InventorySummary classes matching backend structure
- Added TopProduct and DailySales support
- Inventory DTOs review pending (storeName/reorderLevel fields may need manual UI check)
These changes align desktop response DTOs with backend structural requirements.
- FIXED: ChatService now uses customer.customerId instead of users.id for CUSTOMER role
- getConversations(): Resolve Customer entity to get customerId for filtering
- getConversation(): Verify ownership using customer.customerId
- sendMessage(): Updated signature to accept role parameter for staff assignment logic
- getMessages(): Verify conversation ownership using customer.customerId
- ChatController: Updated sendMessage call to pass user.getRole()
This fixes the domain bug where conversation.customerId (references customer table)
was being incorrectly populated with users.id instead of customer.customerId.
Phase 3B
- Replace firstName and lastName with fullName and email in UserRequest
- Add email and updatedAt to UserResponse
- Update StaffRegisterDialogController to build fullName from firstName + lastName
- Update StaffRegisterDialogController to include email validation and send email
- Update StaffAccountsController to use backend email from UserResponse instead of hardcoding blank
- Remove id field from ProductSupplierResponse
- Rename supplierPrice to cost in ProductSupplierResponse and ProductSupplierRequest
- Update ProductSupplierApi to use composite keys (productId, supplierId) for update and delete
- Update ProductSupplierController delete logic to iterate and delete with composite keys
- Update ProductSupplierController mapping to use getCost() instead of getSupplierPrice()
- Update ProductSupplierDialogController to pass both productId and supplierId to update
- Update ProductSupplierDialogController to use setCost() instead of setSupplierPrice()
- Remove unused selectedId field from ProductSupplierDialogController
- Add customerId to SaleRequest DTO
- Update SaleService to use AuthenticationHelper for employee attribution
- Populate sale.customer when customerId provided in request
- Fix AdoptionController to use authenticated customer instead of hardcoded ID 1
- Fix AppointmentController to use authenticated customer instead of hardcoded ID 1
- Fix RefundController to use authenticated customer instead of hardcoded ID 1
- Update data.sql sales to include customer linkage for refund testing
- Update Postman collection sale creation with customerId and items
- Add active field to User entity and users table
- Add userId linkage to Employee and Customer entities with unique constraints and FKs
- Add repository methods findByUserId and findAllByEmail
- Create UserBusinessLinkageService for shared employee/customer creation logic
- Create AuthenticationHelper utility for resolving authenticated users
- Update UserService to persist all user fields and create linked business entities
- Update AuthController register to set active and create linked customer
- Update DataInitializer to be idempotent and use shared linkage service
- Update Postman collection user endpoints with fullName, email, and active
- Changed layout of profile page
- made it so we can edit phone and email on profile page
- can take photos or use gallery to change profile photo
TODO:
- change theme of app to stay consistent with desktop app
- change text so it uses String.xml values
-add more info to profile if needed
-give pets their own profile
-connect to backend when its ready
- Added a nav bar to go to customer chat and staff profile
- refactored the activities for pets, suppliers, services and it's detailed activates to make the newly added nav bar to work on all screens.
TODO:
- add functionalities to profile and chat fragments
- change theme of app to stay consistent with desktop app
- change text so it uses String.xml values