package com.jasamedika.medifirst2000.entities;

import java.util.Date;
import java.util.HashSet;
import java.util.Set;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.Table;
import javax.validation.constraints.NotNull;

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

@Entity
@Table(name="LkkIdentifikasiKorban_T")
@JsonIgnoreProperties({"hibernateLazyInitializer", "handler"})
public class LkkIdentifikasiKorban extends BaseTransaction{

	@ManyToOne(fetch=FetchType.LAZY)
	@Caption(value="LkkIdentifikasiKejadian")
	@JoinColumn(name="ObjectLkkIdentifikasiKejadianFk")
	private LkkIdentifikasiKejadian lkkIdentifikasiKejadian;
	
	@Column(name="ObjectLkkIdentifikasiKejadianFk", nullable=true, insertable=false, updatable=false)
	private String lkkIdentifikasiKejadianId;
	
	@NotNull(message="Nama Korban tidak boleh kosong")
	@Caption(value="Nama Korban")
	@Column(name="NamaKorban", nullable=false, length=100)
	private String namaKorban;
	
	@Caption(value="N.I Kependudukan")
	@Column(name="NiKependudukan", nullable=true, length=50)
	private String niKependudukan;
	
	@Caption(value="Tempat Lahir")
	@Column(name="TempatLahir", nullable=true, length=50)
	private String tempatLahir;
	
	@Caption(value="Tgl Lahir")
	@Column(name="TglLahir", nullable=true)
	private Date tglLahir;
	
	@NotNull(message="Jenis Kelamin tidak boleh kosong")
	@Caption(value="Jenis Kelamin")
	@Column(name="JenisKelamin", nullable=false, length=20)
	private String jenisKelamin;
	
	@Caption(value="Status Pekerjaan")
	@Column(name="StatusPekerjaan", nullable=true)
	private String statusPekerjaan;
	
	@Caption(value="Status Jabatan")
	@Column(name="StatusJabatan", nullable=true)
	private String statusJabatan;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@Caption(value="Unit Ruangan")
	@JoinColumn(name="ObjectUnitRuanganFk")
	private Ruangan unitRuangan;
	
	@JsonBackReference
	@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lkkIdentifikasiKorban")
	private LkkRencanaTindakLanjut lkkRencanaTindakLanjut;
	
	@JsonBackReference
	@OneToOne(cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "lkkIdentifikasiKorban")
	private LkkPerkiraanKerugian lkkPerkiraanKerugian;

	public LkkIdentifikasiKejadian getLkkIdentifikasiKejadian() {
		return lkkIdentifikasiKejadian;
	}

	public void setLkkIdentifikasiKejadian(LkkIdentifikasiKejadian lkkIdentifikasiKejadian) {
		this.lkkIdentifikasiKejadian = lkkIdentifikasiKejadian;
	}

	public String getLkkIdentifikasiKejadianId() {
		return lkkIdentifikasiKejadianId;
	}

	public void setLkkIdentifikasiKejadianId(String lkkIdentifikasiKejadianId) {
		this.lkkIdentifikasiKejadianId = lkkIdentifikasiKejadianId;
	}

	public String getNamaKorban() {
		return namaKorban;
	}

	public void setNamaKorban(String namaKorban) {
		this.namaKorban = namaKorban;
	}

	public String getNiKependudukan() {
		return niKependudukan;
	}

	public void setNiKependudukan(String niKependudukan) {
		this.niKependudukan = niKependudukan;
	}

	public String getTempatLahir() {
		return tempatLahir;
	}

	public void setTempatLahir(String tempatLahir) {
		this.tempatLahir = tempatLahir;
	}

	public Date getTglLahir() {
		return tglLahir;
	}

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

	public String getJenisKelamin() {
		return jenisKelamin;
	}

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

	public String getStatusPekerjaan() {
		return statusPekerjaan;
	}

	public void setStatusPekerjaan(String statusPekerjaan) {
		this.statusPekerjaan = statusPekerjaan;
	}

	public String getStatusJabatan() {
		return statusJabatan;
	}

	public void setStatusJabatan(String statusJabatan) {
		this.statusJabatan = statusJabatan;
	}

	public Ruangan getUnitRuangan() {
		return unitRuangan;
	}

	public void setUnitRuangan(Ruangan unitRuangan) {
		this.unitRuangan = unitRuangan;
	}

	public LkkRencanaTindakLanjut getLkkRencanaTindakLanjut() {
		return lkkRencanaTindakLanjut;
	}

	public void setLkkRencanaTindakLanjut(LkkRencanaTindakLanjut lkkRencanaTindakLanjut) {
		this.lkkRencanaTindakLanjut = lkkRencanaTindakLanjut;
	}

	public LkkPerkiraanKerugian getLkkPerkiraanKerugian() {
		return lkkPerkiraanKerugian;
	}

	public void setLkkPerkiraanKerugian(LkkPerkiraanKerugian lkkPerkiraanKerugian) {
		this.lkkPerkiraanKerugian = lkkPerkiraanKerugian;
	}

	
}
