package entities;



import java.io.Serializable;
import java.lang.String;
import java.util.ArrayList;
import java.util.Collection;
import java.util.GregorianCalendar;

import javax.persistence.*;

/**
 * Entity implementation class for Entity: Utente
 *
 */
@Entity


public class Utente  implements Serializable {
	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;
	
	@Id
	private String id_utente;
	private String nome;
	private String BI;
	private String morada;
	@Temporal(TemporalType.DATE)
	private GregorianCalendar data_nascimento;
	@OneToMany(targetEntity=entities.AtoEnfermagem.class, fetch = FetchType.LAZY, cascade=CascadeType.REMOVE)
    private Collection<AtoEnfermagem> AtoEnfermagem;
	@OneToMany( targetEntity=entities.AtoMedico.class, fetch = FetchType.LAZY, cascade=CascadeType.REMOVE)
    private Collection<AtoMedico> AtoMedico;
	@Embedded
	FichaClinica FichaClinica;

	
	public Utente(int id, String nome, String BI, String morada, GregorianCalendar data_nascimento){
		super();
		this.id_utente= String.valueOf(id);
		this.BI=BI;
		this.morada=morada;
		this.data_nascimento=data_nascimento;
		this.nome=nome;
		this.FichaClinica = new FichaClinica()  ;
	}

	public Utente() {
		super();
		 AtoEnfermagem = new ArrayList<AtoEnfermagem>();
		 AtoMedico = new ArrayList<AtoMedico>();
	}
	

	public void addAtoEnfermagem(AtoEnfermagem atoenf){
		AtoEnfermagem.add(atoenf);
	}
	public void addAtoMedico(AtoMedico atomed){
		AtoMedico.add(atomed);
	}
	public void rmvAtoEnfermagem(AtoEnfermagem atoenf){
		AtoEnfermagem.remove(atoenf);
	}
	public void rmvAtoMedico(AtoMedico atomed){
		AtoMedico.remove(atomed);
	}
	public Collection<AtoEnfermagem> getAtoEnfermagem() {
		return AtoEnfermagem;
	}

	public void setAtoEnfermagem(Collection<AtoEnfermagem> atoEnfermagem) {
		AtoEnfermagem = atoEnfermagem;
	}


	
	public String getNome() {
		return nome;
	}

	public void setNome(String nome) {
		this.nome = nome;
	}

	public String getBI() {
		return BI;
	}

	public void setBI(String bI) {
		BI = bI;
	}

	public String getMorada() {
		return morada;
	}

	public void setMorada(String morada) {
		this.morada = morada;
	}

	public GregorianCalendar getData_nascimento() {
		return data_nascimento;
	}

	public void setData_nascimento(GregorianCalendar data_nascimento) {
		this.data_nascimento = data_nascimento;
	}

	
	public FichaClinica getFichaClinica() {
		return FichaClinica;
	}

	public void setFichaClinica(FichaClinica fichaClinica) {
		FichaClinica = fichaClinica;
	}

	@Override
	public String toString() {
		return "Utente [id_utente=" + id_utente + ", Nome ="
				+ nome + ", BI=" + BI + ", morada=" + morada
				+ ", data_nascimento="
				+ data_nascimento.get(GregorianCalendar.YEAR)+ "/"+ 
				data_nascimento.get(GregorianCalendar.MONTH)+ "/"+ data_nascimento.get(GregorianCalendar.DAY_OF_MONTH) + "]" +"\n";
	}

	public String getId_utente() {
		return id_utente;
	}

	public void setId_utente(String id_utente) {
		this.id_utente = id_utente;
	}

	public Collection<AtoMedico> getAtoMedico() {
		return AtoMedico;
	}

	public void setAtoMedico(Collection<AtoMedico> atoMedico) {
		AtoMedico = atoMedico;
	}

	


}

