diff --git a/src/main/java/org/example/petshopdesktop/controllers/AnalyticsController.java b/src/main/java/org/example/petshopdesktop/controllers/AnalyticsController.java index b0637ab0..0349197f 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/AnalyticsController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/AnalyticsController.java @@ -196,13 +196,20 @@ public class AnalyticsController { chartPaymentMethods.setLabelsVisible(false); } - private void loadEmployeePerformance() throws Exception { - ObservableList data = SaleDB.getEmployeeSalesPerformance(); + private void loadEmployeePerformance(List sales) throws Exception { + Map employeeRevenue = sales.stream() + .filter(sale -> sale.getIsRefund() == null || !sale.getIsRefund()) + .filter(sale -> sale.getEmployeeName() != null) + .collect(Collectors.groupingBy( + SaleResponse::getEmployeeName, + Collectors.summingDouble(sale -> sale.getTotalAmount() != null ? sale.getTotalAmount().doubleValue() : 0.0) + )); + XYChart.Series series = new XYChart.Series<>(); series.setName("Revenue"); - for (EmployeeSalesData employee : data) { - series.getData().add(new XYChart.Data<>(employee.getEmployeeName(), employee.getTotalRevenue())); + for (Map.Entry entry : employeeRevenue.entrySet()) { + series.getData().add(new XYChart.Data<>(entry.getKey(), entry.getValue())); } chartEmployeePerformance.getData().clear(); diff --git a/src/main/java/org/example/petshopdesktop/controllers/SaleController.java b/src/main/java/org/example/petshopdesktop/controllers/SaleController.java index 0e2041a2..d22e3f86 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/SaleController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/SaleController.java @@ -240,7 +240,7 @@ public class SaleController { task.setOnFailed(event -> { Throwable e = task.getException(); - ActivityLogger.getInstance().logException("SaleController.refreshSales", e, "Loading sales"); + ActivityLogger.getInstance().logException("SaleController.refreshSales", (Exception) e, "Loading sales"); if (showErrorDialog) { showError("Sales", "Could not load sales: " + e.getMessage()); } @@ -376,7 +376,6 @@ public class SaleController { dialog.setResizable(false); dialog.showAndWait(); - refreshInventory(); refreshSales(true); } catch (Exception e) { ActivityLogger.getInstance().logException("SaleController.openRefundDialog", e, "Opening refund dialog"); diff --git a/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/InventoryDialogController.java b/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/InventoryDialogController.java index 85cca148..fd594c18 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/InventoryDialogController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/InventoryDialogController.java @@ -13,7 +13,7 @@ import javafx.scene.control.TextField; import javafx.scene.input.MouseEvent; import javafx.stage.Stage; import javafx.util.StringConverter; -import org.example.petshopdesktop.DTOs.InventoryDTO; +import org.example.petshopdesktop.models.Inventory; import org.example.petshopdesktop.Validator; import org.example.petshopdesktop.api.dto.inventory.InventoryRequest; import org.example.petshopdesktop.api.dto.inventory.InventoryResponse; @@ -126,7 +126,7 @@ public class InventoryDialogController { InventoryRequest request = new InventoryRequest(); Product selectedProduct = cbProduct.getSelectionModel().getSelectedItem(); request.setProductId((long) selectedProduct.getProdId()); - request.setQuantity(Integer.parseInt(txtQuantity.getText())); + request.setStockQuantity(Integer.parseInt(txtQuantity.getText())); if (mode.equals("Add")) { InventoryApi.getInstance().createInventory(request); @@ -170,7 +170,7 @@ public class InventoryDialogController { //Editing //Displays fields with existing inventory data - public void displayInventoryDetails(InventoryDTO inventory) { + public void displayInventoryDetails(Inventory inventory) { if (inventory != null) { //Displays inventory ID diff --git a/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/RefundDialogController.java b/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/RefundDialogController.java index 2ec52b78..0343b27b 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/RefundDialogController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/RefundDialogController.java @@ -171,7 +171,7 @@ public class RefundDialogController { } int alreadyRefunded = refundItems.stream() - .filter(r -> r.getProductId().equals(selected.getId())) + .filter(r -> r.getProdId() == selected.getId().intValue()) .mapToInt(RefundItem::getQuantity) .sum(); @@ -200,10 +200,10 @@ public class RefundDialogController { } refundItems.add(new RefundItem( - selected.getId(), + selected.getId().intValue(), selected.getProductName(), quantity, - selected.getUnitPrice() + selected.getUnitPrice().doubleValue() )); updateRefundTotal(); @@ -266,9 +266,9 @@ public class RefundDialogController { List items = new ArrayList<>(); for (RefundItem item : refundItems) { SaleItemRequest saleItem = new SaleItemRequest(); - saleItem.setProductId(item.getProductId()); + saleItem.setProductId((long) item.getProdId()); saleItem.setQuantity(-item.getQuantity()); - saleItem.setUnitPrice(item.getUnitPrice()); + saleItem.setUnitPrice(BigDecimal.valueOf(item.getUnitPrice())); items.add(saleItem); } request.setItems(items); diff --git a/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/ServiceDialogController.java b/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/ServiceDialogController.java index 5b067c16..8e61169f 100644 --- a/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/ServiceDialogController.java +++ b/src/main/java/org/example/petshopdesktop/controllers/dialogcontrollers/ServiceDialogController.java @@ -115,22 +115,17 @@ public class ServiceDialogController { return; } - int duration = (hours * 60) + minutes; - - Service service = new Service( - selectedService == null ? 0 : selectedService.getServiceId(), - name, - desc, - duration, - price - ); - try { + ServiceRequest request = new ServiceRequest(); + request.setServiceName(name); + request.setDescription(desc); + request.setPrice(BigDecimal.valueOf(price)); if (mode.equals("Add")) { - ServiceDB.insertService(service); + ServiceApi.getInstance().createService(request); } else { - ServiceDB.updateService(selectedService.getServiceId(), service); + Long serviceId = (long) selectedService.getServiceId(); + ServiceApi.getInstance().updateService(serviceId, request); } close(); diff --git a/src/main/java/org/example/petshopdesktop/database/AdoptionDB.java b/src/main/java/org/example/petshopdesktop/database/AdoptionDB.java index 40efa4d2..dee46805 100644 --- a/src/main/java/org/example/petshopdesktop/database/AdoptionDB.java +++ b/src/main/java/org/example/petshopdesktop/database/AdoptionDB.java @@ -156,6 +156,7 @@ public class AdoptionDB { rs.getInt("adoptionId"), rs.getInt("petId"), rs.getInt("customerId"), + "", rs.getString("customerName"), rs.getString("adoptionDate"), rs.getDouble("adoptionFee"), diff --git a/src/main/java/org/example/petshopdesktop/database/InventoryDB.java b/src/main/java/org/example/petshopdesktop/database/InventoryDB.java index e0361321..792f9e6d 100644 --- a/src/main/java/org/example/petshopdesktop/database/InventoryDB.java +++ b/src/main/java/org/example/petshopdesktop/database/InventoryDB.java @@ -152,7 +152,11 @@ public class InventoryDB { rs.getInt("inventoryId"), rs.getInt("prodId"), rs.getString("prodName"), - rs.getInt("quantity") + "", + 0, + "", + rs.getInt("quantity"), + 0 ); } } \ No newline at end of file