diff --git a/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditorController.java b/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditorController.java index 19c8c6e..b8fb7e4 100644 --- a/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditorController.java +++ b/client/src/main/java/com/kritsit/casetracker/client/domain/ui/controller/EditorController.java @@ -69,6 +69,7 @@ import java.util.List; import java.util.Map; import java.util.Optional; +import java.util.Vector; public class EditorController implements IController { private final Logger logger = LoggerFactory.getLogger(EditorController.class); @@ -146,10 +147,57 @@ public void initialize(){ export(null, false); }); + byRegionItem.setOnAction(event->{ + exportByRegion(); + }); + helpItem.setDisable(true); aboutItem.setDisable(true); } - + + private void exportByRegion() { + exportService = new Export(); + + List headers = new ArrayList(); + headers.add("Number"); + headers.add("Description"); + headers.add("Investigating Officer"); + headers.add("Incident Date"); + headers.add("Type"); + headers.add("Region"); + + Vector uniqueRegions = new Vector(); + for(Case c : filteredCases){ + if(!(uniqueRegions.contains(c.getIncident().getRegion()))) + uniqueRegions.add(c.getIncident().getRegion()) ; + } + + List cells = new ArrayList(); + for(String region : uniqueRegions){ + for(Case c : filteredCases){ + if(!(c.getIncident().getRegion().equals(region))) continue; + String[] row = new String[6]; + row[0] = c.getNumber(); + row[1] = c.getDescription(); + row[2] = c.getInvestigatingOfficer().getName().toString(); + row[3] = c.getIncident().getDate().toString(); + row[4] = c.getType(); + row[5] = c.getIncident().getRegion(); + cells.add(row); + } + } + + FileChooser fileChooser = new FileChooser(); + fileChooser.setTitle("Save cases"); + File file = fileChooser.showSaveDialog(stage); + if(file==null){ + logger.info("cancelling PDF export"); + return; + } + + exportService.exportToPDF(headers, cells, file); + } + private void export(Staff user, Boolean isFollowedUp) { exportService = new Export(); @@ -782,4 +830,5 @@ public void refreshCaseList() { @FXML private MenuItem helpItem; @FXML private MenuItem reportMyCasesItem; @FXML private MenuItem pendingCasesItem; + @FXML private MenuItem byRegionItem; } diff --git a/client/src/main/resources/ui/fxml/EditorFrame.fxml b/client/src/main/resources/ui/fxml/EditorFrame.fxml index cbcec49..96d22de 100644 --- a/client/src/main/resources/ui/fxml/EditorFrame.fxml +++ b/client/src/main/resources/ui/fxml/EditorFrame.fxml @@ -21,6 +21,7 @@ +