Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
92 changes: 92 additions & 0 deletions src/main/java/student/amanidrummond/Main.java
Original file line number Diff line number Diff line change
@@ -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();

}
}
98 changes: 98 additions & 0 deletions src/main/java/student/amanidrummond/MaintenanceOffice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,98 @@
package student.amanidrummond;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.Locale;

public class MaintenanceOffice {
private ArrayList<MaintenanceRequest> 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<MaintenanceRequest> getRequests() {
return requests;
}

public void printDailyReport() {
int total = requests.size();
int open = 0;
int closed = 0;
int low = 0, medium = 0, high = 0;

HashMap<String, Integer> 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");
}
}
87 changes: 87 additions & 0 deletions src/main/java/student/amanidrummond/MaintenanceRequest.java
Original file line number Diff line number Diff line change
@@ -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;
}


}