diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 435139b..6743b63 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -1,17 +1,58 @@ package org.codedifferently; +import java.util.Scanner; + //TIP To Run code, press or // click the icon in the gutter. public class Main { public static void main(String[] args) { - //TIP Press 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 to start debugging your code. We have set one breakpoint - // for you, but you can always add more by pressing . - 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(); } } -} \ No newline at end of file diff --git a/src/main/java/org/codedifferently/MaintenanceOffice.java b/src/main/java/org/codedifferently/MaintenanceOffice.java new file mode 100644 index 0000000..afd81c0 --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -0,0 +1,102 @@ +package org.codedifferently; + +import java.util.ArrayList; + +public class MaintenanceOffice { + + private ArrayList 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 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("==== 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("==============================="); + } + } +} + diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java new file mode 100644 index 0000000..7b57a60 --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -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; + } +}