This commit is contained in:
@@ -0,0 +1,100 @@
|
||||
package servicios;
|
||||
|
||||
import java.time.LocalDate;
|
||||
import java.time.Duration;
|
||||
import java.time.format.DateTimeFormatter;
|
||||
import java.util.ArrayList;
|
||||
|
||||
public class ReporteParqueo {
|
||||
|
||||
private static final DateTimeFormatter soloFecha = DateTimeFormatter.ofPattern("dd/MM/yyyy");
|
||||
|
||||
// Listado de vehiculos del presente día
|
||||
public String listVehic(GestorParqueo gestorParqueo, LocalDate fecha) {
|
||||
|
||||
ArrayList<TiqueteParqueo> tiquetes = gestorParqueo.getTiquetesDia(fecha);
|
||||
|
||||
String fechaFormateada = fecha.format(soloFecha);
|
||||
|
||||
if (tiquetes.isEmpty()) {
|
||||
String resultado = "No hay vehículos registrados para la fecha: " + fechaFormateada;
|
||||
return resultado;
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
sb.append("Vehículos que usaron el parqueo el día " + fechaFormateada + ":" + "\n");
|
||||
for (TiqueteParqueo tiquete : tiquetes) {
|
||||
|
||||
String placa = tiquete.getVehiculo().getPlaca();
|
||||
String entrada = tiquete.getHoraEntrada().format(soloFecha);
|
||||
String salida = "Aún parqueado";
|
||||
if (tiquete.getHoraSalida() != null) {
|
||||
salida = tiquete.getHoraSalida().format(soloFecha);
|
||||
}
|
||||
|
||||
String lineaVehic = "Placa: " + placa + " | Tipo: " + tiquete.getVehiculo().getNombre() + " | Entrada: " + entrada + " | Salida: " + salida;
|
||||
sb.append(lineaVehic).append("\n");
|
||||
}
|
||||
|
||||
String resultado = sb.toString();
|
||||
|
||||
return resultado;
|
||||
}
|
||||
|
||||
// Total recaudado por tipo de servicio
|
||||
public String totalRecaudado(GestorParqueo gestorParqueo, LocalDate fecha) {
|
||||
|
||||
ArrayList<TiqueteParqueo> tiquetes = gestorParqueo.getTiquetesDia(fecha);
|
||||
int totalPorHora = 0;
|
||||
int totalPorDia = 0;
|
||||
|
||||
for (TiqueteParqueo tiquete : tiquetes) {
|
||||
if (tiquete.getHoraSalida() == null) {
|
||||
continue;
|
||||
}
|
||||
|
||||
if (tiquete.getModalidad() == TiqueteParqueo.TipoServicio.POR_HORA) {
|
||||
totalPorHora += tiquete.getMontoTotal();
|
||||
} else {
|
||||
totalPorDia += tiquete.getMontoTotal();
|
||||
}
|
||||
}
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String fechaFormateada = fecha.format(soloFecha);
|
||||
sb.append("Total recaudado por servicio el día " + fechaFormateada + ":" + "\n");
|
||||
sb.append("Servicio por hora: CRC " + totalPorHora + "\n");
|
||||
sb.append("Servicio por día: CRC " + totalPorDia + "\n");
|
||||
|
||||
String resultado = sb.toString();
|
||||
return resultado;
|
||||
}
|
||||
|
||||
public String estadisticasBasicas(GestorParqueo gestorParqueo, LocalDate fecha) {
|
||||
ArrayList<TiqueteParqueo> tiquetes = gestorParqueo.getTiquetesDia(fecha);
|
||||
int vehiculosAtendidos = tiquetes.size();
|
||||
long minutosTotales = 0;
|
||||
|
||||
for (TiqueteParqueo tiquete : tiquetes) {
|
||||
if (tiquete.getHoraSalida() != null) {
|
||||
minutosTotales += Duration.between(tiquete.getHoraEntrada(), tiquete.getHoraSalida()).toMinutes();
|
||||
}
|
||||
}
|
||||
|
||||
double horasTotales = minutosTotales / 60.0;
|
||||
int capacidad = gestorParqueo.getCapacidadMaxima();
|
||||
int ocupadosActuales = capacidad - gestorParqueo.espaciosDisponibles();
|
||||
double ocupacionActual = (ocupadosActuales * 100.0) / capacidad;
|
||||
|
||||
StringBuilder sb = new StringBuilder();
|
||||
String fechaFormateada = fecha.format(soloFecha);
|
||||
sb.append("Estadísticas básicas del día " + fechaFormateada + ":" + "\n");
|
||||
sb.append("Sumatoria de horas de uso: " + String.format("%.2f", horasTotales) + "\n");
|
||||
sb.append("Cantidad de vehículos atendidos: " + vehiculosAtendidos + "\n");
|
||||
sb.append("Porcentaje de ocupación actual: " + String.format("%.2f", ocupacionActual) + "%" + "\n");
|
||||
|
||||
String resultado = sb.toString();
|
||||
return resultado;
|
||||
}
|
||||
|
||||
}
|
||||
Reference in New Issue
Block a user