namespace BPA.MES.Base.Application;

public interface IAuthorizeService
{

    #region 账户
    Task<bool> RestoreAccountByUser(string input);
    Task<bool> AddAccountByUser(AccountAddInput input);
    Task<bool> EditAccountPwd(AccountUpdatePwdInput input);
    Task<AccountOutput> GetAccountByUser(string input);
    Task<SqlSugarPagedList<AccountOutput>> AccountPageList(AccountQueryPageInput input);
    Task<bool> AddAccount(AccountAddInput input);
    Task<bool> UpdateAccount(AccountUpdateInput input);
    Task<bool> DelAccount(AccountDelInput input);
    Task<bool> Login(AccountInput input);

    #endregion

    #region 员工
    Task<bool> AddEmployee(EmployeeAddInput input);
    Task<bool> EditEmployee(EmployeeUpdateInput input);
    Task<SqlSugarPagedList<EmployeeOutput>> QueryEmployee(EmployeeQueryPageInput input);
    Task<bool> RemoveEmployee(string input);
    Task<List<EmployeeOutput>> EmployeeList();
    #endregion


    Task<object> GetUserInfo();
    Task<List<string>> MultipleModuleAuthorityAsync();

    #region 角色
    Task<bool> AddRole(RoleAddInput input);
    Task<bool> EditRole(RoleUpdateInput input);
    Task<bool> RemoveRole(string input);
    Task<RoleOutput> GetRole(string input);
    Task<List<RoleOutput>> GetRoleList();
    Task<SqlSugarPagedList<RoleOutput>> QueryRole(RoleQueryPageInput input);
    #endregion

    #region 模块
    Task<bool> AddModule(ModuleAddInput input);
    Task<bool> EditModule(ModuleUpdateInput input);
    Task RemoveModule(string input);
    Task<List<ModuleTreeOutput>> GetTreeGrid(ModuleTreeQueryInput input);
    #endregion

    #region 授权模板
    Task<bool> AddAuthorTemp(AuthorizeTemplateAddInput input);
    Task<bool> EditAuthorTemp(AuthorizeTemplateUpdateInput input);
    Task<bool> RemoveAuthorTemp(string input);
    Task<SqlSugarPagedList<AuthorizeTemplateOutput>> QueryAuthorTemp(AuthorizeTemplateQueryPageInput input);
    Task<AuthorizeTemplateOutput> GetAuthorTemp(string input);
    #endregion

    #region 授权模板详情
    Task<List<AuthorModuleOutput>> GetModuleByTemplateId(string input);
    Task<bool> EditTemplateItem(AuthorModuleItemUpdateInput input);
    Task<List<AuthorizeOutput>> GetAuthorizeObjects(AuthorizeInput input);
    Task<bool> RemoveAuthorize(AuthorizeInput input);
    Task<bool> SaveAuthorize(AuthorModulesAddInput input);
    Task AddAuthorize(AuthorMapAddInput input);
    #endregion
}
