using WorkFlowCheck.Common.DTO;

namespace WorkFlowCheck.Web.Services.Interfaces
{
    public interface IUserService
    {
        Task<UserDTO> GetUser(int id);
        Task<List<UserDTO>> GetAllUsers();
        Task<ApiResponseDTO<UserDTO>> UpdateUser(UserDTO userDTO);
        Task<ApiResponseDTO<UserDTO>> Authenticate(string username, string password);

        Task<RoleDTO> GetRole(int id);
        Task<List<RoleDTO>> GetAllRoles();
        Task<ApiResponseDTO<RoleDTO>> UpdateRole(RoleDTO roleDTO);

        Task<UserRoleDTO> GetUserRole(int id);
        Task<List<UserRoleDTO>> GetAllUserRoles();
        Task<ApiResponseDTO<UserRoleDTO>> UpdateUserRole(UserRoleDTO userRoleDTO);


        Task<RoleCheckListTemplateHeaderDTO> GetRoleCheckListTemplateHeader(int id);
        Task<List<RoleCheckListTemplateHeaderDTO>> GetAllRoleCheckListTemplates();
        Task<ApiResponseDTO<RoleCheckListTemplateHeaderDTO>> UpdateRoleCheckListTemplateHeader(RoleCheckListTemplateHeaderDTO roleCheckListTemplateHeaderDTO);

        Task<RoleCheckPointDTO> GetRoleCheckPoint(int id);
        Task<List<RoleCheckPointDTO>> GetAllRoleCheckPoints();
        Task<ApiResponseDTO<RoleCheckPointDTO>> UpdateRoleCheckPoint(RoleCheckPointDTO roleCheckPointDTO);
    }
}
