package com.eksad.masterdata.domain;

import com.eksad.ddms.common.util.object.EntityObject;
import jakarta.persistence.*;

import java.util.Objects;

@Entity
@Table(name = "MST_MARKETTREATMENTJASADETAIL")
public class MarketTreatmentJasaDetail implements EntityObject<MarketTreatmentJasaDetail> {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mst_markettreatmentjasadetail_gen")
    @SequenceGenerator(name = "mst_markettreatmentjasadetail_gen", sequenceName = "mst_markettreatmentjasadetail_seq", allocationSize = 1)
    Integer id;

    private String marketTreatmentID;
    private String workshopServiceCode;
    private String deskripsi;
    private String marketTreatmentJasaDetailID;
    private Integer qtyJasa;
    @Embedded
    private CreationalSpecification marketTreatmentJasaDetailCreational;

    public MarketTreatmentJasaDetail() {
    }

    public MarketTreatmentJasaDetail(Integer id, String marketTreatmentID, String workshopServiceCode, String deskripsi, String marketTreatmentJasaDetailID, Integer qtyJasa, CreationalSpecification marketTreatmentJasaDetailCreational) {
        this.id = id;
        this.marketTreatmentID = marketTreatmentID;
        this.workshopServiceCode = workshopServiceCode;
        this.deskripsi = deskripsi;
        this.marketTreatmentJasaDetailID = marketTreatmentJasaDetailID;
        this.qtyJasa = qtyJasa;
        this.marketTreatmentJasaDetailCreational = marketTreatmentJasaDetailCreational;
    }

    public Integer getId() {
        return id;
    }

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

    public String getMarketTreatmentID() {
        return marketTreatmentID;
    }

    public void setMarketTreatmentID(String marketTreatmentID) {
        this.marketTreatmentID = marketTreatmentID;
    }

    public String getWorkshopServiceCode() {
        return workshopServiceCode;
    }

    public void setWorkshopServiceCode(String workshopServiceCode) {
        this.workshopServiceCode = workshopServiceCode;
    }

    public String getDeskripsi() {
        return deskripsi;
    }

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

    public String getMarketTreatmentJasaDetailID() {
        return marketTreatmentJasaDetailID;
    }

    public void setMarketTreatmentJasaDetailID(String marketTreatmentJasaDetailID) {
        this.marketTreatmentJasaDetailID = marketTreatmentJasaDetailID;
    }

    public Integer getQtyJasa() {
        return qtyJasa;
    }

    public void setQtyJasa(Integer qtyJasa) {
        this.qtyJasa = qtyJasa;
    }

    public CreationalSpecification getMarketTreatmentJasaDetailCreational() {
        return marketTreatmentJasaDetailCreational;
    }

    public void setMarketTreatmentJasaDetailCreational(CreationalSpecification marketTreatmentJasaDetailCreational) {
        this.marketTreatmentJasaDetailCreational = marketTreatmentJasaDetailCreational;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 83 * hash + Objects.hashCode(this.id);
        hash = 83 * hash + Objects.hashCode(this.marketTreatmentID);
        hash = 83 * hash + Objects.hashCode(this.workshopServiceCode);
        hash = 83 * hash + Objects.hashCode(this.deskripsi);
        hash = 83 * hash + Objects.hashCode(this.marketTreatmentJasaDetailID);
        hash = 83 * hash + Objects.hashCode(this.qtyJasa);
        hash = 83 * hash + Objects.hashCode(this.marketTreatmentJasaDetailCreational);
        return hash;
    }

    @Override
    public boolean equals(Object obj) {
        if (this == obj) {
            return true;
        }
        if (obj == null) {
            return false;
        }
        if (getClass() != obj.getClass()) {
            return false;
        }
        final MarketTreatmentJasaDetail other = (MarketTreatmentJasaDetail) obj;
        if (!Objects.equals(this.marketTreatmentID, other.marketTreatmentID)) {
            return false;
        }
        if (!Objects.equals(this.workshopServiceCode, other.workshopServiceCode)) {
            return false;
        }
        if (!Objects.equals(this.deskripsi, other.deskripsi)) {
            return false;
        }
        if (!Objects.equals(this.marketTreatmentJasaDetailID, other.marketTreatmentJasaDetailID)) {
            return false;
        }
        if (!Objects.equals(this.id, other.id)) {
            return false;
        }
        if (!Objects.equals(this.qtyJasa, other.qtyJasa)) {
            return false;
        }
        if (!Objects.equals(this.marketTreatmentJasaDetailCreational, other.marketTreatmentJasaDetailCreational)) {
            return false;
        }
        return true;
    }


    @Override
    public boolean sameIdentityAs(MarketTreatmentJasaDetail other) {
        return this.equals(other);
    }
}