package com.samsung.sample.approval.knox;

import com.samsung.approval.entity.ApprovalStep;
import com.samsung.approval.enums.ApprovalDocStatus;
import com.samsung.core.entity.PagingResult;
import com.samsung.sample.approval.knox.dto.KnoxApprovalSampleSearchDto;
import com.samsung.sample.approval.knox.entity.KnoxApprovalSampleDocument;

import java.util.List;

public interface KnoxApprovalSampleService {
	
    /**
     * 결재문서 목록 조회(페이징).
     * @param sampleSearchDto 조회조건
     * @return 결재문서 목록
     */
    PagingResult<KnoxApprovalSampleDocument> getSampleApprovalDocumentPagingList(KnoxApprovalSampleSearchDto sampleSearchDto);
    
    /**
     * 결재문서 상세조회.
     * @param docId 문서ID
     * @return 결재문서 상세정보
     */
    KnoxApprovalSampleDocument getSampleApprovalDocument(String docId);
    
    /**
     * 결재문서 저장.
     * @param sampleApprovalDocument 결재문서 정보
     * @return
     */
    void insertSampleApprovalDocument(KnoxApprovalSampleDocument sampleApprovalDocument);
    
    /**
     * 결재문서 수정.
     * @param sampleApprovalDocument 결재문서 정보
     * @return
     */
    void modifySampleApprovalDocument(KnoxApprovalSampleDocument sampleApprovalDocument);
    
    /**
     * 결재문서 삭제.
     * @param sampleApprovalDocument 결재문서 정보
     * @return
     */
    void deleteSampleApprovalDocument(KnoxApprovalSampleDocument sampleApprovalDocument);
    
    /**
     * 결재문서 상태 업데이트.
     * @param docId 문서ID
     * @param approvalDocStatus 결재상태
     */
    void updateSampleApprovalDocument(String docId, ApprovalDocStatus approvalDocStatus);

}