package es.uv.saic.domain;

import java.io.Serializable;

import jakarta.persistence.*;
import java.util.Date;
import java.util.List;


/**
 * The persistent class for the tasques database table.
 * 
 */
@Entity
@Table(name="tasques")
@NamedQuery(name="Tasca.findAll", query="SELECT t FROM Tasca t")
public class Tasca implements Serializable {
	private static final long serialVersionUID = 1L;

	@Id
	@Column(name="id_tasca")
	private Integer idTasca;

	@Column(name="codi_evidencia")
	private String codiEvidencia;

	@Temporal(TemporalType.DATE)
	@Column(name="data_lim")
	private Date dataLim;

	@Column(name="descripcio_cas")
	private String descripcioCas;

	@Column(name="descripcio_val")
	private String descripcioVal;

	@Column(name="id_tasca_seg")
	private Integer idTascaSeg;

	@Column(name="id_tasca_seg2")
	private Integer idTascaSeg2;

	@Column(name="id_tascap")
	private Integer idTascap;

	@Column(name="nom_evidencia_cas")
	private String nomEvidenciaCas;
	
	@Column(name="nom_evidencia_val")
	private String nomEvidenciaVal;

	@Column(name="titol_cas")
	private String titolCas;

	@Column(name="titol_val")
	private String titolVal;
	
	@Column(name="opcions")
	private String opcions;
	
	@Column(name="informe")
	private Boolean informe;

	//bi-directional many-to-one association to Proces
	@ManyToOne
	@JoinColumn(name="id_proces")
	private Proces proces;

	//bi-directional many-to-one association to Rol
	@ManyToOne
	@JoinColumn(name="id_rol")
	private Rol rol;

	//bi-directional many-to-one association to Tipus
	@ManyToOne
	@JoinColumn(name="tipus")
	private Tipus tipus;

	//bi-directional many-to-one association to InstanciaTasca
	@OneToMany(mappedBy="tasca")
	private List<InstanciaTasca> instancies;

	public Tasca() {
	}

	public Integer getIdTasca() {
		return this.idTasca;
	}

	public void setIdTasca(Integer idTasca) {
		this.idTasca = idTasca;
	}

	public String getCodiEvidencia() {
		return this.codiEvidencia;
	}

	public void setCodiEvidencia(String codiEvidencia) {
		this.codiEvidencia = codiEvidencia;
	}

	public Date getDataLim() {
		return this.dataLim;
	}

	public void setDataLim(Date dataLim) {
		this.dataLim = dataLim;
	}

	public String getDescripcioCas() {
		return this.descripcioCas;
	}

	public void setDescripcioCas(String descripcioCas) {
		this.descripcioCas = descripcioCas;
	}

	public String getDescripcioVal() {
		return this.descripcioVal;
	}

	public void setDescripcioVal(String descripcioVal) {
		this.descripcioVal = descripcioVal;
	}

	public Integer getIdTascaSeg() {
		return this.idTascaSeg;
	}

	public void setIdTascaSeg(Integer idTascaSeg) {
		this.idTascaSeg = idTascaSeg;
	}

	public Integer getIdTascaSeg2() {
		return this.idTascaSeg2;
	}

	public void setIdTascaSeg2(Integer idTascaSeg2) {
		this.idTascaSeg2 = idTascaSeg2;
	}

	public Integer getIdTascap() {
		return this.idTascap;
	}

	public void setIdTascap(Integer idTascap) {
		this.idTascap = idTascap;
	}

	public String getNomEvidenciaCas() {
		return this.nomEvidenciaCas;
	}

	public void setNomEvidenciaCas(String nomEvidenciaCas) {
		this.nomEvidenciaCas = nomEvidenciaCas;
	}
	public String getNomEvidenciaVal() {
		return this.nomEvidenciaVal;
	}

	public void setNomEvidenciaVal(String nomEvidenciaVal) {
		this.nomEvidenciaVal = nomEvidenciaVal;
	}
	public String getTitolCas() {
		return this.titolCas;
	}

	public void setTitolCas(String titolCas) {
		this.titolCas = titolCas;
	}

	public String getTitolVal() {
		return this.titolVal;
	}

	public void setTitolVal(String titolVal) {
		this.titolVal = titolVal;
	}

	public Proces getProces() {
		return this.proces;
	}

	public void setProces(Proces proces) {
		this.proces = proces;
	}

	public Rol getRol() {
		return this.rol;
	}

	public void setRol(Rol rol) {
		this.rol = rol;
	}

	public Tipus getTipus() {
		return this.tipus;
	}

	public void setTipus(Tipus tipus) {
		this.tipus = tipus;
	}

	public List<InstanciaTasca> getInstancies() {
		return this.instancies;
	}

	public void setInstancies(List<InstanciaTasca> instanciaTascas) {
		this.instancies = instanciaTascas;
	}

	public InstanciaTasca addInstancia(InstanciaTasca instanciaTasca) {
		this.getInstancies().add(instanciaTasca);
		instanciaTasca.setTasca(this);

		return instanciaTasca;
	}

	public InstanciaTasca removeInstancia(InstanciaTasca instanciaTasca) {
		this.getInstancies().remove(instanciaTasca);
		instanciaTasca.setTasca(null);

		return instanciaTasca;
	}
	
	public boolean isExpired() {
		if(this.getDataLim() != null) {
			if((new Date(this.getDataLim().getTime()+(1000 * 60 * 60 * 24))).before(new Date())) {
				return true;
			}
			else {
				return false;
			}
		}
		else {
			return false;
		}
	}
	
	public void setOpcions(String opcions) {
		this.opcions = opcions;
	}

	public String getOpcions() {
		return this.opcions;
	}
	
	public void setInforme(Boolean informe) {
		this.informe = informe;
	}

	public Boolean getInforme() {
		return this.informe;
	}

}