From af1eaa33ffff698b37be7c490050e20a80a13c5e Mon Sep 17 00:00:00 2001 From: BennettDeveloper Date: Sat, 28 Feb 2026 13:18:33 -0500 Subject: [PATCH 1/3] feat: competed initialization, main menus, request menu --- src/main/java/org/codedifferently/Main.java | 17 ----- .../christopherbennett/Main.java | 12 +++ .../christopherbennett/MaintenanceOffice.java | 22 ++++++ .../data/MaintenanceRequest.java | 58 ++++++++++++++ .../christopherbennett/data/Technician.java | 19 +++++ .../christopherbennett/enums/EActivity.java | 7 ++ .../christopherbennett/enums/EIssueType.java | 8 ++ .../enums/EProfessionLevel.java | 7 ++ .../helpers/InputHandler.java | 76 +++++++++++++++++++ .../christopherbennett/menus/MainMenu.java | 72 ++++++++++++++++++ .../christopherbennett/menus/RequestMenu.java | 57 ++++++++++++++ 11 files changed, 338 insertions(+), 17 deletions(-) delete mode 100644 src/main/java/org/codedifferently/Main.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/Main.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/data/Technician.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/enums/EActivity.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/enums/EIssueType.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/enums/EProfessionLevel.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/helpers/InputHandler.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/menus/RequestMenu.java diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java deleted file mode 100644 index 435139b..0000000 --- a/src/main/java/org/codedifferently/Main.java +++ /dev/null @@ -1,17 +0,0 @@ -package org.codedifferently; - -//TIP To Run code, press or -// click the icon in the gutter. -public class Main { - public static void main(String[] args) { - //TIP Press with your caret at the highlighted text - // to see how IntelliJ IDEA suggests fixing it. - System.out.printf("Hello and welcome!"); - - for (int i = 1; i <= 5; i++) { - //TIP Press to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - System.out.println("i = " + i); - } - } -} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/christopherbennett/Main.java b/src/main/java/org/codedifferently/christopherbennett/Main.java new file mode 100644 index 0000000..bfcc934 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/Main.java @@ -0,0 +1,12 @@ +package org.codedifferently.christopherbennett; + +import org.codedifferently.christopherbennett.menus.MainMenu; + +//TIP To Run code, press or +// click the icon in the gutter. +public class Main { + public static void main(String[] args) { + MainMenu mainMenu = new MainMenu(); + mainMenu.promptMainMenu(); + } +} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java b/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java new file mode 100644 index 0000000..e93b69b --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java @@ -0,0 +1,22 @@ +package org.codedifferently.christopherbennett; + +import org.codedifferently.christopherbennett.data.MaintenanceRequest; +import org.codedifferently.christopherbennett.data.Technician; + +import java.util.ArrayList; + +public class MaintenanceOffice { + + private ArrayList requests = new ArrayList<>(); + private ArrayList technicians = new ArrayList<>(); + + public MaintenanceOffice(ArrayList requests, ArrayList technicians) { + this.requests = requests; + this.technicians = technicians; + } + + public void assignTechs() { + + + } +} diff --git a/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java b/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java new file mode 100644 index 0000000..dd16187 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java @@ -0,0 +1,58 @@ +package org.codedifferently.christopherbennett.data; + +import org.codedifferently.christopherbennett.enums.EIssueType; + +public class MaintenanceRequest { + private String tenantName; + private String apartmentNumber; + private EIssueType issueType; + private int severity; + private String status = "NEW"; + + + public MaintenanceRequest(String tenantName, String apartmentNumber, EIssueType issueType, int severity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.severity = severity; + this.status = status; + } + + public String getTenantName() { + return tenantName; + } + + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public String getApartmentNumber() { + return apartmentNumber; + } + + public void setApartmentNumber(String apartmentNumber) { + this.apartmentNumber = apartmentNumber; + } + + public EIssueType getIssueType() { + return issueType; + } + + public void setIssueType(EIssueType issueType) { + this.issueType = issueType; + } + + public int getSeverity() { + return severity; + } + + public void setSeverity(int severity) { + if(severity > 5) { + System.out.println("Max severity is 5!!"); + severity = 5; + } + this.severity = severity; + } + + +} diff --git a/src/main/java/org/codedifferently/christopherbennett/data/Technician.java b/src/main/java/org/codedifferently/christopherbennett/data/Technician.java new file mode 100644 index 0000000..e3e1f5a --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/data/Technician.java @@ -0,0 +1,19 @@ +package org.codedifferently.christopherbennett.data; + +import org.codedifferently.christopherbennett.enums.EActivity; +import org.codedifferently.christopherbennett.enums.EProfessionLevel; + +public class Technician { + private String name; + private int age; + private EProfessionLevel professionLevel; + private EActivity activity; + + + public Technician(String name, int age, EProfessionLevel professionLevel, EActivity activity) { + this.name = name; + this.age = age; + this.professionLevel = professionLevel; + this.activity = activity; + } +} diff --git a/src/main/java/org/codedifferently/christopherbennett/enums/EActivity.java b/src/main/java/org/codedifferently/christopherbennett/enums/EActivity.java new file mode 100644 index 0000000..00aa818 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/enums/EActivity.java @@ -0,0 +1,7 @@ +package org.codedifferently.christopherbennett.enums; + +public enum EActivity { + Idle, + Working, + OnBreak, +} diff --git a/src/main/java/org/codedifferently/christopherbennett/enums/EIssueType.java b/src/main/java/org/codedifferently/christopherbennett/enums/EIssueType.java new file mode 100644 index 0000000..ef163c2 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/enums/EIssueType.java @@ -0,0 +1,8 @@ +package org.codedifferently.christopherbennett.enums; + +public enum EIssueType { + Electrical, + Plumbing, + HVAC, + Other +} diff --git a/src/main/java/org/codedifferently/christopherbennett/enums/EProfessionLevel.java b/src/main/java/org/codedifferently/christopherbennett/enums/EProfessionLevel.java new file mode 100644 index 0000000..87e0511 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/enums/EProfessionLevel.java @@ -0,0 +1,7 @@ +package org.codedifferently.christopherbennett.enums; + +public enum EProfessionLevel { + Junior, + MidLevel, + Senior +} diff --git a/src/main/java/org/codedifferently/christopherbennett/helpers/InputHandler.java b/src/main/java/org/codedifferently/christopherbennett/helpers/InputHandler.java new file mode 100644 index 0000000..0135df9 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/helpers/InputHandler.java @@ -0,0 +1,76 @@ +package org.codedifferently.christopherbennett.helpers; + +import org.codedifferently.christopherbennett.enums.EIssueType; + +import java.util.Scanner; + +public class InputHandler { + + public static int handleIntegerInput() { + Scanner scan = new Scanner(System.in); + int scanInput = 0; + boolean validScanInput = false; + //While loop to make sure user puts in the correct input + while(!validScanInput) { + //Call Scanner methods + try { + //Scanner method to collect input + scanInput = scan.nextInt(); + validScanInput = true; + } + catch (Exception e) { + //If user enters invalid input, the catch block will prevent errors. + System.out.println("Invalid input! Try typing a number instead of a String!"); + scan.next(); + } + } + return scanInput; + } + + public static String handleStringInput() { + Scanner scan = new Scanner(System.in); + String scanInput = ""; + boolean validScanInput = false; + //While loop to make sure user puts in the correct input + while(!validScanInput) { + //Call Scanner methods + try { + //Scanner method to collect input + scanInput = scan.nextLine(); + validScanInput = true; + } + catch (Exception e) { + //If user enters invalid input, the catch block will prevent errors. + System.out.println("Invalid input! Try typing a valid String!"); + scan.next(); + } + } + return scanInput; + } + + public static EIssueType handleEnumInput(EIssueType[] validOptions) { + Scanner scan = new Scanner(System.in); + EIssueType result = null; + + while (result == null) { + String scanInput = scan.nextLine().trim(); + + for (int i = 0; i < validOptions.length; i++) { + if (scanInput.equalsIgnoreCase(validOptions[i].name())) { + result = validOptions[i]; + break; + } + } + + if (result == null) { + System.out.println("Invalid input! Valid options are:"); + for (EIssueType option : validOptions) { + System.out.println(" - " + option.name()); + } + } + } + + return result; + } + +} diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java new file mode 100644 index 0000000..67ce2ae --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java @@ -0,0 +1,72 @@ +package org.codedifferently.christopherbennett.menus; + +import org.codedifferently.christopherbennett.data.MaintenanceRequest; +import org.codedifferently.christopherbennett.data.Technician; +import org.codedifferently.christopherbennett.enums.EActivity; +import org.codedifferently.christopherbennett.enums.EProfessionLevel; +import org.codedifferently.christopherbennett.helpers.InputHandler; + +import java.util.ArrayList; +import java.util.List; + +public class MainMenu { + + private ArrayList technicians; + private ArrayList requests; + + public void promptMainMenu() { + + //Initialization + initializeFields(); + boolean inMainMenu = true; + + //Initialize Menus + RequestMenu requestMenu = new RequestMenu(); + + //Main Loop + while(inMainMenu) { + System.out.println("===== MAINTENANCE REQUEST TRACKER =====\n"); + System.out.println("1. Add New Request"); + System.out.println("2. Monitor Technicians"); + System.out.println("3. Daily Report"); + System.out.println("4. Exit"); + + int inputCode = InputHandler.handleIntegerInput(); + + switch(inputCode) { + case 1: + //Add all new requests once finished + List newRequests = requestMenu.promptRequestMenu(); + requests.addAll(newRequests); + break; + case 2: + break; + case 3: + break; + case 4: + System.out.println("Have a nice day!"); + inMainMenu = false; + break; + default: + System.out.println("Not a valid Integer Input!"); + break; + } + } + } + + + public void initializeFields() { + Technician tech1 = new Technician("Jordan", 34, EProfessionLevel.Senior, EActivity.Idle); + Technician tech2 = new Technician("Coreye'", 25, EProfessionLevel.MidLevel, EActivity.OnBreak); + Technician tech3 = new Technician("Glenn", 27, EProfessionLevel.Junior, EActivity.Working); + Technician tech4 = new Technician("Bryant", 24, EProfessionLevel.Junior, EActivity.Idle); + + technicians = new ArrayList<>(); + technicians.add(tech1); + technicians.add(tech2); + technicians.add(tech3); + technicians.add(tech4); + + requests = new ArrayList<>(); + } +} diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/RequestMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/RequestMenu.java new file mode 100644 index 0000000..794ae3e --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/menus/RequestMenu.java @@ -0,0 +1,57 @@ +package org.codedifferently.christopherbennett.menus; + +import org.codedifferently.christopherbennett.data.MaintenanceRequest; +import org.codedifferently.christopherbennett.enums.EIssueType; +import org.codedifferently.christopherbennett.helpers.InputHandler; + +import java.util.ArrayList; +import java.util.List; + +public class RequestMenu { + + public List promptRequestMenu() { + + ArrayList requests = new ArrayList(); + + boolean inRequestMenu = true; + while(inRequestMenu) { + System.out.println("===== NEW REQUEST TRACKER =====\n"); + System.out.println("Enter tenant name (or 'done' to stop):"); + String inputStr = InputHandler.handleStringInput(); + + if(inputStr.equals("done")) + { + System.out.println("Exiting out of Request Tracker."); + inRequestMenu = false; + break; + } + + System.out.println("Enter apartment number:"); + String apartmentStr = InputHandler.handleStringInput(); + + System.out.println("Enter issue type: (Electrical/Plumbing/HVAC/Other)"); + + EIssueType[] issueOptions = {EIssueType.Electrical, EIssueType.HVAC, EIssueType.Plumbing, EIssueType.Other}; + EIssueType issueStr = InputHandler.handleEnumInput(issueOptions); + + System.out.println("Enter severity (1-5):"); + int severityCode = InputHandler.handleIntegerInput(); + + System.out.println("✔ Request logged."); + + if(severityCode >= 4 && issueStr == EIssueType.Electrical) { + System.out.println("⚠ WARNING: High-severity electrical issue. Safety risk — inspect immediately."); + } + + if(severityCode >= 5) { + System.out.println("\uD83D\uDEA8 SEVERITY 5 DETECTED — Dispatching technician immediately!"); + } + + MaintenanceRequest request = new MaintenanceRequest(inputStr, apartmentStr, issueStr, severityCode); + + requests.add(request); + } + + return requests; + } +} From dd27e0b72e4ad4e976a5367b9f70f1795a168143 Mon Sep 17 00:00:00 2001 From: BennettDeveloper Date: Sat, 28 Feb 2026 13:32:57 -0500 Subject: [PATCH 2/3] Added technician menu --- .../christopherbennett/data/Technician.java | 16 +++++++++++++ .../enums/EStatusUpdate.java | 7 ++++++ .../christopherbennett/menus/MainMenu.java | 4 ++++ .../christopherbennett/menus/ReportMenu.java | 11 +++++++++ .../christopherbennett/menus/TechMenu.java | 24 +++++++++++++++++++ 5 files changed, 62 insertions(+) create mode 100644 src/main/java/org/codedifferently/christopherbennett/enums/EStatusUpdate.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java create mode 100644 src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java diff --git a/src/main/java/org/codedifferently/christopherbennett/data/Technician.java b/src/main/java/org/codedifferently/christopherbennett/data/Technician.java index e3e1f5a..0fb189c 100644 --- a/src/main/java/org/codedifferently/christopherbennett/data/Technician.java +++ b/src/main/java/org/codedifferently/christopherbennett/data/Technician.java @@ -16,4 +16,20 @@ public Technician(String name, int age, EProfessionLevel professionLevel, EActiv this.professionLevel = professionLevel; this.activity = activity; } + + public String getName() { + return name; + } + + public int getAge() { + return age; + } + + public EProfessionLevel getProfessionLevel() { + return professionLevel; + } + + public EActivity getActivity() { + return activity; + } } diff --git a/src/main/java/org/codedifferently/christopherbennett/enums/EStatusUpdate.java b/src/main/java/org/codedifferently/christopherbennett/enums/EStatusUpdate.java new file mode 100644 index 0000000..766a4d2 --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/enums/EStatusUpdate.java @@ -0,0 +1,7 @@ +package org.codedifferently.christopherbennett.enums; + +public enum EStatusUpdate { + NEW, + INPROGRESS, + DONE +} diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java index 67ce2ae..629a806 100644 --- a/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java +++ b/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java @@ -22,6 +22,8 @@ public void promptMainMenu() { //Initialize Menus RequestMenu requestMenu = new RequestMenu(); + TechMenu techMenu = new TechMenu(); + ReportMenu reportMenu = new ReportMenu(); //Main Loop while(inMainMenu) { @@ -40,8 +42,10 @@ public void promptMainMenu() { requests.addAll(newRequests); break; case 2: + techMenu.promptTechMenu(technicians); break; case 3: + reportMenu.promptReportMenu(); break; case 4: System.out.println("Have a nice day!"); diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java new file mode 100644 index 0000000..b76f66f --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java @@ -0,0 +1,11 @@ +package org.codedifferently.christopherbennett.menus; + +import org.codedifferently.christopherbennett.helpers.InputHandler; + +public class ReportMenu { + public void promptReportMenu() { + System.out.println("===== DAILY REPORT =====\n"); + System.out.println("Type anything to continue:"); + InputHandler.handleStringInput(); + } +} diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java new file mode 100644 index 0000000..98d4dea --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java @@ -0,0 +1,24 @@ +package org.codedifferently.christopherbennett.menus; + +import org.codedifferently.christopherbennett.data.Technician; +import org.codedifferently.christopherbennett.helpers.InputHandler; + +import java.util.List; + +public class TechMenu { + public void promptTechMenu(List technicianList) { + System.out.println("===== TECHNICIAN WATCH =====\n"); + + for(int i = 0; i < technicianList.size(); i++) { + Technician tech = technicianList.get(i); + System.out.print((i+1) + ". " + tech.getName()); + System.out.print(" | " + tech.getAge() + " | "); + System.out.print(tech.getProfessionLevel() + " | " + tech.getActivity()); + System.out.println(); + } + + System.out.println(); + System.out.println("Type anything to continue:"); + InputHandler.handleStringInput(); + } +} From 9a3667581851fd03840a8220c0372bc3b90bbaaf Mon Sep 17 00:00:00 2001 From: BennettDeveloper Date: Sun, 1 Mar 2026 20:54:17 -0500 Subject: [PATCH 3/3] feat: Completed tech assignment to requests in MaintenanceOffice, completed reportMenu --- .../christopherbennett/MaintenanceOffice.java | 51 ++++++++++++-- .../data/MaintenanceRequest.java | 10 ++- .../christopherbennett/data/Technician.java | 13 ++++ .../data/UpdateRequest.java | 24 +++++++ .../christopherbennett/menus/MainMenu.java | 8 ++- .../christopherbennett/menus/ReportMenu.java | 69 ++++++++++++++++++- .../christopherbennett/menus/TechMenu.java | 15 +++- 7 files changed, 178 insertions(+), 12 deletions(-) create mode 100644 src/main/java/org/codedifferently/christopherbennett/data/UpdateRequest.java diff --git a/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java b/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java index e93b69b..0edc676 100644 --- a/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java +++ b/src/main/java/org/codedifferently/christopherbennett/MaintenanceOffice.java @@ -2,21 +2,60 @@ import org.codedifferently.christopherbennett.data.MaintenanceRequest; import org.codedifferently.christopherbennett.data.Technician; +import org.codedifferently.christopherbennett.enums.EActivity; +import org.codedifferently.christopherbennett.enums.EStatusUpdate; import java.util.ArrayList; +import java.util.Comparator; +import java.util.List; public class MaintenanceOffice { - private ArrayList requests = new ArrayList<>(); - private ArrayList technicians = new ArrayList<>(); + public void assignTechs(List requests, List techs) { - public MaintenanceOffice(ArrayList requests, ArrayList technicians) { - this.requests = requests; - this.technicians = technicians; + //Sort requests by severity + requests.sort(Comparator.comparing(MaintenanceRequest::getSeverity).reversed()); + + //Sort techs by highest level of seniority. + techs.sort(Comparator.comparing(Technician::getProfessionLevel).reversed()); + + int techCounter = 0; + int requestCounter = 0; + while(techCounter < techs.size() && requestCounter < requests.size()) { + + //ignore already done requests + if(requests.get(techCounter).getStatus() == EStatusUpdate.DONE) { + requestCounter++; + continue; + } + + //print statement + System.out.println("[" + requests.get(requestCounter).getApartmentNumber() + + "] Severity " + + requests.get(requestCounter).getSeverity() + + " -> Assigned to " + techs.get(techCounter).getName()); + + //update statuses + requests.get(requestCounter).setStatus(EStatusUpdate.INPROGRESS); + techs.get(techCounter).setActivity(EActivity.Working); + + techs.get(techCounter).setRequest(requests.get(requestCounter)); + + //Increment request and tech counters; + requestCounter++; + techCounter++; + } + System.out.println(); } - public void assignTechs() { + public void techCompleteTasks(List techs) { + for(int i = 0; i < techs.size(); i++) { + techs.get(i).setActivity(EActivity.Idle); + if(techs.get(i).getRequest() != null) { + techs.get(i).getRequest().setStatus(EStatusUpdate.DONE); + } + } } } diff --git a/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java b/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java index dd16187..1186aa2 100644 --- a/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java +++ b/src/main/java/org/codedifferently/christopherbennett/data/MaintenanceRequest.java @@ -1,13 +1,14 @@ package org.codedifferently.christopherbennett.data; import org.codedifferently.christopherbennett.enums.EIssueType; +import org.codedifferently.christopherbennett.enums.EStatusUpdate; public class MaintenanceRequest { private String tenantName; private String apartmentNumber; private EIssueType issueType; private int severity; - private String status = "NEW"; + private EStatusUpdate status = EStatusUpdate.NEW; public MaintenanceRequest(String tenantName, String apartmentNumber, EIssueType issueType, int severity) { @@ -15,7 +16,6 @@ public MaintenanceRequest(String tenantName, String apartmentNumber, EIssueType this.apartmentNumber = apartmentNumber; this.issueType = issueType; this.severity = severity; - this.status = status; } public String getTenantName() { @@ -54,5 +54,11 @@ public void setSeverity(int severity) { this.severity = severity; } + public EStatusUpdate getStatus() { + return status; + } + public void setStatus(EStatusUpdate status) { + this.status = status; + } } diff --git a/src/main/java/org/codedifferently/christopherbennett/data/Technician.java b/src/main/java/org/codedifferently/christopherbennett/data/Technician.java index 0fb189c..a307a20 100644 --- a/src/main/java/org/codedifferently/christopherbennett/data/Technician.java +++ b/src/main/java/org/codedifferently/christopherbennett/data/Technician.java @@ -8,6 +8,7 @@ public class Technician { private int age; private EProfessionLevel professionLevel; private EActivity activity; + private MaintenanceRequest request; public Technician(String name, int age, EProfessionLevel professionLevel, EActivity activity) { @@ -32,4 +33,16 @@ public EProfessionLevel getProfessionLevel() { public EActivity getActivity() { return activity; } + + public void setActivity(EActivity activity) { + this.activity = activity; + } + + public void setRequest(MaintenanceRequest request) { + this.request = request; + } + + public MaintenanceRequest getRequest() { + return request; + } } diff --git a/src/main/java/org/codedifferently/christopherbennett/data/UpdateRequest.java b/src/main/java/org/codedifferently/christopherbennett/data/UpdateRequest.java new file mode 100644 index 0000000..1f1020a --- /dev/null +++ b/src/main/java/org/codedifferently/christopherbennett/data/UpdateRequest.java @@ -0,0 +1,24 @@ +package org.codedifferently.christopherbennett.data; + +import java.util.List; + +public class UpdateRequest { + List technicianList; + List maintenanceRequestList; + + public List getMaintenanceRequestList() { + return maintenanceRequestList; + } + + public List getTechnicianList() { + return technicianList; + } + + public void setTechnicianList(List technicianList) { + this.technicianList = technicianList; + } + + public void setMaintenanceRequestList(List maintenanceRequestList) { + this.maintenanceRequestList = maintenanceRequestList; + } +} diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java index 629a806..eb7a069 100644 --- a/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java +++ b/src/main/java/org/codedifferently/christopherbennett/menus/MainMenu.java @@ -1,5 +1,6 @@ package org.codedifferently.christopherbennett.menus; +import org.codedifferently.christopherbennett.MaintenanceOffice; import org.codedifferently.christopherbennett.data.MaintenanceRequest; import org.codedifferently.christopherbennett.data.Technician; import org.codedifferently.christopherbennett.enums.EActivity; @@ -24,6 +25,7 @@ public void promptMainMenu() { RequestMenu requestMenu = new RequestMenu(); TechMenu techMenu = new TechMenu(); ReportMenu reportMenu = new ReportMenu(); + MaintenanceOffice maintenanceOffice = new MaintenanceOffice(); //Main Loop while(inMainMenu) { @@ -40,12 +42,14 @@ public void promptMainMenu() { //Add all new requests once finished List newRequests = requestMenu.promptRequestMenu(); requests.addAll(newRequests); + maintenanceOffice.assignTechs(requests, technicians); break; case 2: - techMenu.promptTechMenu(technicians); + techMenu.promptTechMenu(technicians, requests); + maintenanceOffice.techCompleteTasks(technicians); break; case 3: - reportMenu.promptReportMenu(); + reportMenu.promptReportMenu(requests); break; case 4: System.out.println("Have a nice day!"); diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java index b76f66f..9b5890c 100644 --- a/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java +++ b/src/main/java/org/codedifferently/christopherbennett/menus/ReportMenu.java @@ -1,10 +1,77 @@ package org.codedifferently.christopherbennett.menus; +import org.codedifferently.christopherbennett.data.MaintenanceRequest; +import org.codedifferently.christopherbennett.enums.EIssueType; +import org.codedifferently.christopherbennett.enums.EStatusUpdate; import org.codedifferently.christopherbennett.helpers.InputHandler; +import java.util.Collections; +import java.util.HashMap; +import java.util.List; + public class ReportMenu { - public void promptReportMenu() { + public void promptReportMenu(List requests) { System.out.println("===== DAILY REPORT =====\n"); + + System.out.println("Total Requests: " + requests.size()); + int openCounter = 0; + int closedCounter = 0; + int lowSeverityCount = 0; + int highSeverityCount = 0; + + HashMap commonCountMap = new HashMap(); + + for(int i = 0; i < requests.size(); i++) { + MaintenanceRequest request = requests.get(i); + + if(request.getStatus() == EStatusUpdate.DONE) { + closedCounter++; + } + else { + openCounter++; + } + + if(request.getSeverity() >= 4) { + highSeverityCount++; + } + else { + lowSeverityCount++; + } + + //update hashMap + if(commonCountMap.containsKey(request.getIssueType())) { + commonCountMap.put(request.getIssueType(), commonCountMap.get(request.getIssueType()) + 1); + } + else { + commonCountMap.put(request.getIssueType(), 1); + } + } + + int maxIssueCount = 0; + EIssueType mostCommonIssue = EIssueType.Other; + + //max pattern for EIssueType + for(EIssueType eIssueType : commonCountMap.keySet()) { + + if(commonCountMap.get(eIssueType) > maxIssueCount) { + maxIssueCount = commonCountMap.get(eIssueType); + mostCommonIssue = eIssueType; + } + + } + + System.out.println("Requests open: " + openCounter); + System.out.println("Requests closed: " + closedCounter); + System.out.println("Low Severity Requests (1-3): " + lowSeverityCount); + System.out.println("High Severity Requests (4-5): " + highSeverityCount); + + if(highSeverityCount > 3) + { + System.out.println("OVERLOAD DETECTED!! MANY HIGH SEVERITY REQUESTS WERE FOUND TODAY!"); + } + System.out.println("Most Common Issue: " + mostCommonIssue); + System.out.println(); + System.out.println("Type anything to continue:"); InputHandler.handleStringInput(); } diff --git a/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java b/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java index 98d4dea..e0629a7 100644 --- a/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java +++ b/src/main/java/org/codedifferently/christopherbennett/menus/TechMenu.java @@ -1,12 +1,25 @@ package org.codedifferently.christopherbennett.menus; +import org.codedifferently.christopherbennett.data.MaintenanceRequest; import org.codedifferently.christopherbennett.data.Technician; import org.codedifferently.christopherbennett.helpers.InputHandler; import java.util.List; public class TechMenu { - public void promptTechMenu(List technicianList) { + public void promptTechMenu(List technicianList, List requests) { + + System.out.println("====== PENDING REQUESTS ======"); + + for(int i = 0; i < requests.size(); i++) { + MaintenanceRequest request = requests.get(i); + System.out.print((i+1) + ". [" + request.getApartmentNumber()); + System.out.print("] | Tenant: " + request.getTenantName() + + " | Severity: " + request.getSeverity() + " | Issue: "); + System.out.print(request.getIssueType() + " | Status: " + request.getStatus()); + System.out.println(); + } + System.out.println("===== TECHNICIAN WATCH =====\n"); for(int i = 0; i < technicianList.size(); i++) {