From 22f56ce0f6ed4d1ae3680bd78570841a2d42f9ba Mon Sep 17 00:00:00 2001 From: Henrrietta Date: Mon, 2 Mar 2026 20:39:27 -0500 Subject: [PATCH] Completed Apartment Maintenance Request Tracker --- .../java/org/henrriettariverson/Main.java | 79 ++++++++++++++ .../henrriettariverson/MaintenanceOffice.java | 100 ++++++++++++++++++ .../MaintenanceRequest.java | 70 ++++++++++++ 3 files changed, 249 insertions(+) create mode 100644 src/main/java/org/henrriettariverson/Main.java create mode 100644 src/main/java/org/henrriettariverson/MaintenanceOffice.java create mode 100644 src/main/java/org/henrriettariverson/MaintenanceRequest.java diff --git a/src/main/java/org/henrriettariverson/Main.java b/src/main/java/org/henrriettariverson/Main.java new file mode 100644 index 0000000..40c0a4a --- /dev/null +++ b/src/main/java/org/henrriettariverson/Main.java @@ -0,0 +1,79 @@ +package org.henrriettariverson; + +import java.util.Scanner; + +public class Main { + + public static void main(String[] args) { + + Scanner input = new Scanner(System.in); + MaintenanceOffice office = new MaintenanceOffice(); + + MaintenanceRequest request1 = + new MaintenanceRequest("Alice", "101A", "Plumbing", 3); + + MaintenanceRequest request2 = + new MaintenanceRequest("Bob", "202B", "Electrical", 5); + + MaintenanceRequest request3 = + new MaintenanceRequest("Cathy", "303C", "HVAC", 4); + + office.addRequest(request1); + office.addRequest(request2); + office.addRequest(request3); + + System.out.println("Initial Requests:"); + for (MaintenanceRequest request : office.getRequests()) { + System.out.println(request); + if (request.getSeverity() >= 4) { + System.out.println("HIGH PRIORITY"); + } + } + + while (true) { + + System.out.println("\nEnter tenant name (or type 'done'):"); + String name = input.nextLine(); + if (name.equalsIgnoreCase("done")) + break; + + System.out.println("Apartment number:"); + String apt = input.nextLine(); + + System.out.println("Issue type:"); + String issue = input.nextLine(); + + System.out.println("Severity (1-5):"); + int severity = input.nextInt(); + input.nextLine(); + + MaintenanceRequest newRequest = + new MaintenanceRequest(name, apt, issue, severity); + + office.addRequest(newRequest); + + System.out.println("Request logged successfully!"); + + if (issue.equals("Electrical") && severity >= 4) { + System.out.println("Electrical high severity warning!"); + } + + if (severity == 5) { + System.out.println("Dispatching immediately!"); + office.assignTech(newRequest); + } + } + + for (MaintenanceRequest request : office.getRequests()) { + if (request.getStatus().equals("NEW")) { + office.assignTech(request); + } + } + + office.getRequests().get(0).setStatus("DONE"); + + office.dailyReport(); + + input.close(); + } +} diff --git a/src/main/java/org/henrriettariverson/MaintenanceOffice.java b/src/main/java/org/henrriettariverson/MaintenanceOffice.java new file mode 100644 index 0000000..1ad2193 --- /dev/null +++ b/src/main/java/org/henrriettariverson/MaintenanceOffice.java @@ -0,0 +1,100 @@ +package org.henrriettariverson; +import java.util.ArrayList; + +public class MaintenanceOffice { + + //Declaring an array list of requests + private ArrayList requests; + + public MaintenanceOffice() { + requests = new ArrayList<>(); + } + + //Creating a method to add to the array list + public void addRequest(MaintenanceRequest request) { + requests.add(request); + } + + public void assignTech(MaintenanceRequest request) { + if (request.getSeverity() >= 4) { + request.setStatus("IN_PROGRESS"); + System.out.println("Senior tech assigned."); + } else { + request.setStatus("IN_PROGRESS"); + System.out.println("Standard tech assigned."); + } + } + + public void closeRequest(MaintenanceRequest request) { + if (request.getStatus().equals("DONE")) { + System.out.println("Request successfully closed."); + } else { + System.out.println("Cannot close request unless status is DONE."); + } + } + + public void dailyReport() { + + int open = 0; + int closed = 0; + int low = 0; + int medium = 0; + int high = 0; + + ArrayList issueTypes = new ArrayList<>(); + ArrayList issueCounts = new ArrayList<>(); + + for (MaintenanceRequest request : requests) { + + if (request.getStatus().equals("DONE")) + closed++; + else + open++; + + if (request.getSeverity() <= 2) + low++; + else if (request.getSeverity() == 3) + medium++; + else + high++; + + String currentIssue = request.getIssueType(); + + if (issueTypes.contains(currentIssue)) { + int index = issueTypes.indexOf(currentIssue); + issueCounts.set(index, issueCounts.get(index) + 1); + } else { + issueTypes.add(currentIssue); + issueCounts.add(1); + } + } + + String mostCommon = ""; + int max = 0; + + for (int i = 0; i < issueCounts.size(); i++) { + if (issueCounts.get(i) > max) { + max = issueCounts.get(i); + mostCommon = issueTypes.get(i); + } + } + + System.out.println("\n--- DAILY REPORT ---"); + System.out.println("Total Requests: " + requests.size()); + System.out.println("Open: " + open); + System.out.println("Closed: " + closed); + System.out.println("Low Severity: " + low); + System.out.println("Medium Severity: " + medium); + System.out.println("High Severity: " + high); + System.out.println("Most Common Issue: " + mostCommon); + + if (high > 3) { + System.out.println("OVERLOAD WARNING: Too many high priority requests!"); + } + } + + public ArrayList getRequests() { + + return requests; + } +} diff --git a/src/main/java/org/henrriettariverson/MaintenanceRequest.java b/src/main/java/org/henrriettariverson/MaintenanceRequest.java new file mode 100644 index 0000000..d62a1ba --- /dev/null +++ b/src/main/java/org/henrriettariverson/MaintenanceRequest.java @@ -0,0 +1,70 @@ +package org.henrriettariverson; + +public class MaintenanceRequest { + + private String tenantName; + private String apartmentNumber; + private String issueType; + private int severity; + private String status; + + public MaintenanceRequest() { + this.tenantName = ""; + this.apartmentNumber = ""; + this.issueType = ""; + this.severity = 1; + this.status = "NEW"; + } + + public MaintenanceRequest(String tenantName, String apartmentNumber, + String issueType, int severity) { + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.severity = severity; + this.status = "NEW"; + } + + // Getters + public String getTenantName() { + return tenantName; } + public String getApartmentNumber() { + return apartmentNumber; } + public String getIssueType() { + return issueType; } + public int getSeverity() { + return severity; } + public String getStatus() { + return status; } + + // Setters + public void setTenantName(String tenantName) { + this.tenantName = tenantName; } + public void setApartmentNumber(String apartmentNumber) { + this.apartmentNumber = apartmentNumber; } + public void setIssueType(String issueType) { + this.issueType = issueType; } + + public void setSeverity(int severity) { + if (severity >= 1 && severity <= 5) { + this.severity = severity; + } + } + + public void setStatus(String status) { + if (status.equals("NEW") || + status.equals("IN_PROGRESS") || + status.equals("DONE")) { + this.status = status; + } + } + + @Override + public String toString() { + return "Tenant: " + tenantName + + " | Apt: " + apartmentNumber + + " | Issue: " + issueType + + " | Severity: " + severity + + " | Status: " + status; + } +}