package com.jasamedika.medifirst2000.entities;

import java.util.Date;

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.Table;
import javax.validation.constraints.NotNull;

import com.fasterxml.jackson.annotation.JsonIgnoreProperties;
import com.jasamedika.medifirst2000.base.BaseMaster;
import com.jasamedika.medifirst2000.helper.Caption;

/**
 * class KeluargaPegawai
 * 
 * @author Lukman Hakim (lukman.uki@gmail.com)
 * @Date 31 Januari 2016
 * 
 */
@Entity // @Audited
@Table(name = "keluargapegawai_m")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class KeluargaPegawai extends BaseMaster {

	/**
	 * 
	 */
	//private static final long serialVersionUID = 4409764203082736662L;
	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.keluargapegawai_m_id_seq")
	@javax.persistence.SequenceGenerator(name = "public.keluargapegawai_m_id_seq", sequenceName = "public.keluargapegawai_m_id_seq", allocationSize = 1)
	@Column(name = "id")
	protected Integer id;

	public Integer getId() {
		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
	@Column(name = "NoUrut", nullable = true, length = 100)
	@Caption(value = "NoUrut")
	private String noUrut;
 
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "objectPegawaiFk")
	@Caption(value = "objectPegawaiFk")
	private Pegawai pegawai;
  
	@Column(name = "objectPegawaiFk", insertable = false, updatable = false, nullable = true)
	private Integer objectPegawaiFk;
	
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "objectKdHubunganFk")
	@Caption(value = "objectKdHubunganFk")
	private HubunganKeluarga hubunganKeluarga;
	
	@Column(name = "objectKdHubunganFk", insertable = false, updatable = false, nullable = true)
	private Integer objectKdHubunganFk;	
	
	@Caption(value = "Nama Lengkap")
	@NotNull(message = "Nama Lengkap tidak boleh kosong")
	@Column(name = "NamaLengkap", nullable = false, length = 40)
	private String namaLengkap;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectJenisKelaminFk")
	//@NotNull(message = "Object Jenis Kelamin Harus Diisi")
	@Caption(value = "Object Jenis Kelamin")
	private JenisKelamin jenisKelamin;

	@Column(name = "ObjectJenisKelaminFk", insertable = false, updatable = false, nullable = true)
	private Integer jenisKelaminId;

	@Column(name = "TglLahir", nullable = false)
	private Date tglLahir;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "objectPekerjaanFk")
	//@NotNull(message = "Object Pekerjaan Harus Diisi")
	@Caption(value = "Object Pekerjaan")
	private Pekerjaan pekerjaan;

	@Column(name = "objectPekerjaanFk", insertable = false, updatable = false, nullable = true)
	private Integer pekerjaanId;
	
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectPendidikanTerakhirFk")
	@Caption(value = "Object Pendidikan Terakhir")
	private Pendidikan pendidikan;

	@Column(name = "ObjectPendidikanTerakhirFk", insertable = false, updatable = false)
	private Integer pendidikanId;
	
	@Column(name = "keterangan", nullable = true)
	private String keterangan;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "statusTanggunganFk")
	@Caption(value = "statusTanggunganFk")
	private Tanggungan statusTanggungan;
	
	@Column(name = "statusTanggunganFk", insertable = false, updatable = false, nullable = true)
	private Integer statusTanggunganFk;	
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectStatusPerkawinanPegawaiFk")
	@Caption(value = "Object Status Perkawinan Pegawai")
	private StatusPerkawinanPegawai statusPerkawinanPegawai;

	@Column(name = "ObjectStatusPerkawinanPegawaiFk", insertable = false, updatable = false)
	private Integer statusPerkawinanPegawaiId;
	
	@Column(name = "NoSuratKuliah", nullable = true)
	private String noSuratKuliah;
	
	@Column(name = "TglsuratKuliah", nullable = true)
	private Date tglsuratKuliah;
	
	@Column(name = "TglNikah", nullable = true)
	private Date tglNikah;
	
	@Column(name = "TempatNikah", nullable = true)
	private String tempatNikah;
	
	@Column(name = "Namaayah", nullable = true)
	private String namaAyah;
	
	@Column(name = "NamaIbu", nullable = true)
	private String namaIbu;
	
	@Column(name = "NipIstriSuami", nullable = true)
	private String nipIstriSuami;
	
	@Column(name = "Alamat", nullable = true)
	private String alamat;

	public String getNoUrut() {
		return noUrut;
	}

	public void setNoUrut(String noUrut) {
		this.noUrut = noUrut;
	}

	 
	public String getNamaLengkap() {
		return namaLengkap;
	}

	public void setNamaLengkap(String namaLengkap) {
		this.namaLengkap = namaLengkap;
	}

	 
	public Date getTglLahir() {
		return tglLahir;
	}

	public void setTglLahir(Date tglLahir) {
		this.tglLahir = tglLahir;
	}

	 

	public String getKeterangan() {
		return keterangan;
	}

	public void setKeterangan(String keterangan) {
		this.keterangan = keterangan;
	}

 
	public Tanggungan getStatusTanggungan() {
		return statusTanggungan;
	}

	public void setStatusTanggungan(Tanggungan statusTanggungan) {
		this.statusTanggungan = statusTanggungan;
	}

	public Integer getStatusTanggunganFk() {
		return statusTanggunganFk;
	}

	public void setStatusTanggunganFk(Integer statusTanggunganFk) {
		this.statusTanggunganFk = statusTanggunganFk;
	}

	public String getNoSuratKuliah() {
		return noSuratKuliah;
	}

	public void setNoSuratKuliah(String noSuratKuliah) {
		this.noSuratKuliah = noSuratKuliah;
	}

	public Date getTglsuratKuliah() {
		return tglsuratKuliah;
	}

	public void setTglsuratKuliah(Date tglsuratKuliah) {
		this.tglsuratKuliah = tglsuratKuliah;
	}

	public Date getTglNikah() {
		return tglNikah;
	}

	public void setTglNikah(Date tglNikah) {
		this.tglNikah = tglNikah;
	}

	public String getTempatNikah() {
		return tempatNikah;
	}

	public void setTempatNikah(String tempatNikah) {
		this.tempatNikah = tempatNikah;
	}

	public String getNamaAyah() {
		return namaAyah;
	}

	public void setNamaAyah(String namaAyah) {
		this.namaAyah = namaAyah;
	}

	public String getNamaIbu() {
		return namaIbu;
	}

	public void setNamaIbu(String namaIbu) {
		this.namaIbu = namaIbu;
	}

	public String getNipIstriSuami() {
		return nipIstriSuami;
	}

	public void setNipIstriSuami(String nipIstriSuami) {
		this.nipIstriSuami = nipIstriSuami;
	}

	public String getAlamat() {
		return alamat;
	}

	public void setAlamat(String alamat) {
		this.alamat = alamat;
	}

	public Pegawai getPegawai() {
		return pegawai;
	}

	public void setPegawai(Pegawai pegawai) {
		this.pegawai = pegawai;
	}

	public Integer getObjectPegawaiFk() {
		return objectPegawaiFk;
	}

	public void setObjectPegawaiFk(Integer objectPegawaiFk) {
		this.objectPegawaiFk = objectPegawaiFk;
	}

	public HubunganKeluarga getHubunganKeluarga() {
		return hubunganKeluarga;
	}

	public void setHubunganKeluarga(HubunganKeluarga hubunganKeluarga) {
		this.hubunganKeluarga = hubunganKeluarga;
	}

	public Integer getObjectKdHubunganFk() {
		return objectKdHubunganFk;
	}

	public void setObjectKdHubunganFk(Integer objectKdHubunganFk) {
		this.objectKdHubunganFk = objectKdHubunganFk;
	}

	public JenisKelamin getJenisKelamin() {
		return jenisKelamin;
	}

	public void setJenisKelamin(JenisKelamin jenisKelamin) {
		this.jenisKelamin = jenisKelamin;
	}

	public Integer getJenisKelaminId() {
		return jenisKelaminId;
	}

	public void setJenisKelaminId(Integer jenisKelaminId) {
		this.jenisKelaminId = jenisKelaminId;
	}

	public Pekerjaan getPekerjaan() {
		return pekerjaan;
	}

	public void setPekerjaan(Pekerjaan pekerjaan) {
		this.pekerjaan = pekerjaan;
	}

	public Integer getPekerjaanId() {
		return pekerjaanId;
	}

	public void setPekerjaanId(Integer pekerjaanId) {
		this.pekerjaanId = pekerjaanId;
	}

	public Pendidikan getPendidikan() {
		return pendidikan;
	}

	public void setPendidikan(Pendidikan pendidikan) {
		this.pendidikan = pendidikan;
	}

	public Integer getPendidikanId() {
		return pendidikanId;
	}

	public void setPendidikanId(Integer pendidikanId) {
		this.pendidikanId = pendidikanId;
	}

	public StatusPerkawinanPegawai getStatusPerkawinanPegawai() {
		return statusPerkawinanPegawai;
	}

	public void setStatusPerkawinanPegawai(
			StatusPerkawinanPegawai statusPerkawinanPegawai) {
		this.statusPerkawinanPegawai = statusPerkawinanPegawai;
	}

	public Integer getStatusPerkawinanPegawaiId() {
		return statusPerkawinanPegawaiId;
	}

	public void setStatusPerkawinanPegawaiId(Integer statusPerkawinanPegawaiId) {
		this.statusPerkawinanPegawaiId = statusPerkawinanPegawaiId;
	}
	
	/******************/
	
	

}
