package com.jasamedika.medifirst2000.entities;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
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;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;

/**
 * class Departemen
 * 
 * @author Generator
 */
@Entity
@Table(name = "Departemen_M")
@JsonIgnoreProperties({ "hibernateLazyInitializer", "handler" })
public class Departemen extends BaseMaster {
	@Caption(value = "Alamat Email")
	private String alamatEmail;

	public void setAlamatEmail(String alamatEmail) {
		this.alamatEmail = alamatEmail;
	}

	@Column(name = "AlamatEmail", nullable = true, length = 50)
	public String getAlamatEmail() {
		return this.alamatEmail;
	}

	@Caption(value = "Faksimile")
	private String faksimile;

	public void setFaksimile(String faksimile) {
		this.faksimile = faksimile;
	}

	@Column(name = "Faksimile", nullable = true, length = 30)
	public String getFaksimile() {
		return this.faksimile;
	}

	@Caption(value = "Fixed Phone")
	private String fixedPhone;

	public void setFixedPhone(String fixedPhone) {
		this.fixedPhone = fixedPhone;
	}

	@Column(name = "FixedPhone", nullable = true, length = 30)
	public String getFixedPhone() {
		return this.fixedPhone;
	}

	@Caption(value = "Kode Departemen")
	private String kdDepartemen;

	public void setKdDepartemen(String kdDepartemen) {
		this.kdDepartemen = kdDepartemen;
	}

	@NotNull(message = "Kd Departemen tidak boleh kosong")
	@Column(name = "KdDepartemen", nullable = true, length = 1)
	public String getKdDepartemen() {
		return this.kdDepartemen;
	}

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectJenisPerawatanFk")
	@NotNull(message = "Object Jenis Perawatan Harus Diisi")
	@Caption(value = "Object Jenis Perawatan")
	private JenisPerawatan jenisPerawatan;

	public void setJenisPerawatan(JenisPerawatan jenisPerawatan) {
		this.jenisPerawatan = jenisPerawatan;
	}

	@NotNull(message = "Kd Jenis Perawatan tidak boleh kosong")

	public JenisPerawatan getJenisPerawatan() {
		return this.jenisPerawatan;
	}

