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
59 changes: 50 additions & 9 deletions src/main/java/org/codedifferently/Main.java
Original file line number Diff line number Diff line change
@@ -1,17 +1,58 @@
package org.codedifferently;

import java.util.Scanner;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> icon in the gutter.
public class Main {
public static void main(String[] args) {
//TIP Press <shortcut actionId="ShowIntentionActions"/> 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 <shortcut actionId="Debug"/> to start debugging your code. We have set one <icon src="AllIcons.Debugger.Db_set_breakpoint"/> breakpoint
// for you, but you can always add more by pressing <shortcut actionId="ToggleLineBreakpoint"/>.
System.out.println("i = " + i);

Scanner sc = new Scanner(System.in);
MaintenanceOffice office = new MaintenanceOffice();

MaintenanceRequest request1 =
new MaintenanceRequest("Freddy", 112, "Plumbing", 3);
MaintenanceRequest request2 =
new MaintenanceRequest("Paul", 306, "Electrical", 4);
MaintenanceRequest request3 =
new MaintenanceRequest("Elana", 971, "HVAC", 5);

office.addRequest(request1);
office.addRequest(request2);
office.addRequest(request3);

System.out.println("Initial Requests:");
office.getRequests();

while (true) {
System.out.println("\nEnter tenant name (or type 'done'):");
String name = sc.nextLine();
if (name.equalsIgnoreCase("done"))
break;
System.out.println("Apartment number:");
int aptNum = sc.nextInt();
System.out.println("Issue type:");
String issue = sc.nextLine();
System.out.println("Severity (1-5):");
int severity = sc.nextInt();
sc.nextLine();

MaintenanceRequest newRequest = new MaintenanceRequest(name, aptNum, 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);
}
}
office.getRequests();
office.dailyReport();
sc.close();
}
}
}
102 changes: 102 additions & 0 deletions src/main/java/org/codedifferently/MaintenanceOffice.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,102 @@
package org.codedifferently;

import java.util.ArrayList;

public class MaintenanceOffice {

private ArrayList<MaintenanceRequest> requests = new ArrayList<>();

MaintenanceRequest mr = new MaintenanceRequest();

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("==== 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 void getRequests() {
for (MaintenanceRequest r : requests) {
System.out.println("Tenant Name: "+r.getTenantName()+"\nApt # "+ r.getAptNumber()+"\nIssue Type: "+r.getIssueType()+"\nSeverity level: "+r.getSeverity());
System.out.println("===============================");
}
}
}

64 changes: 64 additions & 0 deletions src/main/java/org/codedifferently/MaintenanceRequest.java
Original file line number Diff line number Diff line change
@@ -0,0 +1,64 @@
package org.codedifferently;

public class MaintenanceRequest {
String tenantName;
int aptNumber;
String issueType;
int severity;
String status;

public MaintenanceRequest() {
this.status = "NEW";
}

public MaintenanceRequest(String tenantName, int aptNumber, String issueType, int severity) {
this.tenantName = tenantName;
this.aptNumber = aptNumber;
this.issueType = issueType;
this.severity = severity;
this.status = "NEW";
}

//getters & setters


public String getTenantName() {
return tenantName;
}

public void setTenantName(String tenantName) {
this.tenantName = tenantName;
}

public int getAptNumber() {
return aptNumber;
}

public void setAptNumber(int aptNumber) {
this.aptNumber = aptNumber;
}

public String getIssueType() {
return issueType;
}

public void setIssueType(String issueType) {
this.issueType = issueType;
}

public int getSeverity() {
return severity;
}

public void setSeverity(int severity) {
this.severity = severity;
}

public String getStatus() {
return status;
}

public void setStatus(String status) {
this.status = status;
}
}