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.
- 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