/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package com.rjconsultores.ventaboletos.entidad;

import java.io.Serializable;
import java.util.Date;
import javax.persistence.Basic;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

/**
 *
 * @author Shiro
 */
@Entity
@SequenceGenerator(name = "EMPLEADO_SEQ", sequenceName = "EMPLEADO_SEQ", allocationSize = 1)
@Table(name = "EMPLEADO")
public class Empleado implements Serializable {

	private static final long serialVersionUID = 1L;
	@Id
	@Basic(optional = false)
	@GeneratedValue(strategy = GenerationType.AUTO, generator = "EMPLEADO_SEQ")
	@Column(name = "EMPLEADO_ID")
	private Integer empleadoId;
	@Column(name = "CVEEMPLEADO")
	private String cveEmpleado;
	@Column(name = "NOMBEMPLEADO")
	private String nombEmpleado;
	@Column(name = "NOMBPATERNO")
	private String nombPaterno;
	@Column(name = "NOMBMATERNO")
	private String nombMaterno;
	@Column(name = "FECNACIMIENTO")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecNacimiento;
	@Column(name = "FECINGRESO")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecIngreso;
	@Column(name = "FECBAJA")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecBaja;
	@Column(name = "ACTIVO")
	private Boolean activo;
	@Column(name = "FECMODIF")
	@Temporal(TemporalType.TIMESTAMP)
	private Date fecmodif;
	@Column(name = "USUARIO_ID")
	private Integer usuarioId;
	@Column(name = "DESCCALLE")
	private String descCalle;
	@Column(name = "NUMEXTINT")
	private String numExtInt;
	@Column(name = "CODPOSTAL")
	private String codPostal;
	@Column(name = "DESCCORREO")
	private String desccorreo;

	@JoinColumn(name = "TIPOEMPLEADO_ID", referencedColumnName = "TIPOEMPLEADO_ID")
	@ManyToOne
	private TipoEmpleado tipoEmpleado;
	@JoinColumn(name = "EMPRESA_ID", referencedColumnName = "EMPRESA_ID")
	@ManyToOne
	private Empresa empresa;

	public Empleado() {
		super();
	}

	public Empleado(Integer empleadoId) {
		this();
		this.empleadoId = empleadoId;
	}

	public Empleado(Integer empleadoId, String nombEmpleado) {
		this();
		this.empleadoId = empleadoId;
		this.nombEmpleado = nombEmpleado;
	}

	public Empleado(Integer empleadoId, Date fecmodif) {
		this();
		this.empleadoId = empleadoId;
		this.fecmodif = fecmodif;
	}

	public Boolean getActivo() {
		return activo;
	}

	public void setActivo(Boolean activo) {
		this.activo = activo;
	}

	public String getCveEmpleado() {
		return cveEmpleado;
	}

	public void setCveEmpleado(String cveEmpleado) {
		this.cveEmpleado = cveEmpleado;
	}

	public Integer getEmpleadoId() {
		return empleadoId;
	}

	public void setEmpleadoId(Integer empleadoId) {
		this.empleadoId = empleadoId;
	}

	public Empresa getEmpresa() {
		return empresa;
	}

	public void setEmpresa(Empresa empresa) {
		this.empresa = empresa;
	}

	public Date getFecBaja() {
		return fecBaja;
	}

	public void setFecBaja(Date fecBaja) {
		this.fecBaja = fecBaja;
	}

	public Date getFecIngreso() {
		return fecIngreso;
	}

	public void setFecIngreso(Date fecIngreso) {
		this.fecIngreso = fecIngreso;
	}

	public Date getFecNacimiento() {
		return fecNacimiento;
	}

	public void setFecNacimiento(Date fecNacimiento) {
		this.fecNacimiento = fecNacimiento;
	}

	public Date getFecmodif() {
		return fecmodif;
	}

	public void setFecmodif(Date fecmodif) {
		this.fecmodif = fecmodif;
	}

	public String getNombEmpleado() {
		return nombEmpleado;
	}

	public void setNombEmpleado(String nombEmpleado) {
		this.nombEmpleado = nombEmpleado;
	}

	public String getNombMaterno() {
		return nombMaterno;
	}

	public void setNombMaterno(String nombMaterno) {
		this.nombMaterno = nombMaterno;
	}

	public String getNombPaterno() {
		return nombPaterno;
	}

	public void setNombPaterno(String nombPaterno) {
		this.nombPaterno = nombPaterno;
	}

	public TipoEmpleado getTipoEmpleado() {
		return tipoEmpleado;
	}

	public void setTipoEmpleado(TipoEmpleado tipoEmpleado) {
		this.tipoEmpleado = tipoEmpleado;
	}

	public Integer getUsuarioId() {
		return usuarioId;
	}

	public void setUsuarioId(Integer usuarioId) {
		this.usuarioId = usuarioId;
	}

	public String getDescCalle() {
		return descCalle;
	}

	public void setDescCalle(String descCalle) {
		this.descCalle = descCalle;
	}

	public String getNumExtInt() {
		return numExtInt;
	}

	public void setNumExtInt(String numExtInt) {
		this.numExtInt = numExtInt;
	}

	public String getCodPostal() {
		return codPostal;
	}

	public void setCodPostal(String codPostal) {
		this.codPostal = codPostal;
	}

	public String getDesccorreo() {
		return desccorreo;
	}

	public void setDesccorreo(String desccorreo) {
		this.desccorreo = desccorreo;
	}

	@Override
	public int hashCode() {
		int hash = 0;
		hash += (empleadoId != null ? empleadoId.hashCode() : 0);
		return hash;
	}

	@Override
	public boolean equals(Object object) {
		// TODO: Warning - this method won't work in the case the id fields are not set
		if (!(object instanceof Empleado)) {
			return false;
		}
		Empleado other = (Empleado) object;
		if ((this.empleadoId == null && other.empleadoId != null) || (this.empleadoId != null && !this.empleadoId.equals(other.empleadoId))) {
			return false;
		}
		return true;
	}

	@Override
	public String toString() {
		String nombMaterno = getNombMaterno() != null ? getNombMaterno() : "";
		String nombPaterno = getNombPaterno() != null ? getNombPaterno() : "";
		return getNombEmpleado() + " " + nombMaterno + " " + nombPaterno;
	}

}
