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

import org.hibernate.annotations.GenericGenerator;

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

@Entity
@Table (name = "HistoriPelayananCs_T")
public class HistoriPelayananCs extends BaseTransaction{
	
	@Caption(value = "No Histori")
	@Column(name = "NoHistori", length = 10, nullable = false)
	private String noHistori;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectRuanganTujuanFk")
	@NotNull(message = "Kd ruangan tidak boleh kosong")
	@Caption(value = "Object Ruangan Tujuan")
	private Ruangan ruanganTujuan;

	@Column(name = "ObjectRuanganTujuanFk", insertable = false, updatable = false, nullable = false)
	private Integer ruanganTujuanId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiTujuanFk")
	@NotNull(message = "Kd pegawai Tujuan tidak boleh kosong")
	@Caption(value = "Object Pegawai Tujuan")
	private Pegawai pegawaiTujuan;
	
	@Column(name = "ObjectPegawaiTujuanFk", insertable = false, updatable = false, nullable = false)
	private Integer pegawaiTujuanId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectJenisResponFk")
	@NotNull(message = "Jenis Respon tidak boleh kosong")
	@Caption(value = "Object Jenis Respon")
	private JenisRespon jenisRespon;
	
	@Column(name = "ObjectJenisResponFk", insertable = false, updatable = false, nullable = false)
	private Integer jenisResponId;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectKelompokTransaksiFk")
	@Caption(value = "Object Kelompok Transaksi")
	private KelompokTransaksi kelompokTransaksi;

	@Column(name = "ObjectKelompokTransaksiFk", insertable = false, updatable = false)
	private Integer kelompokTransaksiId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectKomunikasiFk")
	@Caption(value = "Object Komunikasi")
	private Komunikasi komunikasi;
	
	@Column(name = "ObjectKomunikasiFk", insertable = false, updatable = false, nullable = true)
	private Integer komunikasiId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "NoCMFk")
	@Caption(value="No CM")
	private Pasien noCM;

	@Column(name = "NoCMFk", insertable = false, updatable = false, nullable = true)
	private Integer NoCMId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectAlamatCustomerFk")
	@Caption(value="Object Alamat Customer")
	private Alamat alamatCustomer;

	@Column(name = "ObjectAlamatCustomerFk", insertable = false, updatable = false, nullable = true)
	private Integer ObjectAlamatCustomerId;
	
	/*
	//akan di disable karena alama pegawai langsung dari pegawai
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectAlamatCsFk")
	@Caption(value="Object Alamat CS")
	private Alamat alamatCs;
	*/
	@Column(name = "ObjectAlamatCsId")
	private Integer ObjectAlamatCsId;
	
	@Column(name = "DetailRespon")
	@Caption(value = "Detail Respon")
	private String detailRespon;
	
	@Column(name = "Deskripsi")
	@Caption(value = "Deskripsi")
	private String deskripsi;
	
	@Caption(value = "Tgl Pelayanan Awal")
	@Column(name = "TglPelayananAwal", nullable = true)
	private Date tglPelayananAwal;
	
	@Caption(value = "Tgl Pelayanan Akhir")
	@Column(name = "TglPelayananAkhir", nullable = true)
	private Date tglPelayananAkhir;
	
	@Column(name = "Keterangan")
	@Caption(value = "Keterangan")
	private String keterangan;
	
	@Caption(value = " Kode Produk")
	@Column(name = "kdProduk")
	private Integer kdProduk;

	@Caption(value = "Nama Customer")
	@Column(name = "NamaCustomer", nullable = false, length = 80)
	private String namaCustomer;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectJenisKelaminFk")
	@Caption(value = "Object Jenis Kelamin")
	private JenisKelamin kelamin;
	
	@Column(name = "ObjectJenisKelaminFk", insertable = false, updatable = false, nullable = true)
	private Integer jenisKelaminId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name = "ObjectKelompokProdukFk")
	@Caption(value="Object Kelompok Produk")
	private KelompokProduk kelompokProduk;
	
	@Column(name = "ObjectKelompokProdukFk", insertable = false, updatable = false, nullable = true)
	private Integer kelompokProdukId;
	
	@Caption(value = "Tgl Lahir")
	@Column(name = "TglLahir", nullable = true)
	private Date tglLahir;
	
	@Caption(value = "Is Cito")
	@Column(name = "IsCito")
	private Integer isCito;
	
	@Caption(value = "Is Pelayanan")
	@Column(name = "IsPelayanan")
	private Integer isPelayanan;

	public String getNoHistori() {
		return noHistori;
	}

	public void setNoHistori(String noHistori) {
		this.noHistori = noHistori;
	}

	public Ruangan getRuanganTujuan() {
		return ruanganTujuan;
	}

	public void setRuanganTujuan(Ruangan ruanganTujuan) {
		this.ruanganTujuan = ruanganTujuan;
	}

	public Integer getRuanganTujuanId() {
		return ruanganTujuanId;
	}

	public void setRuanganTujuanId(Integer ruanganTujuanId) {
		this.ruanganTujuanId = ruanganTujuanId;
	}

	public Pegawai getPegawaiTujuan() {
		return pegawaiTujuan;
	}

	public void setPegawaiTujuan(Pegawai pegawaiTujuan) {
		this.pegawaiTujuan = pegawaiTujuan;
	}

	public Integer getPegawaiTujuanId() {
		return pegawaiTujuanId;
	}

	public void setPegawaiTujuanId(Integer pegawaiTujuanId) {
		this.pegawaiTujuanId = pegawaiTujuanId;
	}

	public JenisRespon getJenisRespon() {
		return jenisRespon;
	}

	public void setJenisRespon(JenisRespon jenisRespon) {
		this.jenisRespon = jenisRespon;
	}

	public Integer getJenisResponId() {
		return jenisResponId;
	}

	public void setJenisResponId(Integer jenisResponId) {
		this.jenisResponId = jenisResponId;
	}

	public Komunikasi getKomunikasi() {
		return komunikasi;
	}

	public void setKomunikasi(Komunikasi komunikasi) {
		this.komunikasi = komunikasi;
	}

	public Integer getKomunikasiId() {
		return komunikasiId;
	}

	public void setKomunikasiId(Integer komunikasiId) {
		this.komunikasiId = komunikasiId;
	}

	public String getDetailRespon() {
		return detailRespon;
	}

	public void setDetailRespon(String detailRespon) {
		this.detailRespon = detailRespon;
	}

	public String getDeskripsi() {
		return deskripsi;
	}

	public void setDeskripsi(String deskripsi) {
		this.deskripsi = deskripsi;
	}

	public Date getTglPelayananAwal() {
		return tglPelayananAwal;
	}

	public void setTglPelayananAwal(Date tglPelayananAwal) {
		this.tglPelayananAwal = tglPelayananAwal;
	}

	public Date getTglPelayananAkhir() {
		return tglPelayananAkhir;
	}

	public void setTglPelayananAkhir(Date tglPelayananAkhir) {
		this.tglPelayananAkhir = tglPelayananAkhir;
	}

	public String getKeterangan() {
		return keterangan;
	}

	public void setKeterangan(String keterangan) {
		this.keterangan = keterangan;
	}
	
	public Integer getKdProduk() {
		return kdProduk;
	}

	public void setKdProduk(Integer kdProduk) {
		this.kdProduk = kdProduk;
	}

	public String getNamaCustomer() {
		return namaCustomer;
	}

	public void setNamaCustomer(String namaCustomer) {
		this.namaCustomer = namaCustomer;
	}

	public JenisKelamin getKelamin() {
		return kelamin;
	}

	public void setKelamin(JenisKelamin kelamin) {
		this.kelamin = kelamin;
	}

	public Integer getJenisKelaminId() {
		return jenisKelaminId;
	}

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

	public Date getTglLahir() {
		return tglLahir;
	}

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

	public Integer getIsCito() {
		return isCito;
	}

	public void setIsCito(Integer isCito) {
		this.isCito = isCito;
	}

	public Integer getIsPelayanan() {
		return isPelayanan;
	}

	public void setIsPelayanan(Integer isPelayanan) {
		this.isPelayanan = isPelayanan;
	}

	public Alamat getAlamatCustomer() {
		return alamatCustomer;
	}

	public void setAlamatCustomer(Alamat alamatCustomer) {
		this.alamatCustomer = alamatCustomer;
	}

	public Integer getObjectAlamatCustomerId() {
		return ObjectAlamatCustomerId;
	}

	public void setObjectAlamatCustomerId(Integer objectAlamatCustomerId) {
		ObjectAlamatCustomerId = objectAlamatCustomerId;
	}
