package com.eksad.masterdata.domain;

import com.eksad.ddms.common.util.object.EntityObject;
import com.eksad.ddms.common.util.status.DataStatus;
import jakarta.persistence.*;
import org.hibernate.validator.constraints.NotEmpty;

@Entity
@Table(name = "TRX_CUST_CONTRACTSERVICE")
public class CustContractService implements EntityObject<CustContractService> {

    @Id
    @GeneratedValue(strategy = GenerationType.SEQUENCE, generator = "trx_cust_contractservice_gen")
    @SequenceGenerator(name = "trx_cust_contractservice_gen", sequenceName = "trx_cust_contractservice_seq", allocationSize = 1)
    private Integer id;

    @NotEmpty(message = "cs id cannot be null")
    private String csID;

    private String custID;

    private Integer quotaDetail;

    private String custName;

    @NotEmpty(message = "nosin cannot be null")
    private String nosin;

    @NotEmpty(message = "nopol cannot be null")
    private String nopol;

    private Integer packageExpired;

    @Enumerated(value = EnumType.STRING)
    private DataStatus status;

    @Embedded
    private CreationalSpecification custContractServiceCreational;

    public CustContractService() {
    }

    public CustContractService(Integer id, String csID, String custID, Integer quotaDetail, String custName, String nosin, String nopol, Integer packageExpired, DataStatus status, CreationalSpecification custContractServiceCreational) {
        this.id = id;
        this.csID = csID;
        this.custID = custID;
        this.quotaDetail = quotaDetail;
        this.custName = custName;
        this.nosin = nosin;
        this.nopol = nopol;
        this.packageExpired = packageExpired;
        this.status = status;
        this.custContractServiceCreational = custContractServiceCreational;
    }


    public Integer getId() {
        return id;
    }

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

    public String getCsID() {
        return csID;
    }

    public void setCsID(String csID) {
        this.csID = csID;
    }

    public String getCustID() {
        return custID;
    }

    public void setCustID(String custID) {
        this.custID = custID;
    }

    public Integer getQuotaDetail() {
        return quotaDetail;
    }

    public void setQuotaDetail(Integer quotaDetail) {
        this.quotaDetail = quotaDetail;
    }

    public String getCustName() {
        return custName;
    }

    public void setCustName(String custName) {
        this.custName = custName;
    }

    public String getNosin() {
        return nosin;
    }

    public void setNosin(String nosin) {
        this.nosin = nosin;
    }

    public String getNopol() {
        return nopol;
    }

    public void setNopol(String nopol) {
        this.nopol = nopol;
    }

    public Integer getPackageExpired() {
        return packageExpired;
    }

    public void setPackageExpired(Integer packageExpired) {
        this.packageExpired = packageExpired;
    }

    public DataStatus getStatus() {
        return status;
    }

    public void setStatus(DataStatus status) {
        this.status = status;
    }

    public CreationalSpecification getCustContractServiceCreational() {
        return custContractServiceCreational;
    }

    public void setCustContractServiceCreational(CreationalSpecification custContractServiceCreational) {
        this.custContractServiceCreational = custContractServiceCreational;
    }

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