-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathParkingTicket.java
More file actions
54 lines (47 loc) · 1.94 KB
/
Copy pathParkingTicket.java
File metadata and controls
54 lines (47 loc) · 1.94 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
package com.parking.model;
import java.time.LocalDateTime;
import java.time.Duration;
import java.util.UUID;
public class ParkingTicket {
private String ticketId;
private String vehiclePlate;
private String spotId;
private LocalDateTime issuedAt;
private LocalDateTime exitedAt;
private TicketStatus status;
private double amount;
private boolean paid;
public enum TicketStatus {
ACTIVE, COMPLETED, CANCELLED
}
public ParkingTicket(String vehiclePlate, String spotId) {
this.ticketId = "TKT-" + UUID.randomUUID().toString().substring(0, 8).toUpperCase();
this.vehiclePlate = vehiclePlate;
this.spotId = spotId;
this.issuedAt = LocalDateTime.now();
this.status = TicketStatus.ACTIVE;
this.paid = false;
}
public long getDurationMinutes() {
LocalDateTime end = (exitedAt != null) ? exitedAt : LocalDateTime.now();
return Duration.between(issuedAt, end).toMinutes();
}
// Getters and Setters
public String getTicketId() { return ticketId; }
public String getVehiclePlate() { return vehiclePlate; }
public String getSpotId() { return spotId; }
public LocalDateTime getIssuedAt() { return issuedAt; }
public LocalDateTime getExitedAt() { return exitedAt; }
public void setExitedAt(LocalDateTime exitedAt) { this.exitedAt = exitedAt; }
public TicketStatus getStatus() { return status; }
public void setStatus(TicketStatus status) { this.status = status; }
public double getAmount() { return amount; }
public void setAmount(double amount) { this.amount = amount; }
public boolean isPaid() { return paid; }
public void setPaid(boolean paid) { this.paid = paid; }
@Override
public String toString() {
return String.format("Ticket[id=%s, plate=%s, spot=%s, duration=%d mins, amount=₹%.2f, paid=%b]",
ticketId, vehiclePlate, spotId, getDurationMinutes(), amount, paid);
}
}