diff --git a/src/main/java/UMLDiagram.puml b/src/main/java/UMLDiagram.puml new file mode 100644 index 0000000..301bdb0 --- /dev/null +++ b/src/main/java/UMLDiagram.puml @@ -0,0 +1,53 @@ +@startuml + +class Main { + + main(args: String[]): void +} + +class MaintenanceRequest { + - tenantName: String + - apartmentNumber: int + - issueType: String + - severity: int + - status: String + - assignedTech: String + + + MaintenanceRequest() + + MaintenanceRequest(tenantName: String, apartmentNumber: int, issueType: String, severity: int) + + + getTenantName(): String + + setTenantName(name: String): void + + + getApartmentNumber(): int + + setApartmentNumber(number: int): void + + + getIssueType(): String + + setIssueType(issue: String): void + + + getSeverity(): int + + setSeverity(severity: int): void + + + getStatus(): String + + setStatus(status: String): void + + + getAssignedTech(): String + + setAssignedTech(name: String): void + + + toString(): String +} + +class MaintenanceOffice { + - requests: List + + + MaintenanceOffice() + + addRequest(request: MaintenanceRequest): void + + assignTechnician(request: MaintenanceRequest): void + + updateStatus(request: MaintenanceRequest, status: String): void + + closeRequest(request: MaintenanceRequest): void + + generateDailyReport(): void +} + +Main --> MaintenanceOffice +MaintenanceOffice --> MaintenanceRequest + +@enduml \ No newline at end of file diff --git a/src/main/java/org/codedifferently/Main.java b/src/main/java/org/codedifferently/Main.java index 435139b..9ed4a85 100644 --- a/src/main/java/org/codedifferently/Main.java +++ b/src/main/java/org/codedifferently/Main.java @@ -1,17 +1,50 @@ package org.codedifferently; -//TIP To Run code, press or -// click the icon in the gutter. +import java.util.Scanner; + 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); + + MaintenanceOffice office = new MaintenanceOffice(); + Scanner scanner = new Scanner(System.in); + + while (true) { + + System.out.println("Enter tenant name (or type 'done' to exit): "); + String tenantName = scanner.nextLine(); + + if (tenantName.equalsIgnoreCase("done")) { + break; + } + + System.out.println("Enter apartment number: "); + int apartmentNumber = Integer.parseInt(scanner.nextLine()); + + System.out.println("Enter issue type: "); + String issueType = scanner.nextLine(); + + System.out.println("Enter severity (1-5): "); + int severity = Integer.parseInt(scanner.nextLine()); + + MaintenanceRequest request = + new MaintenanceRequest(tenantName, apartmentNumber, issueType, severity); + + office.addRequest(request); + + if (issueType.equalsIgnoreCase("Electrical") && severity >= 4) { + System.out.println("⚠ Electrical high severity — handle urgently!"); + } + + if (severity == 5) { + office.assignTechnician(request); + System.out.println("Dispatching immediately."); + } + + System.out.println("Request logged successfully."); } + + office.generateDailyReport(); + scanner.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..6abd7fa --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceOffice.java @@ -0,0 +1,55 @@ +package org.codedifferently; + +import java.util.ArrayList; +import java.util.List; + +public class MaintenanceOffice { + + private List requests; + + public MaintenanceOffice() { + this.requests = new ArrayList<>(); + } + + public void addRequest(MaintenanceRequest request){ + this.requests.add(request); + } + + public void assignTechnician(MaintenanceRequest request) { + + int severity = request.getSeverity(); + + if (severity == 5) { + request.setAssignedTech("Senior Tech"); + } else if (severity >= 3) { + request.setAssignedTech("Standard Tech"); + } else { + request.setAssignedTech("Junior Tech"); + } + + request.setStatus("IN_PROGRESS"); + } + + public void updateStatus(MaintenanceRequest request, String status) { + request.setStatus(status); + } + + public void generateDailyReport() { + + int total = requests.size(); + int open = 0; + int closed = 0; + + for (MaintenanceRequest request : requests) { + if (request.getStatus().equals("DONE")) { + closed++; + } else { + open++; + } + } + + System.out.println("Total Requests: " + total); + System.out.println("Open: " + open); + System.out.println("Closed: " + closed); + } +} \ 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..783d226 --- /dev/null +++ b/src/main/java/org/codedifferently/MaintenanceRequest.java @@ -0,0 +1,101 @@ +package org.codedifferently; + +public class MaintenanceRequest { + + private String tenantName; + private int apartmentNumber; + private String issueType; + private int severity; + private String status; + private String assignedTech; + + // Default + public MaintenanceRequest() { + this.status = "NEW"; + } + + // Parameterized + public MaintenanceRequest(String tenantName, + int apartmentNumber, + String issueType, + int severity) { + + this.tenantName = tenantName; + this.apartmentNumber = apartmentNumber; + this.issueType = issueType; + this.status = "NEW"; + + setSeverity(severity); // use validation + } + + // Getters + public String getTenantName() { + return tenantName; + } + + public int getApartmentNumber() { + return apartmentNumber; + } + + public String getIssueType() { + return issueType; + } + + public int getSeverity() { + return severity; + } + + public String getStatus() { + return status; + } + + public String getAssignedTech() { + return assignedTech; + } + + // Setters + public void setTenantName(String tenantName) { + this.tenantName = tenantName; + } + + public void setApartmentNumber(int apartmentNumber) { + this.apartmentNumber = apartmentNumber; + } + + public void setIssueType(String issueType) { + this.issueType = issueType; + } + + public void setSeverity(int severity) { + if (severity >= 1 && severity <= 5) { + this.severity = severity; + } else { + throw new IllegalArgumentException("Severity must be between 1 and 5"); + } + } + + public void setStatus(String status) { + if (status.equals("NEW") || + status.equals("IN_PROGRESS") || + status.equals("DONE")) { + + this.status = status; + } else { + throw new IllegalArgumentException("Invalid status"); + } + } + + public void setAssignedTech(String assignedTech) { + this.assignedTech = assignedTech; + } + + @Override + public String toString() { + return "Tenant: " + tenantName + + ", Apartment: " + apartmentNumber + + ", Issue: " + issueType + + ", Severity: " + severity + + ", Status: " + status + + ", Tech: " + assignedTech; + } +} \ No newline at end of file diff --git a/src/test/java/org/codedifferently/Main.java b/src/test/java/org/codedifferently/Main.java new file mode 100644 index 0000000..244d749 --- /dev/null +++ b/src/test/java/org/codedifferently/Main.java @@ -0,0 +1,4 @@ +package java.org.codedifferently; + +public class Main { +} diff --git a/src/test/java/org/codedifferently/MaintenanceOffice.java b/src/test/java/org/codedifferently/MaintenanceOffice.java new file mode 100644 index 0000000..83619dc --- /dev/null +++ b/src/test/java/org/codedifferently/MaintenanceOffice.java @@ -0,0 +1,4 @@ +package java.org.codedifferently; + +public class MaintenanceOffice { +} diff --git a/src/test/java/org/codedifferently/MaintenanceRequest.java b/src/test/java/org/codedifferently/MaintenanceRequest.java new file mode 100644 index 0000000..9ce6722 --- /dev/null +++ b/src/test/java/org/codedifferently/MaintenanceRequest.java @@ -0,0 +1,4 @@ +package java.org.codedifferently; + +public class MaintenanceRequest { +}