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

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
import java.util.Scanner;

//TIP To <b>Run</b> code, press <shortcut actionId="Run"/>
// 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);


MaintenanceRequest main = new MaintenanceRequest();
MaintenanceRequest mR1 = new MaintenanceRequest("Derwin", 101, "Plumbing", 2);
MaintenanceRequest mR2 = new MaintenanceRequest("Dill", 121, "Electric", 5);
MaintenanceRequest mR3 = new MaintenanceRequest("James", 134, "HVAC", 1);


main.maintenanceReq(mR1);
main.maintenanceReq(mR2);
main.maintenanceReq(mR3);

main.requestList();

maintenanceApp(main);


}

public static void maintenanceApp(MaintenanceRequest maintenanceRequest) {
Scanner scan = new Scanner(System.in);
String playAgain;

do {

System.out.println("Welcome to Maintenance");
System.out.println("""
1. Add New Customer
2. Add New Technician
3. Daily Report
""");
int choice = scan.nextInt();

switch (choice) {
case 1:
System.out.println("Enter Tenant's Name: ");
String TenantName = scan.next();
System.out.println("Enter Apt #: ");
int apt = scan.nextInt();
System.out.println("Enter Issue Type: ");
String issueType = scan.next();
System.out.println("Enter Severity #: ");
int severity = scan.nextInt();
MaintenanceRequest maintenance = new MaintenanceRequest(TenantName, apt, issueType, severity);
maintenanceRequest.maintenanceReq(maintenance);
maintenanceRequest.requestList();

break;
case 2:

System.out.println("WE NEED TECHNICIANS, WHAT YOUR NAME? YOU'RE A TECHNICIAN NOW");
String TechnicianName = scan.next();
MaintenanceOffice technician = new MaintenanceOffice(TechnicianName);
techWork(technician, maintenanceRequest);


case 3:
maintenanceRequest.dailyReport();
break;


default:

System.out.println("Invalid Input.");
break;
}





while (true) {
System.out.print("Done? (say Done/No): ");
playAgain = scan.next().toLowerCase();

if (playAgain.equals("no") || playAgain.equals("done")) {
break;
} else {
System.out.println("Invalid input!");

}
}


}while(playAgain.equals("no"));
}



public static void techWork(MaintenanceOffice technician, MaintenanceRequest mR){

Scanner scan = new Scanner(System.in);

while (true) {

// If list is empty, stop
if (mR.getMaintenanceRequests().isEmpty()) {
System.out.println("\nNo more requests. All caught up!");
break;
}

System.out.println("\n--- CURRENT REQUESTS ---");

// Print starting from 1 for the user
for (int i = 0; i < mR.getMaintenanceRequests().size(); i++) {
System.out.println((i + 1) + ") " + mR.getMaintenanceRequests().get(i));
}

System.out.println("\nChoose a request number to work on (or type -1 to stop): ");
int option = scan.nextInt();

if (option == -1) {
System.out.println("Stopping work session.");
break;
}

// Convert user input to 0-based index
int index = option - 1;

// Validate choice
if (index < 0 || index >= mR.getMaintenanceRequests().size()) {
System.out.println("Invalid choice.");
continue;
}

// Work on it ONE time (NEW->IN_PROGRESS or IN_PROGRESS->DONE)
technician.workOneRequest(mR.getMaintenanceRequests(), index);

// After working, check if it is DONE, then remove it
if (mR.getMaintenanceRequests().get(index).getStatus().equals("DONE")) {

System.out.println("\nRequest is DONE. Removing it from the list...");
mR.getMaintenanceRequests().remove(index);

System.out.println("Removed.");
}
}
}
}
}


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

import java.util.ArrayList;
import java.util.Iterator;

public class MaintenanceOffice {

private String technician;



public MaintenanceOffice(String technician) {
this.technician = technician;

}

public String updateStat(String problem){
if (problem.equals("NEW")){

return "IN_PROGRESS";
}
else if (problem.equals("IN_PROGRESS")){
return "DONE";
}

return problem;

}

// Work on ONE request by index (one step only)
public void workOneRequest(ArrayList<MaintenanceRequest> requests, int index) {

if (index < 0 || index >= requests.size()) {
System.out.println("Invalid choice.");
return;
}

MaintenanceRequest r = requests.get(index);

String before = r.getStatus();
String after = updateStat(before);

// only allowed statuses
if (!isValidStatus(after)) {
System.out.println("Invalid status change attempted.");
return;
}

r.setStatus(after);

System.out.println("\nUpdated Request:");
System.out.println(r); // shows NEW/IN_PROGRESS/DONE
}

private boolean isValidStatus(String status) {
return status.equals("NEW") || status.equals("IN_PROGRESS") || status.equals("DONE");
}



public String getTechnician() {
return technician;
}



public void setTechnician(String technician) {
this.technician = technician;
}


}
Loading