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.Table;

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

@Entity
@Table(name="ItJadwalPerawatan_T")
public class ItJadwalPerawatan extends BaseTransaction{

	@Column(name = "tanggal")
	private Date tanggal;

	@Column(name = "TglJadwal")
	private Date tglJadwal;
	
	@Column(name="TglPelaksanaan")
	private Date tglPelaksanaan;
	
	@Column(name = "Keluhan", nullable = true)
	private String keterangan;
	
	@Column(name="StatusPengerjaan", length=50)
	private String statusPengerjaan;
	
	@ManyToOne(fetch = FetchType.LAZY)
	@JoinColumn(name="ObjectStrukOrderFk")
	private StrukOrder strukOrder;
	
	@Column(name="ObjectStrukOrderFk", insertable=false, updatable=false, nullable=false)
	private String strukOrderId;
	
	@ManyToOne(fetch=FetchType.LAZY)
	@JoinColumn(name="ObjectRuanganFk")
	private Ruangan ruangan;
	
	@Column(name="ObjectRuanganFk", insertable=false, updatable=false, nullable=false)
	private Integer ruanganId;
	
	@JsonBackReference
	@OneToMany(cascade=CascadeType.ALL,fetch = FetchType.LAZY, mappedBy = "itJadwalPerawatan")
	private Set<ItJadwalPerawatanTeknisi> itJadwalPerawatanTeknisi = new HashSet<>();
	
	@JsonBackReference
	@OneToMany(cascade=CascadeType.ALL, fetch = FetchType.LAZY, mappedBy = "itJadwalPerawatan")
	private Set<ItJadwalPerawatanItem> itJadwalPerawatanItem = new HashSet<>();
	
	public Date getTanggal() {
		return tanggal;
	}

	public void setTanggal(Date tanggal) {
		this.tanggal = tanggal;
	}

	public Date getTglJadwal() {
		return tglJadwal;
	}

	public void setTglJadwal(Date tglJadwal) {
		this.tglJadwal = tglJadwal;
	}

	public Date getTglPelaksanaan() {
		return tglPelaksanaan;
	}

	public void setTglPelaksanaan(Date tglPelaksanaan) {
		this.tglPelaksanaan = tglPelaksanaan;
	}

	public String getKeterangan() {
		return keterangan;
	}

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

	public String getStatusPengerjaan() {
		return statusPengerjaan;
	}

	public void setStatusPengerjaan(String statusPengerjaan) {
		this.statusPengerjaan = statusPengerjaan;
	}

	public StrukOrder getStrukOrder() {
		return strukOrder;
	}

	public void setStrukOrder(StrukOrder strukOrder) {
		this.strukOrder = strukOrder;
	}

	public String getStrukOrderId() {
		return strukOrderId;
	}

	public void setStrukOrderId(String strukOrderId) {
		this.strukOrderId = strukOrderId;
	}

	public Ruangan getRuangan() {
		return ruangan;
	}

	public void setRuangan(Ruangan ruangan) {
		this.ruangan = ruangan;
	}

	public Integer getRuanganId() {
		return ruanganId;
	}

	public void setRuanganId(Integer ruanganId) {
		this.ruanganId = ruanganId;
	}

	public Set<ItJadwalPerawatanTeknisi> getItJadwalPerawatanTeknisi() {
		return itJadwalPerawatanTeknisi;
	}

	public void setItJadwalPerawatanTeknisi(Set<ItJadwalPerawatanTeknisi> itJadwalPerawatanTeknisi) {
		this.itJadwalPerawatanTeknisi = itJadwalPerawatanTeknisi;
	}

	public Set<ItJadwalPerawatanItem> getItJadwalPerawatanItem() {
		return itJadwalPerawatanItem;
	}

	public void setItJadwalPerawatanItem(Set<ItJadwalPerawatanItem> itJadwalPerawatanItem) {
		this.itJadwalPerawatanItem = itJadwalPerawatanItem;
	}
	
	

}
