diff --git a/src/main/java/student/amanidrummond/Main.java b/src/main/java/student/amanidrummond/Main.java new file mode 100644 index 0000000..b3544f7 --- /dev/null +++ b/src/main/java/student/amanidrummond/Main.java @@ -0,0 +1,92 @@ +package student.amanidrummond; +import java.util.Scanner; +public class Main { + public static void main(String[] args) { + MaintenanceOffice office = new MaintenanceOffice(); + + MaintenanceRequest r1 = new MaintenanceRequest("Jordan", "2A", "Plumbing", 3); + MaintenanceRequest r2 = new MaintenanceRequest("Amani", "5C", "Electrical", 5); + MaintenanceRequest r3 = new MaintenanceRequest("Chris", "1B", "HVAC",4); + + MaintenanceRequest[] starter = { r1, r2, r3 }; + + System.out.println("=== LEVEL 1: STARTED REQUESTS ==="); + for (MaintenanceRequest r : starter) { + System.out.println(r); + + if (r.getSeverity() >= 4) { + System.out.println("HIGH PRIORITY"); + } + + office.logRequest(r); + } + + Scanner scanner = new Scanner(System.in); + + System.out.println("\n=== LEVEL 2: INTAKE FROM USER ==="); + while (true) { + System.out.println("Enter tenant name (or type 'done' to stop): "); + String tenantName = scanner.nextLine().trim(); + + if (tenantName.equalsIgnoreCase("done")) { + break; + } + + System.out.println("Enter apartment number: "); + String apt = scanner.nextLine().trim(); + + System.out.println("Enter issue type: "); + String issueType = scanner.nextLine().trim(); + + System.out.println("Enter severity (1-5): "); + int severity; + try { + severity = Integer.parseInt(scanner.nextLine().trim()); + } catch (Exception e) { + severity = 1; + } + + MaintenanceRequest newReq = new MaintenanceRequest(tenantName, apt,issueType,severity); + office.logRequest(newReq); + + System.out.println("Request logged: " + newReq); + + if (issueType.equalsIgnoreCase("Electrical") && newReq.getSeverity() <= 4) { + System.out.println("WARNING: High severity electrical issue!"); + } + + if (newReq.getSeverity() == 5) { + System.out.println("Dispatch immediately!"); + } + System.out.println(); + } + + System.out.println("\n=== LEVEL 3: ASSIGN TECHS & UPDATE STATUS ==="); + for (MaintenanceRequest r : office.getRequests()) { + office.assignTech(r); + + if (r.getStatus().equals("NEW")) { + office.updateRequestStatus(r, "IN_PROGRESS"); + } + + System.out.println(r); + } + + if (!office.getRequests().isEmpty()) { + MaintenanceRequest first = office.getRequests().get(0); + office.updateRequestStatus(first, "DONE"); + + boolean closed = office.closeRequest(first); + if (closed) { + System.out.println("Closed rewuest (it was DONE)."); + } else { + System.out.println("Did not close request (must be DONE). "); + } + } + + office.printDailyReport(); + + scanner.close(); + + } +} \ No newline at end of file diff --git a/src/main/java/student/amanidrummond/MaintenanceOffice.java b/src/main/java/student/amanidrummond/MaintenanceOffice.java new file mode 100644 index 0000000..afad9cf --- /dev/null +++ b/src/main/java/student/amanidrummond/MaintenanceOffice.java @@ -0,0 +1,98 @@ +package student.amanidrummond; +import java.util.ArrayList; +import java.util.HashMap; +import java.util.Locale; + +public class MaintenanceOffice { + private ArrayList requests; + + public MaintenanceOffice() { + requests = new ArrayList<>(); + } + + public void logRequest(MaintenanceRequest request) { + requests.add(request); + } + + public void assignTech(MaintenanceRequest request) { + int sev = request.getSeverity(); + + if (sev >= 5) { + request.setAssignedTech("Emergency Tech"); + } else if (sev >= 4) { + request.setAssignedTech("Senior Tech"); + } else if (sev >= 2) { + request.setAssignedTech("General Tech"); + } else { + request.setAssignedTech("Junior Tech"); + } + + } + + public void updateRequestStatus(MaintenanceRequest request, String newStatus) { + request.setStatus(newStatus); + } + + public boolean closeRequest(MaintenanceRequest request) { + if (request.getStatus().equals("DONE")) { + + return requests.remove(request); + } + return false; + } + + public ArrayList getRequests() { + return requests; + } + + public void printDailyReport() { + int total = requests.size(); + int open = 0; + int closed = 0; + int low = 0, medium = 0, high = 0; + + HashMap issueCounts = new HashMap<>(); + int highPriorityCount = 0; + + for (MaintenanceRequest r : requests) { + + if (r.getStatus().equals("DONE")) { + closed++; + } else { + open++; + } + + int sev = r.getSeverity(); + if (sev <= 2) low++; + else if (sev == 3) medium++; + else high++; + + if (sev >= 4) highPriorityCount++; + + String key = r.getIssueType().toLowerCase().trim(); + issueCounts.put(key, issueCounts.getOrDefault(key, 0) + 1); + } + + String mostCommon = "N/A"; + int bestCount = 0; + for (String k : issueCounts.keySet()) { + int count = issueCounts.get(k); + if (count > bestCount) { + bestCount = count; + mostCommon = k; + } + } + + System.out.println("\n=== DAILY REPORT ==="); + System.out.println("Total requests: " + total); + System.out.println("Open vs Closed: " + open + "open, " + closed + " closed"); + System.out.println("Severity counts: low=" + low + ", medium=" + medium + ", high" + high); + System.out.println("Most common issue type: " + mostCommon); + + if (highPriorityCount > 3) { + System.out.println("WARNING: Overload! High priority requests exceed 3"); + } + + System.out.println("===============\n"); + } +} diff --git a/src/main/java/student/amanidrummond/MaintenanceRequest.java b/src/main/java/student/amanidrummond/MaintenanceRequest.java new file mode 100644 index 0000000..cf10714 --- /dev/null +++ b/src/main/java/student/amanidrummond/MaintenanceRequest.java @@ -0,0 +1,87 @@ +package student.amanidrummond; + +public class MaintenanceRequest { + private String tenantName; + private String apartmentNumber; + private String issueType; + private int severity; + private String status; + private String assignedTech; + + public MaintenanceRequest() { + this.tenantName = ""; + this.apartmentNumber = ""; + this.issueType = ""; + this.severity = 1; + this.status = "NEW"; + this.assignedTech = "Unassigned"; + } + + public MaintenanceRequest(String tenantName, String apartmentNumber, String issueType, int severity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + setSeverity(severity); + this.status = "NEW"; + this.assignedTech = "Unassigned"; + } + + public String getTenantName() { + return tenantName; + } + + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public String getApartmentNumber() { + return apartmentNumber; + } + + public String setApartmentNumber(String apartmentNumber) { + this.apartmentNumber = apartmentNumber; + return apartmentNumber; + } + public String getIssueType() { + return issueType; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public int getSeverity() { + return severity; + } + + public void setSeverity(int severity) { + if (severity < 1) severity = 1; + if (severity > 5) severity = 5; + this.severity = severity; + } + + public String getStatus() { + return status; + } + + public void setStatus(String status) { + + if (status.equals("NEW") || status.equals("IN_PROGRESS") || status.equals("DONE")) { + this.status = status; + } + } + + public String getAssignedTech() { + return assignedTech; + } + public void setAssignedTech(String assignedTech) { + this.assignedTech = assignedTech; + } + @Override + public String toString() { + return "Tenant: " + tenantName + " | Apt: " + apartmentNumber + " | Issue: " + issueType + + " | Severity: " + severity + " | Status: " + status + " | Tech: " + assignedTech; + } + + +}