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

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// click the <icon src="AllIcons.Actions.Execute"/> 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 <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);
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<MaintenanceRequest> 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<MaintenanceRequest> 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();
}
}
}


153 changes: 153 additions & 0 deletions src/main/java/org/codedifferently/MaintenanceOffice.java
Original file line number Diff line number Diff line change
@@ -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<MaintenanceRequest> 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<String, Integer> 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("==========================");
}
}
107 changes: 107 additions & 0 deletions src/main/java/org/codedifferently/MaintenanceRequest.java
Original file line number Diff line number Diff line change
@@ -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;

}
}