# Phase 7: Service & DTO Update Checklist ## Overview All entity schemas have been updated. This checklist covers required changes to compile the application. --- ## 1. Store → StoreLocation Updates ### Repositories - [x] `StoreRepository.java` - Updated to use StoreLocation ### Services - [ ] `StoreService.java` - [ ] Change all `Store` → `StoreLocation` - [ ] Update field references: `store.getStoreLocation()` → `store.getAddress()` - [ ] Update DTOs to match StoreLocation fields - [ ] `SaleService.java` - [ ] Change `Store store` → `StoreLocation store` - [ ] Update `.getStore()` → returns StoreLocation - [ ] Update DTO mappings - [ ] `InventoryService.java` - [ ] Remove all Store/storeId references (inventory is now global) - [ ] Update queries to remove store filtering - [ ] `AnalyticsService.java` - [ ] Update Store references to StoreLocation ### DTOs - [ ] `dto/store/StoreRequest.java` → rename/update to StoreLocationRequest - [ ] Update fields: add `address`, `phone`, `email` - [ ] Remove `storeLocation` field - [ ] `dto/store/StoreResponse.java` → rename/update to StoreLocationResponse - [ ] Change all field names to match StoreLocation entity - [ ] `dto/sale/SaleResponse.java` - [ ] Update Store references to StoreLocation - [ ] `dto/inventory/InventoryResponse.java` - [ ] Remove `storeId` and `storeName` fields ### Controllers - [ ] `StoreController.java` - [ ] Update all Store references to StoreLocation --- ## 2. User → Employee Updates (Sales) ### Services - [ ] `SaleService.java` - [ ] Change `User employee` → `Employee employee` - [ ] Update repository/entity references - [ ] Map employee fields correctly (employeeId, firstName, lastName) ### DTOs - [ ] `dto/sale/SaleRequest.java` - [ ] Change `userId` → `employeeId` - [ ] `dto/sale/SaleResponse.java` - [ ] Add employee details (firstName, lastName, not username/fullName) --- ## 3. ID Field Name Changes ### All Services - Update getter/setter calls: - [ ] `PetService.java` - [ ] `.getId()` → `.getPetId()` - [ ] `.setId()` → `.setPetId()` - [ ] `CustomerService.java` - [ ] `.getId()` → `.getCustomerId()` - [ ] `.setId()` → `.setCustomerId()` - [ ] `ProductService.java` - [ ] `.getId()` → `.getProdId()` - [ ] `.setId()` → `.setProdId()` - [ ] `SupplierService.java` - [ ] `.getId()` → `.getSupId()` - [ ] `.setId()` → `.setSupId()` - [ ] `CategoryService.java` - [ ] `.getId()` → `.getCategoryId()` - [ ] `.setId()` → `.setCategoryId()` - [ ] `ServiceService.java` (service for Service entity) - [ ] `.getId()` → `.getServiceId()` - [ ] `.setId()` → `.setServiceId()` - [ ] `AdoptionService.java` - [ ] `.getId()` → `.getAdoptionId()` - [ ] `.setId()` → `.setAdoptionId()` - [ ] `AppointmentService.java` - [ ] `.getId()` → `.getAppointmentId()` - [ ] `.setId()` → `.setAppointmentId()` - [ ] `SaleService.java` - [ ] `.getId()` → `.getSaleId()` - [ ] `.setId()` → `.setSaleId()` - [ ] `SaleItemRepository.java` / `SaleService.java` - [ ] `.getId()` → `.getSaleItemId()` - [ ] `InventoryService.java` - [ ] `.getId()` → `.getInventoryId()` - [ ] `PurchaseOrderService.java` - [ ] `.getId()` → `.getPurchaseOrderId()` - [ ] `.setId()` → `.setPurchaseOrderId()` ### All DTOs - Update field names: - [ ] All Response DTOs: change `id` → specific ID field (`petId`, `customerId`, etc.) - [ ] All Request DTOs: update ID references accordingly --- ## 4. Enum → String Conversions ### Services - [ ] `PetService.java` - [ ] Remove `Pet.PetStatus` enum references - [ ] Use `String` for status - [ ] Update validation to check string values ("Available", "Adopted", etc.) - [ ] `AppointmentService.java` - [ ] Remove `Appointment.AppointmentStatus` enum - [ ] Use `String` for appointmentStatus - [ ] Update validation to check string values ("Booked", "Completed", "Cancelled") - [ ] `PurchaseOrderService.java` - [ ] Remove `PurchaseOrder.OrderStatus` enum - [ ] Use `String` for status - [ ] Update validation to check string values ("Pending", "Delivered", etc.) ### DTOs - [ ] `dto/pet/PetRequest.java` & `PetResponse.java` - [ ] Change `PetStatus status` → `String petStatus` - [ ] `dto/appointment/AppointmentRequest.java` & `AppointmentResponse.java` - [ ] Change `AppointmentStatus status` → `String appointmentStatus` - [ ] `dto/purchaseorder/PurchaseOrderRequest.java` & `PurchaseOrderResponse.java` - [ ] Change `OrderStatus status` → `String status` --- ## 5. Removed Fields - Delete References ### CustomerService.java & DTOs - [ ] Remove `customerAddress` field - [ ] Update `Customer` entity mappings ### SupplierService.java & DTOs - [ ] Remove `active` field - [ ] Remove `supplierAddress` field - [ ] Split contact: `supplierContact` → `supContactFirstName` + `supContactLastName` ### ServiceService.java & DTOs - [ ] Remove `active` field ### ProductService.java & DTOs - [ ] Remove `active` field ### SaleService.java & DTOs - [ ] Remove `customer` field (sales no longer track customer) - [ ] Remove `subtotal` field - [ ] Remove `tax` field - [ ] Remove `notes` field - [ ] Change `total` → `totalAmount` ### SaleItemService/DTOs - [ ] Remove `subtotal` field from SaleItem ### InventoryService.java & DTOs - [ ] Remove `reorderLevel` field - [ ] Remove `lastRestocked` field ### PurchaseOrderService.java & DTOs - [ ] Remove `expectedDelivery` field - [ ] Remove `totalAmount` field - [ ] Remove `notes` field - [ ] Remove `items` list (PurchaseOrderItem not in desktop schema) ### AdoptionService.java & DTOs - [ ] Remove `adoptionFee` field - [ ] Remove `notes` field - [ ] Add `adoptionStatus` field --- ## 6. Renamed Fields (snake_case → camelCase) ### Customer - [ ] `customer_name` → split to `firstName` + `lastName` - [ ] `customer_email` → `email` - [ ] `customer_phone` → `phone` ### Pet - [ ] `pet_name` → `petName` - [ ] `pet_species` → `petSpecies` - [ ] `pet_breed` → `petBreed` - [ ] `pet_age` → `petAge` - [ ] `pet_status` → `petStatus` - [ ] `pet_price` → `petPrice` ### Product - [ ] `product_name` → `prodName` - [ ] `product_description` → `prodDesc` - [ ] `product_price` → `prodPrice` - [ ] `category_id` → `categoryId` (FK) ### Supplier - [ ] `supplier_name` → `supCompany` - [ ] `supplier_contact` → `supContactFirstName` + `supContactLastName` - [ ] `supplier_email` → `supEmail` - [ ] `supplier_phone` → `supPhone` ### Category - [ ] `category_name` → `categoryName` - [ ] `category_description` → `categoryType` ### Service - [ ] `service_name` → `serviceName` - [ ] `service_description` → `serviceDesc` - [ ] `service_price` → `servicePrice` - [ ] `service_duration_minutes` → `serviceDuration` ### Sale - [ ] `sale_date` → `saleDate` - [ ] `employee_id` → `employeeId` (FK) - [ ] `store_id` → `storeId` (FK) - [ ] `total` → `totalAmount` - [ ] `payment_method` → `paymentMethod` - [ ] Add `isRefund` field - [ ] Add `originalSaleId` field (FK to sale) ### SaleItem - [ ] `sale_id` → `saleId` (FK) - [ ] `product_id` → `prodId` (FK) - [ ] `unit_price` → `unitPrice` ### Appointment - [ ] `appointment_date` → `appointmentDate` - [ ] `appointment_time` → `appointmentTime` - [ ] `status` → `appointmentStatus` - [ ] Join table: `appointment_pets` → `appointmentPet` ### Adoption - [ ] `pet_id` → `petId` (FK) - [ ] `customer_id` → `customerId` (FK) - [ ] `adoption_date` → `adoptionDate` - [ ] Add `adoptionStatus` ### Inventory - [ ] `product_id` → `prodId` (FK) ### ProductSupplier - [ ] `product_id` → `prodId` (FK) - [ ] `supplier_id` → `supId` (FK) - [ ] `cost_price` → `cost` ### PurchaseOrder - [ ] `supplier_id` → `supId` (FK) - [ ] `order_date` → `orderDate` --- ## 7. New Entities - Add Services/Controllers (Optional) These entities exist but may not need full CRUD yet: - [ ] `EmployeeService.java` - basic CRUD for employees - [ ] `EmployeeController.java` - REST endpoints for employees - [ ] `ActivityLogService.java` - logging service - [ ] Employee/ActivityLog DTOs --- ## 8. DropdownController Updates - [ ] `DropdownController.java` - [ ] Update queries for renamed columns - [ ] Update Store → StoreLocation references - [ ] Fix any broken field references --- ## 9. Validation & Error Messages After making all changes above: - [ ] Search codebase for any remaining references to removed fields - [ ] Update validation error messages to use new field names - [ ] Update API documentation (Swagger annotations) --- ## Quick Search Commands Find remaining issues: ```bash # Find Store references (should be StoreLocation) grep -r "import.*\.Store;" src/main/java --include="*.java" # Find .getId() calls (should be specific IDs) grep -r "\.getId()" src/main/java/com/petshop/backend/service # Find enum references grep -r "PetStatus\|AppointmentStatus\|OrderStatus" src/main/java --include="*.java" # Find removed fields grep -r "customerAddress\|subtotal\|active" src/main/java --include="*.java" ``` --- ## Testing After Changes 1. Verify compilation: `mvn clean compile` 2. Run tests: `mvn test` 3. Start services: `docker-compose up -d` 4. Test endpoints with updated field names