package co.allura.desafio.controller;
import co.allura.desafio.model.Producto;
import co.allura.desafio.model.TarjetaDebito;
import co.allura.desafio.view.View;
import java.util.Collections;
//TIP To <b>Run</b> code, press <shortcut actionId="Run"/> or
// 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
View view = new View();
view.print("Escribaa el limite de la tarjeta ");
double limiteTarjeta = view.readDouble();
TarjetaDebito tarjeta = new TarjetaDebito(limiteTarjeta);
tarjeta.setSaldo(limiteTarjeta);
int salir = 1;
while (salir != 0) {
view.print("¿Qué desea hacer? 1 = hacer compra, 2 = ver carrito, 0 = salir:) ");
salir = view.readInt();
switch (salir) {
case 1:{
view.print("Escriba descripción de la compra: ");
String descripcion = view.readString();
view.print("Escriba el valor de la compra: ");
double valor = view.readDouble();
Producto producto = new Producto(descripcion, valor);
boolean realizarCompra = tarjeta.validarCompra(producto);
System.out.println(realizarCompra);
if (realizarCompra) {
view.print("Compra exitosa ");
}
else {
view.print("El saldo es insuficiente ");
break;
}
}
case 2 :{
System.out.println("************");
System.out.println("Ver carrito "+'\n');
Collections.sort(tarjeta.getListaCompra());
for (Producto producto1 : tarjeta.getListaCompra()){
view.print(producto1.toString());
}
view.print("Su saldo es"+tarjeta.getSaldo());
}
}
}
}
}
package co.allura.desafio.model;
import java.util.ArrayList;
import java.util.List;
public class TarjetaDebito {
private double limite;
private double saldo;
private List<Producto> listaCompra;
public TarjetaDebito() {
}
public TarjetaDebito(double limite) {
this.limite = limite;
this.saldo = saldo;
this.listaCompra = new ArrayList<>();
}
public boolean validarCompra(Producto producto) {
if(this.saldo >= producto.getPrecio()){
this.saldo -= producto.getPrecio();
this.listaCompra.add(producto);
return true;
}
else{
return false;
}
}
public double getLimite() {
return limite;
}
public void setLimite(double limite) {
this.limite = limite;
}
public double getSaldo() {
return saldo;
}
public void setSaldo(double saldo) {
this.saldo = saldo;
}
public List<Producto> getListaCompra() {
return listaCompra;
}
public void setListaCompra(List<Producto> listaCompra) {
this.listaCompra = listaCompra;
}
}
package co.allura.desafio.model;
import java.io.Serializable;
import java.util.Comparator;
public class Producto implements Comparable<Producto> {
private String nombreProducto;
private double precio;
public Producto(String nombreProducto, double precio) {
this.nombreProducto = nombreProducto;
this.precio = precio;
}
public Producto() {}
@Override
public int compareTo(Producto o1) {
return Double.valueOf(this.precio).compareTo(o1.getPrecio());
}
@Override
public String toString() {
return "Producto{" +
"nombreProducto='" + nombreProducto + '\'' +
", precio=" + precio +
'}';
}
public String getNombreProducto() {
return nombreProducto;
}
public void setNombreProducto(String nombreProducto) {
this.nombreProducto = nombreProducto;
}
/*
public int getLimite() {
return limite;
}
public void setLimite(int limite) {
this.limite = limite;
*/
public double getPrecio() {
return precio;
}
public void setPrecio(double precio) {
this.precio = precio;
}
}