/*
	public Alamat getAlamatCs() {
		return alamatCs;
	}

	public void setAlamatCs(Alamat alamatCs) {
		this.alamatCs = alamatCs;
	}

	public Integer getObjectAlamatCsId() {
		return ObjectAlamatCsId;
	}
*/
	public void setObjectAlamatCsId(Integer objectAlamatCsId) {
		ObjectAlamatCsId = objectAlamatCsId;
	}

	
/*
	public Pasien getPasien() {
		return pasien;
	}

	public void setPasien(Pasien pasien) {
		this.pasien = pasien;
	}
*/
	public Integer getNoCMId() {
		return NoCMId;
	}

	public void setNoCMId(Integer noCMId) {
		NoCMId = noCMId;
	}

	public KelompokTransaksi getKelompokTransaksi() {
		return kelompokTransaksi;
	}

	public void setKelompokTransaksi(KelompokTransaksi kelompokTransaksi) {
		this.kelompokTransaksi = kelompokTransaksi;
	}

	public Integer getKelompokTransaksiId() {
		return kelompokTransaksiId;
	}

	public void setKelompokTransaksiId(Integer kelompokTransaksiId) {
		this.kelompokTransaksiId = kelompokTransaksiId;
	}

	public Integer getObjectAlamatCsId() {
		return ObjectAlamatCsId;
	}

	public Pasien getNoCM() {
		return noCM;
	}

	public void setNoCM(Pasien noCM) {
		this.noCM = noCM;
	}

	public KelompokProduk getKelompokProduk() {
		return kelompokProduk;
	}

	public void setKelompokProduk(KelompokProduk kelompokProduk) {
		this.kelompokProduk = kelompokProduk;
	}

	public Integer getKelompokProdukId() {
		return kelompokProdukId;
	}

	public void setKelompokProdukId(Integer kelompokProdukId) {
		this.kelompokProdukId = kelompokProdukId;
	}
	
	
	
}
