using System.Collections.Generic; using System.Data.Common; using System.Threading; using System.Threading.Tasks; using FrameworkDAL.DTO.MenuGroup; using GB5Shared.DTO.Framework.Login; namespace FrameworkDAL.CustomCode.MenuGroup { public interface IMenuGroupDAL { Task GetMenuSetPresentationInfo(int menuSetId, LoginDTO loginDTO, CancellationToken ct); Task> GetMenuGroupFlatList(int menuSetId, LoginDTO loginDTO, CancellationToken ct); Task GetMenuGroupById(int menuGroupId, LoginDTO loginDTO, CancellationToken ct); /// roleId: null for admin/content-management callers (full bundle membership); /// the caller's RoleId for end-user callers (applies the MROLEVSMENU view-right check). Task> GetResolvedLeavesByGroupIds(IEnumerable groupIds, int menuSetId, int? roleId, LoginDTO loginDTO, CancellationToken ct); /// Resolves the MenuSetId currently bound to (ClientId, ModuleId) via /// MCLIENTMODULE. Null if the client has no set assigned for this module. Task GetMenuSetIdForModule(int clientId, int moduleId, LoginDTO loginDTO, CancellationToken ct); Task SaveMenuGroup(MenuGroupDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct); Task UpdateMenuGroup(MenuGroupDTO dto, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct); Task DeleteMenuGroup(int menuGroupId, LoginDTO loginDTO, DbTransaction tx, CancellationToken ct); /// Diff-based reconcile of a group's leaf membership — delete-not-in-surviving-ids /// (or delete-all if none survive) + per-row insert/update, all in one self-contained /// transaction (mirrors SkillProcessStageMapDAL.Save's shape). Task SaveMenuGroupDetail(int menuGroupId, IEnumerable leaves, LoginDTO loginDTO, CancellationToken ct); } }