	@Column(name = "ObjectJenisPerawatanFk", insertable = false, updatable = false)
	private Integer jenisPerawatanId;

	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name = "ObjectPegawaiKepalaFk")
	@Caption(value = "Object Pegawai Kepala")
	private LoginUser pegawaiKepala;

	public void setPegawaiKepala(LoginUser pegawaiKepala) {
		this.pegawaiKepala = pegawaiKepala;
	}

	public LoginUser getPegawaiKepala() {
		return this.pegawaiKepala;
	}

	@Column(name = "ObjectPegawaiKepalaFk", insertable = false, updatable = false)
	private Integer pegawaiKepalaId;

	@Caption(value = "Mobile Phone")
	private String mobilePhone;

	public void setMobilePhone(String mobilePhone) {
		this.mobilePhone = mobilePhone;
	}

	@Column(name = "MobilePhone", nullable = true, length = 30)
	public String getMobilePhone() {
		return this.mobilePhone;
	}

	@Caption(value = "Nama Departemen")
	private String namaDepartemen;

	public void setNamaDepartemen(String namaDepartemen) {
		this.namaDepartemen = namaDepartemen;
	}

	@NotNull(message = "Nama Departemen tidak boleh kosong")
	@Column(name = "NamaDepartemen", nullable = true, length = 50)
	public String getNamaDepartemen() {
		return this.namaDepartemen;
	}

	@Caption(value = "Prefix No Antrian")
	private String prefixNoAntrian;

	public void setPrefixNoAntrian(String prefixNoAntrian) {
		this.prefixNoAntrian = prefixNoAntrian;
	}

	@Column(name = "PrefixNoAntrian", nullable = true, length = 4)
	public String getPrefixNoAntrian() {
		return this.prefixNoAntrian;
	}

	@Caption(value = "QDepartemen")
	private Byte qDepartemen;

	public void setqDepartemen(Byte qDepartemen) {
		this.qDepartemen = qDepartemen;
	}

	@NotNull(message = "QDepartemen tidak boleh kosong")
	@Column(name = "QDepartemen", nullable = true)
	public Byte getqDepartemen() {
		return this.qDepartemen;
	}

	@Caption(value = "Website")
	private String website;

	public void setWebsite(String website) {
		this.website = website;
	}

	@Column(name = "Website", nullable = true, length = 80)
	public String getWebsite() {
		return this.website;
	}

	public Departemen(String kdDepartemen, String namaDepartemen, Integer id) {
		super();
		this.kdDepartemen = kdDepartemen;
		this.namaDepartemen = namaDepartemen;
		this.id = id;
	}

	public Departemen() {
		super();
	}

	/*
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<AlatKesehatan> AlatKesehatanSet = new
	 * HashSet<AlatKesehatan>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<AsalPeserta> AsalPesertaSet = new
	 * HashSet<AsalPeserta>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<AsalProduk> AsalProdukSet = new
	 * HashSet<AsalProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<BahanProduk> BahanProdukSet = new
	 * HashSet<BahanProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<BentukProduk> BentukProdukSet = new
	 * HashSet<BentukProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<DetailGolonganProduk> DetailGolonganProdukSet
	 * = new HashSet<DetailGolonganProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<DetailJenisProduk> DetailJenisProdukSet = new
	 * HashSet<DetailJenisProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<FungsiProduk> FungsiProdukSet = new
	 * HashSet<FungsiProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<GeneralDetailJenisProduk>
	 * GeneralDetailJenisProdukSet = new HashSet<GeneralDetailJenisProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<GeneralJenisProduk> GeneralJenisProdukSet =
	 * new HashSet<GeneralJenisProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<GeneralKelompokProduk>
	 * GeneralKelompokProdukSet = new HashSet<GeneralKelompokProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<GeneralProduk> GeneralProdukSet = new
	 * HashSet<GeneralProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<GolonganProduk> GolonganProdukSet = new
	 * HashSet<GolonganProduk>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisAlatKesehatan> JenisAlatKesehatanSet =
	 * new HashSet<JenisAlatKesehatan>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisAset> JenisAsetSet = new
	 * HashSet<JenisAset>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisDokumen> JenisDokumenSet = new
	 * HashSet<JenisDokumen>();
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisOrder> JenisOrderSet = new
	 * HashSet<JenisOrder>();
	 * 
	 * public Set<JenisOrder> getJenisOrderSet() { return JenisOrderSet; }
	 * 
	 * public void setJenisOrderSet(Set<JenisOrder> jenisOrderSet) {
	 * JenisOrderSet = jenisOrderSet; }
	 * 
	 * public Set<JenisDokumen> getJenisDokumenSet() { return JenisDokumenSet; }
	 * 
	 * public void setJenisDokumenSet(Set<JenisDokumen> jenisDokumenSet) {
	 * JenisDokumenSet = jenisDokumenSet; }
	 * 
	 * public Set<JenisAset> getJenisAsetSet() { return JenisAsetSet; }
	 * 
	 * public void setJenisAsetSet(Set<JenisAset> jenisAsetSet) { JenisAsetSet =
	 * jenisAsetSet; }
	 * 
	 * public Set<JenisAlatKesehatan> getJenisAlatKesehatanSet() { return
	 * JenisAlatKesehatanSet; }
	 * 
	 * public void setJenisAlatKesehatanSet(Set<JenisAlatKesehatan>
	 * jenisAlatKesehatanSet) { JenisAlatKesehatanSet = jenisAlatKesehatanSet; }
	 * 
	 * public Set<GolonganProduk> getGolonganProdukSet() { return
	 * GolonganProdukSet; }
	 * 
	 * public void setGolonganProdukSet(Set<GolonganProduk> golonganProdukSet) {
	 * GolonganProdukSet = golonganProdukSet; }
	 * 
	 * public Set<GeneralProduk> getGeneralProdukSet() { return
	 * GeneralProdukSet; }
	 * 
	 * public void setGeneralProdukSet(Set<GeneralProduk> generalProdukSet) {
	 * GeneralProdukSet = generalProdukSet; }
	 * 
	 * public Set<GeneralJenisProduk> getGeneralJenisProdukSet() { return
	 * GeneralJenisProdukSet; }
	 * 
	 * public void setGeneralJenisProdukSet(Set<GeneralJenisProduk>
	 * generalJenisProdukSet) { GeneralJenisProdukSet = generalJenisProdukSet; }
	 * 
	 * public Set<GeneralKelompokProduk> getGeneralKelompokProdukSet() { return
	 * GeneralKelompokProdukSet; }
	 * 
	 * public void setGeneralKelompokProdukSet(Set<GeneralKelompokProduk>
	 * generalKelompokProdukSet) { GeneralKelompokProdukSet =
	 * generalKelompokProdukSet; }
	 * 
	 * public Set<GeneralDetailJenisProduk> getGeneralDetailJenisProdukSet() {
	 * return GeneralDetailJenisProdukSet; }
	 * 
	 * public void setGeneralDetailJenisProdukSet(Set<GeneralDetailJenisProduk>
	 * generalDetailJenisProdukSet) { GeneralDetailJenisProdukSet =
	 * generalDetailJenisProdukSet; }
	 * 
	 * public Set<FungsiProduk> getFungsiProdukSet() { return FungsiProdukSet; }
	 * 
	 * public void setFungsiProdukSet(Set<FungsiProduk> fungsiProdukSet) {
	 * FungsiProdukSet = fungsiProdukSet; }
	 * 
	 * public Set<DetailJenisProduk> getDetailJenisProdukSet() { return
	 * DetailJenisProdukSet; }
	 * 
	 * public void setDetailJenisProdukSet(Set<DetailJenisProduk>
	 * detailJenisProdukSet) { DetailJenisProdukSet = detailJenisProdukSet; }
	 * 
	 * public Set<DetailGolonganProduk> getDetailGolonganProdukSet() { return
	 * DetailGolonganProdukSet; }
	 * 
	 * public void setDetailGolonganProdukSet(Set<DetailGolonganProduk>
	 * detailGolonganProdukSet) { DetailGolonganProdukSet =
	 * detailGolonganProdukSet; }
	 * 
	 * public Set<BentukProduk> getBentukProdukSet() { return BentukProdukSet; }
	 * 
	 * public void setBentukProdukSet(Set<BentukProduk> bentukProdukSet) {
	 * BentukProdukSet = bentukProdukSet; }
	 * 
	 * public Set<BahanProduk> getBahanProdukSet() { return BahanProdukSet; }
	 * 
	 * public void setBahanProdukSet(Set<BahanProduk> bahanProdukSet) {
	 * BahanProdukSet = bahanProdukSet; }
	 * 
	 * public Set<AlatKesehatan> getAlatKesehatanSet() { return
	 * AlatKesehatanSet; }
	 * 
	 * public void setAlatKesehatanSet(Set<AlatKesehatan> alatKesehatanSet) {
	 * AlatKesehatanSet = alatKesehatanSet; }
	 * 
	 * public Set<AsalPeserta> getAsalPesertaSet() { return AsalPesertaSet; }
	 * 
	 * public void setAsalPesertaSet(Set<AsalPeserta> asalPesertaSet) {
	 * AsalPesertaSet = asalPesertaSet; }
	 * 
	 * public Set<AsalProduk> getAsalProdukSet() { return AsalProdukSet; }
	 * 
	 * public void setAsalProdukSet(Set<AsalProduk> asalProdukSet) {
	 * AsalProdukSet = asalProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisKomponenHarga> JenisKomponenHargaSet =
	 * new HashSet<JenisKomponenHarga>();
	 * 
	 * public Set<JenisKomponenHarga> getJenisKomponenHargaSet() { return
	 * JenisKomponenHargaSet; }
	 * 
	 * public void setJenisKomponenHargaSet(Set<JenisKomponenHarga>
	 * jenisKomponenHargaSet) { JenisKomponenHargaSet = jenisKomponenHargaSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisPeriksaPenunjang>
	 * JenisPeriksaPenunjangSet = new HashSet<JenisPeriksaPenunjang>();
	 * 
	 * public Set<JenisPeriksaPenunjang> getJenisPeriksaPenunjangSet() { return
	 * JenisPeriksaPenunjangSet; }
	 * 
	 * public void setJenisPeriksaPenunjangSet(Set<JenisPeriksaPenunjang>
	 * jenisPeriksaPenunjangSet) { JenisPeriksaPenunjangSet =
	 * jenisPeriksaPenunjangSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisProduk> JenisProdukSet = new
	 * HashSet<JenisProduk>();
	 * 
	 * public Set<JenisProduk> getJenisProdukSet() { return JenisProdukSet; }
	 * 
	 * public void setJenisProdukSet(Set<JenisProduk> jenisProdukSet) {
	 * JenisProdukSet = jenisProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisTempat> JenisTempatSet = new
	 * HashSet<JenisTempat>();
	 * 
	 * public Set<JenisTempat> getJenisTempatSet() { return JenisTempatSet; }
	 * 
	 * public void setJenisTempatSet(Set<JenisTempat> jenisTempatSet) {
	 * JenisTempatSet = jenisTempatSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisTindakanMedis> JenisTindakanMedisSet =
	 * new HashSet<JenisTindakanMedis>();
	 * 
	 * public Set<JenisTindakanMedis> getJenisTindakanMedisSet() { return
	 * JenisTindakanMedisSet; }
	 * 
	 * public void setJenisTindakanMedisSet(Set<JenisTindakanMedis>
	 * jenisTindakanMedisSet) { JenisTindakanMedisSet = jenisTindakanMedisSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<JenisWaktu> JenisWaktuSet = new
	 * HashSet<JenisWaktu>();
	 * 
	 * public Set<JenisWaktu> getJenisWaktuSet() { return JenisWaktuSet; }
	 * 
	 * public void setJenisWaktuSet(Set<JenisWaktu> jenisWaktuSet) {
	 * JenisWaktuSet = jenisWaktuSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<KategoryProduk> KategoryProdukSet = new
	 * HashSet<KategoryProduk>();
	 * 
	 * public Set<KategoryProduk> getKategoryProdukSet() { return
	 * KategoryProdukSet; }
	 * 
	 * public void setKategoryProdukSet(Set<KategoryProduk> kategoryProdukSet) {
	 * KategoryProdukSet = kategoryProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<KelompokAset> KelompokAsetSet = new
	 * HashSet<KelompokAset>();
	 * 
	 * public Set<KelompokAset> getKelompokAsetSet() { return KelompokAsetSet; }
	 * 
	 * public void setKelompokAsetSet(Set<KelompokAset> kelompokAsetSet) {
	 * KelompokAsetSet = kelompokAsetSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<KelompokProduk> KelompokProdukSet = new
	 * HashSet<KelompokProduk>();
	 * 
	 * public Set<KelompokProduk> getKelompokProdukSet() { return
	 * KelompokProdukSet; }
	 * 
	 * public void setKelompokProdukSet(Set<KelompokProduk> kelompokProdukSet) {
	 * KelompokProdukSet = kelompokProdukSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<KelompokTindakanMedis>
	 * KelompokTindakanMedisSet = new HashSet<KelompokTindakanMedis>();
	 * 
	 * public Set<KelompokTindakanMedis> getKelompokTindakanMedisSet() { return
	 * KelompokTindakanMedisSet; }
	 * 
	 * public void setKelompokTindakanMedisSet(Set<KelompokTindakanMedis>
	 * kelompokTindakanMedisSet) { KelompokTindakanMedisSet =
	 * kelompokTindakanMedisSet; }
	 * 
	 * @JsonManagedReference
	 * 
	 * @OneToMany(fetch = FetchType.LAZY, cascade = CascadeType.ALL, mappedBy =
	 * "kddepartemen") private Set<KomponenEvaluasi> KomponenEvaluasiSet = new
	 * HashSet<KomponenEvaluasi>();
	 * 
	 * public Set<KomponenEvaluasi> getKomponenEvaluasiSet() { return
	 * KomponenEvaluasiSet; }
	 * 
	 * public void setKomponenEvaluasiSet(Set<KomponenEvaluasi>
	 * komponenEvaluasiSet) { KomponenEvaluasiSet = komponenEvaluasiSet; }
	 */

	@Id
	@GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "public.departemen_m_id_seq")
	@javax.persistence.SequenceGenerator(name = "public.departemen_m_id_seq", sequenceName = "public.departemen_m_id_seq", allocationSize = 1)
	@Column(name = "id")
	protected Integer id;

	public Integer getId() {

		return id;
	}

	public void setId(Integer id) {
		this.id = id;
	}
}