using Microsoft.AspNetCore.Mvc.Rendering;
using WorkFlowCheck.Common.DTO;

namespace WorkFlowCheck.BL.Services.Interfaces
{
    public interface ICheckListService
    {
        Task<CheckListHeaderDTO> GetCheckListHeaderAsync(int Id);
        Task<List<CheckListHeaderDTO>> GetAllCheckListHeaderAsync();
        Task<CheckListHeaderDTO> UpdateCheckListHeaderAsync(CheckListHeaderDTO checkListHeaderDTO);
        Task<bool> AcceptCheckListHeaderAsync(int id, int userid);
        Task<bool> BlockCheckListHeaderAsync(int id, int userid);
        Task<bool> UnBlockCheckListHeaderAsync(int id, int userid);
        Task<bool> CloseCheckListHeader(CheckListHeaderCloseDTO closeCheckListHeaderCloseDTO);  
        Task<byte[]> CreateCheckListHeaderPDFAsync(int checkListHeaderId);
        Task<CheckListHeaderDTO> StartNewCheckListAsync(CheckListHeaderNewDTO checkListHeaderNewDTO);


        Task<CheckListTemplateHeaderDTO> GetCheckListTemplateHeaderAsync(int Id);
        Task<List<CheckListTemplateHeaderDTO>> GetAllCheckListTemplateHeaderAsync();
        Task<CheckListTemplateHeaderDTO> UpdateCheckListTemplateHeaderAsync(CheckListTemplateHeaderDTO checkListTemplateHeaderDTO);
        Task<bool> DeleteCheckListTemplateHeaderAsync(int id);
        Task<bool> CloneCheckListTemplateHeaderAsync(int id);
        Task<CheckListTemplateRowDTO> GetCheckListTemplateRowAsync(int id);
        Task<bool> DeleteCheckListTemplateRowAsync(int id);  
        Task<CheckListTemplateRowDTO> UpdateCheckListTemplateRowAsync(CheckListTemplateRowDTO checkListTemplateRowDTO);

        Task<CheckListRowDTO> GetCheckListRowAsync(int id);
        Task<CheckListRowDTO> UpdateCheckListRowAsync(CheckListRowDTO checkListRowDTO);

        


    }
}
