using FrameworkDAL.DTO.Menu;
using GB5Shared.DTO.Framework.Criteria;
using GB5Shared.DTO.Framework.Login;
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading;
using System.Threading.Tasks;
namespace FrameworkBLL.Menu
{
///
/// Interface for Menu Business Logic Layer
///
public interface IMenuBLL
{
///
/// Gets the menu for a specific user and module.
///
/// The ID of the user.
/// The ID of the module.
/// The login details.
/// A task that represents the asynchronous operation. The task result contains the menu as a string.
Task GetMenuForUserModule(int UserId, int ModuleId, LoginDTO LoginDTO);
///
/// GetMenu
///
///
///
///
Task GetMenu(int MenuId, LoginDTO LoginDTO);
Task GetReportCriteriaForMenu(int UserId, int MenuId, int IsFromScreen, LoginDTO LoginDTO);
///
/// Retrieves a list of Menu records based on filter criteria.
/// Typically used for populating dropdowns or selection lists in the UI.
///
/// Filter criteria for selecting Menus.
/// The current user's login details.
/// A JSON string representing the list of Menus.
Task GetSelectListMenu(CriteriaDTO CriteriaDTO, LoginDTO LoginDTO);
Task GetMenuListBasedMenuSetForTree(int Type, int ModuleId, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO);
Task GetMenuAdmin(int menuId, LoginDTO LoginDTO, CancellationToken ct);
Task SaveMenu(MenuAdminDTO dto, LoginDTO LoginDTO, CancellationToken ct);
Task DeleteMenu(int menuId, LoginDTO LoginDTO, CancellationToken ct);
}
}