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
79 changes: 79 additions & 0 deletions src/main/java/org/henrriettariverson/Main.java
Original file line number Diff line number Diff line change
@@ -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();
}
}
100 changes: 100 additions & 0 deletions src/main/java/org/henrriettariverson/MaintenanceOffice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,100 @@
package org.henrriettariverson;
import java.util.ArrayList;

public class MaintenanceOffice {

//Declaring an array list of requests
private ArrayList<MaintenanceRequest> 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<String> issueTypes = new ArrayList<>();
ArrayList<Integer> 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<MaintenanceRequest> getRequests() {

return requests;
}
}
70 changes: 70 additions & 0 deletions src/main/java/org/henrriettariverson/MaintenanceRequest.java
Original file line number Diff line number Diff line change
@@ -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;
}
}