diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java
index 435139b..5ebb218 100644
--- a/src/main/java/org/codedifferently/Main.java
+++ b/src/main/java/org/codedifferently/Main.java
@@ -1,17 +1,121 @@
package org.codedifferently;
-//TIP To Run code, press or
-// click the icon in the gutter.
+import java.util.ArrayList;
+import java.util.Locale;
+import java.util.Scanner;
+
+// level1:
+//Create at least 3 requests
+//Use a loop to print them
+//Print "HIGH PRIORITY" if severity ≥ 4
+//Level 2:
+//Now allow the user to enter requests.
+//
+//Requirements:
+//
+//Use a loop to continue entering requests
+//
+//Stop when user types "done"
+//
+//After each request:
+//
+//Print confirmation
+//Apply rules:
+//Rules:
+//
+//If issueType is "Electrical" and severity ≥ 4 → print warning
+//If severity is 5 → dispatch immediately
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);
+ MaintenanceRequest mtr = new MaintenanceRequest(630, "Leanna", "leaking", 4,150);
+ MaintenanceRequest mt = new MaintenanceRequest(63, "Levon", "fridge not working", 2,700);
+ MaintenanceRequest m = new MaintenanceRequest(6, "Tianna", "stove not working", 3,650);
+ ArrayList outPutReport = new ArrayList<>();
+ outPutReport.add(mtr);
+ outPutReport.add(mt);
+ outPutReport.add(m);
+
+ for (MaintenanceRequest rem : outPutReport) {
+
+ System.out.println(rem);
+ if (rem.getSeverity() >= 4) {
+
+ System.out.println(" HIGH PRIORITY ");
+
+
+ Scanner sc = new Scanner(System.in);
+ ArrayList enterRequest = new ArrayList<>();
+
+ while (true) {
+
+ System.out.println("Enter apartment # or type 'done' to quit:");
+ String aptInput = sc.nextLine();
+
+ if (aptInput.equalsIgnoreCase("done")) {
+ break;
+ }
+
+ int apartmentNumber = Integer.parseInt(aptInput);
+
+ System.out.println("Enter Tenant Name:");
+ String tenantName = sc.nextLine();
+
+ System.out.println("What is the issue:");
+ String issue = sc.nextLine();
+
+ System.out.println("Enter severity (1-5):");
+ int severity = Integer.parseInt(sc.nextLine());
+
+ System.out.println("Request submitted!");
+
+ if (issue.toLowerCase().contains("electrical") && severity >= 4) {
+ System.out.println(" WARNING: High-risk electrical issue!");
+ }
+
+ if (severity == 5) {
+ System.out.println(" Dispatch immediately!");
+ }
+
+ System.out.println("----------------------------");
+ System.out.print("Enter estimated repair cost: ");
+ double estimatedRepairCost = sc.nextDouble();
+ sc.nextLine();
+ MaintenanceRequest request =
+ new MaintenanceRequest(apartmentNumber, tenantName, issue, severity, estimatedRepairCost);
+
+ System.out.println("Request submitted successfully!");
+ // System.out.println(request);
+ System.out.println(request.toString());
+
+ }
+
+ sc.close();
+ }
+ MaintenanceOffice office = new MaintenanceOffice();
+
+ MaintenanceRequest request1 =
+ new MaintenanceRequest(101, "Leanna",
+ "Electrical wiring", 5,750);
+
+ office.addRequest(request1);
+
+ office.assignTech(request1);
+
+ office.updateStatus(request1, "DONE");
+
+ office.closeRequest(request1);
+
+ office.printAllRequests();
}
+ MaintenanceOffice office = new MaintenanceOffice();
+
+ office.addRequest(new MaintenanceRequest(101, "Leanna", "Electrical", 5, 500));
+ office.addRequest(new MaintenanceRequest(102, "Mark", "Plumbing", 2, 250));
+ office.addRequest(new MaintenanceRequest(103, "Anna", "Electrical", 4, 650));
+ office.addRequest(new MaintenanceRequest(104, "John", "Heating", 3, 500));
+
+ office.generateDailyReport();
}
-}
\ 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..357ad16
--- /dev/null
+++ b/src/main/java/org/codedifferently/MaintenanceOffice.java
@@ -0,0 +1,153 @@
+package org.codedifferently;
+//Level 3 — Assign & Update
+//Create a MaintenanceOffice class.
+//
+//It must:
+//
+//Assign a tech based on severity
+//Update request status
+//Close completed requests
+//Only allow status updates to:
+//
+//"NEW"
+//"IN_PROGRESS"
+//"DONE"
+//Do not close a request unless it is "DONE".
+
+import java.util.ArrayList;
+
+public class MaintenanceOffice {
+
+ private ArrayList requests;
+
+ public MaintenanceOffice() {
+ requests = new ArrayList<>();
+ }
+
+ public void addRequest(MaintenanceRequest request) {
+ requests.add(request);
+ }
+
+ // Assign tech based on severity
+ public void assignTech(MaintenanceRequest request) {
+ if (request.getSeverity() >= 4) {
+ request.setAssignedTech("Senior Technician");
+ } else {
+ request.setAssignedTech("Junior Technician");
+ }
+
+ request.setStatus("IN_PROGRESS");
+ }
+
+ // Update status (only allowed values)
+ public void updateStatus(MaintenanceRequest request, String newStatus) {
+
+ if (newStatus.equals("NEW") ||
+ newStatus.equals("IN_PROGRESS") ||
+ newStatus.equals("DONE")) {
+
+ request.setStatus(newStatus);
+
+ } else {
+ System.out.println("Invalid status update!");
+ }
+ }
+
+ // Close request only if DONE
+ public void closeRequest(MaintenanceRequest request) {
+
+ if (request.getStatus().equals("DONE")) {
+ requests.remove(request);
+ System.out.println("Request closed successfully.");
+ } else {
+ System.out.println("Cannot close request. It is not DONE.");
+ }
+ }
+
+ public void printAllRequests() {
+ for (MaintenanceRequest r : requests) {
+ System.out.println(r);
+ }
+ }
+ //Level 4 — Daily Report
+ //Add a report method that prints:
+ //
+ //Total requests
+ //Open vs closed
+ //Count of low / medium / high severity
+ //Most common issue type
+ //If high priority requests exceed 3:
+ //
+ //Print overload warning
+ public void generateDailyReport() {
+
+ int total = requests.size();
+ int openCount = 0;
+ int closedCount = 0;
+ double totalCost = 0;
+ int low = 0;
+ int medium = 0;
+ int high = 0;
+
+
+ java.util.HashMap issueCount = new java.util.HashMap<>();
+
+ for (MaintenanceRequest r : requests) {
+ totalCost += r.getEstimatedRepairCost();
+
+ // Count open vs closed
+ if (r.getStatus().equals("DONE")) {
+ closedCount++;
+ } else {
+ openCount++;
+ }
+
+ // Count severity
+ if (r.getSeverity() <= 2) {
+ low++;
+ } else if (r.getSeverity() == 3) {
+ medium++;
+ } else {
+ high++;
+ }
+
+ // Count issue types
+ String issue = r.getIssueType();
+
+ issueCount.put(issue, issueCount.getOrDefault(issue, 0) + 1);
+ }
+
+ // existing counting logic...
+
+ System.out.println("Total Estimated Repair Cost: $" + totalCost);
+ // Find most common issue
+ String mostCommonIssue = "None";
+ int max = 0;
+
+ for (String issue : issueCount.keySet()) {
+ if (issueCount.get(issue) > max) {
+ max = issueCount.get(issue);
+ mostCommonIssue = issue;
+
+ }
+ }
+
+ // Print Report
+ System.out.println("====== DAILY REPORT ======");
+ System.out.println("Total Requests: " + total);
+ System.out.println("Open Requests: " + openCount);
+ System.out.println("Closed Requests: " + closedCount);
+ System.out.println();
+ System.out.println("Low Severity: " + low);
+ System.out.println("Medium Severity: " + medium);
+ System.out.println("High Severity: " + high);
+ System.out.println();
+ System.out.println("Most Common Issue: " + mostCommonIssue);
+
+ if (high > 3) {
+ System.out.println("⚠ OVERLOAD WARNING: Too many high priority requests!");
+ }
+
+ System.out.println("==========================");
+ }
+}
\ No newline at end of file
diff --git a/src/main/java/org/codedifferently/MaintenanceRequest.java b/src/main/java/org/codedifferently/MaintenanceRequest.java
new file mode 100644
index 0000000..21e85fb
--- /dev/null
+++ b/src/main/java/org/codedifferently/MaintenanceRequest.java
@@ -0,0 +1,107 @@
+package org.codedifferently;
+//Create a MaintenanceRequest class.
+//
+//It must contain:
+//
+//tenantName
+//apartmentNumber
+//issueType
+//severity (1–5)
+//status (default = "NEW")
+//Requirements:
+//
+//Include both constructors
+//Include getters and setters
+//Include a toString() method
+//In Main:
+//
+//Create at least 3 requests
+//Use a loop to print them
+//Print "HIGH PRIORITY" if severity ≥ 4
+
+public class MaintenanceRequest {
+ private String tenantName;
+ private int apartmentNumber;
+ private String issueType;
+ private int severity ; // (1-5)
+ String status = "new";
+ private String assignedTech;
+ private double estimatedRepairCost;
+
+
+ public MaintenanceRequest(int apartmentNumber, String tenantName, String issueType, int severity, double estimatedRepairCost) {
+ this.apartmentNumber = apartmentNumber;
+ this.tenantName = tenantName;
+ this.issueType = issueType;
+ this.severity = severity;
+ this.estimatedRepairCost = estimatedRepairCost;
+ this.status = "NEW";
+
+
+ }
+
+ public String getTenantName() {
+ return tenantName;
+ }
+
+ public void setTenantName(String tenantName) {
+ this.tenantName = tenantName;
+ }
+
+ public int getApartmentNumber() {
+ return apartmentNumber;
+ }
+
+ public void setApartmentNumber(int apartmentNumber) {
+ this.apartmentNumber = apartmentNumber;
+ }
+
+ public String getIssueType() {
+ return issueType;
+ }
+
+ public void setIssueType(String issueType) {
+ this.issueType = issueType;
+ }
+
+
+
+ public void setSeverity(int severity) {
+ this.severity = severity;
+ }
+
+ public String getStatus() {
+ return status;
+ }
+
+ public void setStatus(String status) {
+ this.status = status;
+ }
+ public void setAssignedTech(String tech) {
+ this.assignedTech = tech;
+ }
+
+ public MaintenanceRequest(String assignedTech) {
+ this.assignedTech = assignedTech;
+ }
+
+ public int getSeverity() {
+ return severity;
+ }
+
+ public double getEstimatedRepairCost() {
+ return estimatedRepairCost;
+ }
+
+ @Override
+ public String toString() {
+ return "Apartment #: " + apartmentNumber +
+ " | Tenant: " + tenantName +
+ " | Issue: " + issueType +
+ " | Severity: " + severity +
+ " | Cost: $" + estimatedRepairCost +
+ " | Status: " + status +
+ " | Tech: " + assignedTech;
+
+ }
+}