Commit 88e5478b authored by Awes0meM4n's avatar Awes0meM4n
Browse files

Practica finalizada

parent 8b9ae9b0
package es.mde;
import java.time.LocalDate;
import java.time.chrono.ChronoLocalDate;
import java.util.ArrayList;
import java.util.Collection;
import java.util.Collections;
import java.util.Comparator;
import java.util.List;
import java.util.stream.Collectors;
import es.mde.taller.Averia;
import es.mde.taller.HojaDeTrabajo;
......@@ -79,40 +75,32 @@ public class App {
hojasDeTrabajo.forEach(System.out::println);
// Para el punto 4
System.out.println("\n----- PUNTO 4 -----");
HojaDeTrabajo hojaAntigua = new HojaDeTrabajo(coche2, LocalDate.of(2021, 6, 1));
Averia averiaAntigua = new Averia("Cambio de aceite", 1, filtro , new Repuesto(2, "1l aceite", 50));
hojasDeTrabajo.add(hojaAntigua);
hojaAntigua.addReparacionFinalizada(averiaAntigua);
// Momento actual
coche2.addAveria(averia);
coche2.addAveria(averia2);
// Busco entre las hojas de trabajo las de este coche
// Collection<HojaDeTrabajo> hojasDelCoche = taller.getHojasDeTrabajoParaReparable(coche2);
// Ahora cojo las del ultimo ano
Collection<HojaDeTrabajo> hojasHaceUnAno = taller.getHojasHastaHaceUnAno(hojaDeTrabajoActual.getFechaEntrada(), coche2);
hojasHaceUnAno.remove(hojaDeTrabajoActual);
Collection<HojaDeTrabajo> hojasHaceUnAno = taller.getHojasHastaHaceUnAno(hojaDeTrabajoActual);
System.out.println("Encontradas " + hojasHaceUnAno.size() + " hojas del coche " + coche2);
hojasHaceUnAno.forEach(System.out::println);
// Miro si coincide la averia
Averia averiaGarantizada = null;
for (HojaDeTrabajo hojaDeTrabajo : hojasHaceUnAno) {
for (Averia averiaArreglada : hojaDeTrabajo.getAveriasArregladas()) {
if (hojaDeTrabajoActual.getReparable().getAverias().contains(averiaArreglada)) {
averiaGarantizada = averiaArreglada;
break;
}
}
if (averiaGarantizada != null) {
break;
}
}
System.out.println("Esta en garantia " + averiaGarantizada);
hojasHaceUnAno.forEach(System.out::println);
Collection<Averia> averiasGarantizadas = taller.getAveriasGarantizadas(hojaDeTrabajoActual);
System.out.println("Esta en garantia " + averiasGarantizadas);
System.out.println(cocheParaBuscar + " con averias " + cocheParaBuscar.getAverias());
System.out.println(cocheParaBuscar + " se repara en " + cocheParaBuscar.getHorasReparacion() + " horas");
System.out.println(cocheParaBuscar + " cuesta repararlo "
+ (cocheParaBuscar.getCosteReparacion() - taller.precioGarantizado(hojaDeTrabajoActual)) + "€");
}
private static String ponmeBonitaExistencia(Taller taller, Repuesto repuesto) {
......
......@@ -65,10 +65,31 @@ public class Taller {
return hojasDelReparable;
}
public List<HojaDeTrabajo> getHojasHastaHaceUnAno(LocalDate fechaReferencia, Reparable reparable) {
LocalDate fechaHaceUnAno = fechaReferencia.minusYears(1);
return getHojasDeTrabajoParaReparable(reparable).stream()
public List<HojaDeTrabajo> getHojasHastaHaceUnAno(HojaDeTrabajo hojaDeReferencia) {
LocalDate fechaHaceUnAno = hojaDeReferencia.getFechaEntrada().minusYears(1);
List<HojaDeTrabajo> hojasHaceUnAno = getHojasDeTrabajoParaReparable(hojaDeReferencia.getReparable()).stream()
.filter(h -> h.getFechaEntrada().isAfter(fechaHaceUnAno))
.collect(Collectors.toList());
hojasHaceUnAno.remove(hojaDeReferencia);
return hojasHaceUnAno;
}
public Collection<Averia> getAveriasGarantizadas(HojaDeTrabajo hojaDeReferencia) {
Collection<Averia> averiasGarantizadas = new ArrayList<Averia>();
for (HojaDeTrabajo hojaDeTrabajo : getHojasHastaHaceUnAno(hojaDeReferencia)) {
for (Averia averiaArreglada : hojaDeTrabajo.getAveriasArregladas()) {
if (hojaDeReferencia.getReparable().getAverias().contains(averiaArreglada)) {
averiasGarantizadas.add(averiaArreglada);
}
}
}
return averiasGarantizadas;
}
public float precioGarantizado(HojaDeTrabajo hojaDeReferencia) {
return (float) getAveriasGarantizadas(hojaDeReferencia).stream()
.mapToDouble(Averia::getPrecio)
.sum();
}
}
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment