package com.rjconsultores.ventaboletos.entidad;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.Basic;
import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

@Entity
@SequenceGenerator(name = "DISPOSITIVO_EMBARCADA_SEQ", sequenceName = "DISPOSITIVO_EMBARCADA_SEQ", allocationSize = 1)
@Table(name = "DISPOSITIVO_EMBARCADA")
public class DispositivoEmbarcada {

	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "DISPOSITIVO_EMBARCADA_SEQ")
	@Column(name = "DISPOSITIVOEMBARCADA_ID")
	private Long dispositivoEmbarcadaId;
	@JoinColumn(name = "EMPRESA_ID", referencedColumnName = "EMPRESA_ID")
	@ManyToOne
	private Empresa empresa;
	@JoinColumn(name = "PUNTOVENTA_ID", referencedColumnName = "PUNTOVENTA_ID")
    @ManyToOne
    private PuntoVenta puntoVenta;
	@Column(name = "DESCRICAO")
	private String descricao;
	@Column(name = "REGISTRO")
	private String registro;
	@Column(name = "IMEI") 
	private String imei;
	@Column(name = "IND_DISP_BLOQUEADO") 
	private Boolean indDispBloqueado;
	@Column(name = "MOTIVO_DISP_BLOQUEADO") 
	private String motivoDispBloqueado;
	@Column(name = "IND_DISP_MANUTENCAO") 
	private Boolean indDispManutencao;
	@Column(name = "MOTIVO_DISP_MANUTENCAO") 
	private String motivoDispManutencao;
	@Column(name = "IND_DISP_BAIXADO") 
	private Boolean indDispBaixado;
	@Column(name = "MOTIVO_DISP_BAIXADO") 
	private String motivoDispBaixado;
	@Column(name = "ACTIVO")
	private Boolean activo;
	@Basic(optional = false)
	@Column(name = "FECMODIF")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecmodif;
	@OneToOne
    @JoinColumn(name = "USUARIO_ID", referencedColumnName = "USUARIO_ID")
    private Usuario usuario;
	
	@OneToMany(mappedBy="dispositivoEmbarcada", cascade = CascadeType.ALL, fetch = FetchType.LAZY)
	private List<CtrlSerieEmbarcada> series = new ArrayList<CtrlSerieEmbarcada>();
	
	@Column(name = "IND_VENDE_BPE") 
	private Boolean indVendeNaoBpe;
	
	@Column(name = "VERSAO")
	private String versaoUltimaSinc;
	
	@Column(name = "FECHORSINC")
	private Date dataUltimaSinc;
	
	public Long getDispositivoEmbarcadaId() {
		return dispositivoEmbarcadaId;
	}
	public void setDispositivoEmbarcadaId(Long dispositivoEmbarcadaId) {
		this.dispositivoEmbarcadaId = dispositivoEmbarcadaId;
	}
	
	public Empresa getEmpresa() {
		return empresa;
	}
	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}
	public PuntoVenta getPuntoVenta() {
		return puntoVenta;
	}
	public void setPuntoVenta(PuntoVenta puntoVenta) {
		this.puntoVenta = puntoVenta;
	}
	public String getDescricao() {
		return descricao;
	}
	public void setDescricao(String descricao) {
		this.descricao = descricao;
	}
	public String getRegistro() {
		return registro;
	}
	public void setRegistro(String registro) {
		this.registro = registro;
	}
	public String getImei() {
		return imei;
	}
	public void setImei(String imei) {
		this.imei = imei;
	}
	public Boolean getIndDispBloqueado() {
		return indDispBloqueado;
	}
	public void setIndDispBloqueado(Boolean indDispBloqueado) {
		this.indDispBloqueado = indDispBloqueado;
	}
	public String getMotivoDispBloqueado() {
		return motivoDispBloqueado;
	}
	public void setMotivoDispBloqueado(String motivoDispBloqueado) {
		this.motivoDispBloqueado = motivoDispBloqueado;
	}
	public Boolean getIndDispManutencao() {
		return indDispManutencao;
	}
	public void setIndDispManutencao(Boolean indDispManutencao) {
		this.indDispManutencao = indDispManutencao;
	}
	public String getMotivoDispManutencao() {
		return motivoDispManutencao;
	}
	public void setMotivoDispManutencao(String motivoDispManutencao) {
		this.motivoDispManutencao = motivoDispManutencao;
	}
	public Boolean getIndDispBaixado() {
		return indDispBaixado;
	}
	public void setIndDispBaixado(Boolean indDispBaixado) {
		this.indDispBaixado = indDispBaixado;
	}
	public String getMotivoDispBaixado() {
		return motivoDispBaixado;
	}
	public void setMotivoDispBaixado(String motivoDispBaixado) {
		this.motivoDispBaixado = motivoDispBaixado;
	}
	public Boolean getActivo() {
		return activo;
	}
	public void setActivo(Boolean activo) {
		this.activo = activo;
	}
	public Date getFecmodif() {
		return fecmodif;
	}
	public void setFecmodif(Date fecmodif) {
		this.fecmodif = fecmodif;
	}
	
	public Usuario getUsuario() {
		return usuario;
	}
	public void setUsuario(Usuario usuario) {
		this.usuario = usuario;
	}
	public List<CtrlSerieEmbarcada> getSeries() {
		return series;
	}
	public void setSeries(List<CtrlSerieEmbarcada> series) {
		this.series = series;
	}	

	public Boolean getIndVendeNaoBpe() {
		return indVendeNaoBpe;
	}
	public void setIndVendeNaoBpe(Boolean indVendeNaoBpe) {
		this.indVendeNaoBpe = indVendeNaoBpe;
	}
	public String getVersaoUltimaSinc() {
		return versaoUltimaSinc;
	}
	public void setVersaoUltimaSinc(String versaoUltimaSinc) {
		this.versaoUltimaSinc = versaoUltimaSinc;
	}
	public Date getDataUltimaSinc() {
		return dataUltimaSinc;
	}
	public void setDataUltimaSinc(Date dataUltimaSinc) {
		this.dataUltimaSinc = dataUltimaSinc;
	}
	@Override
	public String toString() {
		return this.getDescricao();
	}
}
