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; + + } +}