package com.eksad.masterdata.domain;

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

import java.util.Objects;

@Entity
@Table(name = "MST_MARKETTREATMENTPARTDETAIL")
public class MarketTreatmentPartDetail implements EntityObject<MarketTreatmentPartDetail> {
    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "mst_markettreatmentpartdetail_gen")
    @SequenceGenerator(name = "mst_markettreatmentpartdetail_gen", sequenceName = "mst_markettreatmentpartdetail_seq", allocationSize = 1)
    Integer id;

    private String marketTreatmentID;
    private String kodePart;
    private String deskripsi;
    private String marketTreatmentPartDetailID;
    private Integer qtyPart;
    @Embedded
    private CreationalSpecification marketTreatmentPartDetailCreational;

    public MarketTreatmentPartDetail() {
    }

    public MarketTreatmentPartDetail(Integer id, String marketTreatmentID, String kodePart, String deskripsi, String marketTreatmentPartDetailID, Integer qtyPart, CreationalSpecification marketTreatmentPartDetailCreational) {
        this.id = id;
        this.marketTreatmentID = marketTreatmentID;
        this.kodePart = kodePart;
        this.deskripsi = deskripsi;
        this.marketTreatmentPartDetailID = marketTreatmentPartDetailID;
        this.qtyPart = qtyPart;
        this.marketTreatmentPartDetailCreational = marketTreatmentPartDetailCreational;
    }

    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 getKodePart() {
        return kodePart;
    }

    public void setKodePart(String kodePart) {
        this.kodePart = kodePart;
    }

    public String getDeskripsi() {
        return deskripsi;
    }

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

    public String getMarketTreatmentPartDetailID() {
        return marketTreatmentPartDetailID;
    }

    public void setMarketTreatmentPartDetailID(String marketTreatmentPartDetailID) {
        this.marketTreatmentPartDetailID = marketTreatmentPartDetailID;
    }

    public Integer getQtyPart() {
        return qtyPart;
    }

    public void setQtyPart(Integer qtyPart) {
        this.qtyPart = qtyPart;
    }

    public CreationalSpecification getMarketTreatmentPartDetailCreational() {
        return marketTreatmentPartDetailCreational;
    }

    public void setMarketTreatmentPartDetailCreational(CreationalSpecification marketTreatmentPartDetailCreational) {
        this.marketTreatmentPartDetailCreational = marketTreatmentPartDetailCreational;
    }

    @Override
    public int hashCode() {
        int hash = 7;
        hash = 89 * hash + Objects.hashCode(this.id);
        hash = 89 * hash + Objects.hashCode(this.marketTreatmentID);
        hash = 89 * hash + Objects.hashCode(this.kodePart);
        hash = 89 * hash + Objects.hashCode(this.deskripsi);
        hash = 89 * hash + Objects.hashCode(this.marketTreatmentPartDetailID);
        hash = 89 * hash + Objects.hashCode(this.qtyPart);
        hash = 89 * hash + Objects.hashCode(this.marketTreatmentPartDetailCreational);
        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 MarketTreatmentPartDetail other = (MarketTreatmentPartDetail) obj;
        if (!Objects.equals(this.marketTreatmentID, other.marketTreatmentID)) {
            return false;
        }
        if (!Objects.equals(this.kodePart, other.kodePart)) {
            return false;
        }
        if (!Objects.equals(this.deskripsi, other.deskripsi)) {
            return false;
        }
        if (!Objects.equals(this.marketTreatmentPartDetailID, other.marketTreatmentPartDetailID)) {
            return false;
        }
        if (!Objects.equals(this.id, other.id)) {
            return false;
        }
        if (!Objects.equals(this.qtyPart, other.qtyPart)) {
            return false;
        }
        if (!Objects.equals(this.marketTreatmentPartDetailCreational, other.marketTreatmentPartDetailCreational)) {
            return false;
        }
        return true;
    }

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