package Logica;

import java.io.Serializable;
import java.sql.Date;
import java.time.LocalDate;

public class Transaccion implements Serializable{
	private static final long serialVersionUID = 7544113192927092049L;
	private String nombre;
	private float dinero;
	private boolean visible;
	private LocalDate dia;
	private Gestion gestion;
	
	/**
	 * Constructor de transaccion
	 * 
	 * @param nombre	ombre de la transaccion
	 * @param dinero	cantidad de dinero de la transaccion
	 * @param dia		dia en el que se creo o al que pertenece la transaccion
	 * @param gestion	gestion a la que pertenece la transaccion
	 */
	public Transaccion(String nombre, float dinero, LocalDate dia, Gestion gestion){
		this.nombre = nombre;
		this.dinero = dinero;
		this.visible = true;
		this.dia = dia;
		this.gestion=gestion;
	}

	public String toString() {
		return this.nombre + " " + this.dinero;
	}
	
	/**
	 * devuelve si la transaccion se contara en la gestion o no
	 * 
	 * @return visibilidad de la transaccion
	 */
	public boolean getVisivilidad() {
		return this.visible;
	}
	
	/**
	 * invierte la visibilidad de la transaccion y la devuelve
	 * 
	 * @return	nueva visibilidad 
	 */
	public boolean alterarVisivilidad() {
		this.visible =! this.visible;
		return this.visible;
	}
	
	/**
	 * Devuelve la cantidad de dinero que contiene
	 * 
	 * @return dinero de la transaccion
	 */
	public float getDinero() {
		return this.dinero;
	}
	
	/**
	 * Devuelve la fecha de la transaccion
	 * 
	 * @return Fecha de la transaccion
	 */
	public LocalDate getDia() {
		return this.dia;
	}
	
	/**
	 * Se aniade al gasto al que pertenece;
	 */
	public void aniadirse() {
		this.gestion.aniadirGasto(this);
	}
	
	/**
	 * Devuelve la gestion a la que pertenece
	 * 
	 * @return	gestion a la que pertenece
	 */
	public Gestion getGestion() {
		return this.gestion;
	}
	
	/**
	 * devuelve el nombre de la transaccion
	 * 
	 * @return	nombre de la transaccion
	 */
	public String getNombre() {
		return this.nombre;
	}
	
	public void setName(String nombre) {
		this.nombre = nombre;
	}
	
	public void setFecha(LocalDate fecha) {
		this.dia = fecha;
	}
	
	public void setPrecio(float nuevo) {
		this.dinero = nuevo;
	}
}
