package com.healthcare.ohctech.entity;

import jakarta.persistence.*;
import org.hibernate.annotations.UpdateTimestamp;

import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.ArrayList;
import java.util.List;

@Entity
@Table(name = "indent_master")
public class IndentMaster {

    @Id
    @GeneratedValue(strategy = GenerationType.IDENTITY)
    @Column(name = "indent_id")
    private Long id;

    @Column(name = "indent_ref_no",unique = true)
    private String indentRefNo;

    @Column(name = "indent_date")
    private LocalDate indentDate;

//    @Column(name = "grn_no")
//    private String grnNo;

    @Column(name = "remarks")
    private String remarks;

//    @Column(name = "approval_remarks1")
//    private String approvalRemarks1;
//
//    @Column(name = "approval_remarks2")
//    private String approvalRemarks2;

    @Column(name = "status")
    private String status;

//    @Column(name = "approval_date")
//    private LocalDate approvalDate;

//    @Column(name = "approval_date1")
//    private LocalDate approvalDate1;
//
//    @Column(name = "approval_date2")
//    private LocalDate approvalDate2;

//    @Column(name = "approval_remarks")
//    private String approvalRemarks;

    @Column(name = "generated_by")
    private Long generatedBy;

//    @ManyToOne
//    @JoinColumn(name = "approving_doc_id")
//    private ApprovingDoc approvingDoc;
//
//    @ManyToOne
//    @JoinColumn(name = "approving_doc_id1")
//    private ApprovingDoc approvingDoc1;
//
//    @ManyToOne
//    @JoinColumn(name = "approving_doc_id2")
//    private ApprovingDoc approvingDoc2;

    @Column(name = "last_modified")
    @UpdateTimestamp
    private LocalDateTime lastModified;

    @OneToMany(mappedBy = "indentMaster", cascade = CascadeType.ALL, orphanRemoval = true)
    private List<IndentItem> indentItems = new ArrayList<>();

    // Getters and Setters

    public Long getId() {
        return id;
    }

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

    public String getIndentRefNo() {
        return indentRefNo;
    }

    public void setIndentRefNo(String indentRefNo) {
        this.indentRefNo = indentRefNo;
    }

    public LocalDate getIndentDate() {
        return indentDate;
    }

    public void setIndentDate(LocalDate indentDate) {
        this.indentDate = indentDate;
    }

//    public String getGrnNo() {
//        return grnNo;
//    }
//
//    public void setGrnNo(String grnNo) {
//        this.grnNo = grnNo;
//    }

    public String getRemarks() {
        return remarks;
    }

    public void setRemarks(String remarks) {
        this.remarks = remarks;
    }

//    public String getApprovalRemarks1() {
//        return approvalRemarks1;
//    }
//
//    public void setApprovalRemarks1(String approvalRemarks1) {
//        this.approvalRemarks1 = approvalRemarks1;
//    }
//
//    public String getApprovalRemarks2() {
//        return approvalRemarks2;
//    }
//
//    public void setApprovalRemarks2(String approvalRemarks2) {
//        this.approvalRemarks2 = approvalRemarks2;
//    }

    public String getStatus() {
        return status;
    }

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

//    public LocalDate getApprovalDate() {
//        return approvalDate;
//    }
//
//    public void setApprovalDate(LocalDate approvalDate) {
//        this.approvalDate = approvalDate;
//    }
//
//    public String getApprovalRemarks() {
//        return approvalRemarks;
//    }
//
//    public void setApprovalRemarks(String approvalRemarks) {
//        this.approvalRemarks = approvalRemarks;
//    }

    public Long getGeneratedBy() {
        return generatedBy;
    }

    public void setGeneratedBy(Long generatedBy) {
        this.generatedBy = generatedBy;
    }

    public LocalDateTime getLastModified() {
        return lastModified;
    }

    public void setLastModified(LocalDateTime lastModified) {
        this.lastModified = lastModified;
    }

    public List<IndentItem> getIndentItems() {
        return indentItems;
    }

    public void setIndentItems(List<IndentItem> indentItems) {
        this.indentItems = indentItems;
    }
}