using FrameworkDAL.DTO.ActionPanel; using FrameworkDAL.Query.ActionPanel; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.ActionPanel { public class ActionPanelDAL : IActionPanelDAL { private readonly IQueryExecutor _queryExecutor; public ActionPanelDAL(IQueryExecutor queryExecutor) { _queryExecutor = queryExecutor; } public async Task GetSelectListActionPanel(int firstNumber, int maxResult, CriteriaDTO criteriaDTO, LoginDTO loginDTO, bool isCount, CancellationToken ct) { if (isCount) { int count = await _queryExecutor.ExecuteScalarAsync( loginDTO, ActionPanelQB.GET_SELECTLIST_ACTION_PANEL_COUNT, new { TenantId = loginDTO.ClientId }, cancellationToken: ct); return count.ToString(); } var parameter = new { firstnumber = firstNumber, maxresult = maxResult, TenantId = loginDTO.ClientId }; var list = (await _queryExecutor.QueryAsync(loginDTO, ActionPanelQB.GET_SELECTLIST_ACTION_PANEL, parameter, cancellationToken: ct)).ToList(); return JsonConvert.SerializeObject(list); } public async Task GetActionPanel(int actionPanelId, LoginDTO loginDTO, CancellationToken ct) { var parameters = new { ActionPanelId = actionPanelId, TenantId = loginDTO.ClientId }; return await _queryExecutor.QuerySingleAsync(loginDTO, ActionPanelQB.GET_ACTION_PANEL, parameters, cancellationToken: ct); } public async Task SaveActionPanel(ActionPanelDTO dto, LoginDTO loginDTO, CancellationToken ct) => await _queryExecutor.ExecuteAsync(loginDTO, ActionPanelQB.SAVE_ACTION_PANEL, dto, cancellationToken: ct); public async Task UpdateActionPanel(ActionPanelDTO dto, LoginDTO loginDTO, CancellationToken ct) => await _queryExecutor.ExecuteAsync(loginDTO, ActionPanelQB.UPDATE_ACTION_PANEL, dto, cancellationToken: ct); public async Task DeleteActionPanel(int actionPanelId, LoginDTO loginDTO, CancellationToken ct) { var parameters = new { ActionPanelId = actionPanelId, TenantId = loginDTO.ClientId }; return await _queryExecutor.ExecuteAsync(loginDTO, ActionPanelQB.DELETE_ACTION_PANEL, parameters, cancellationToken: ct); } public async Task> GetActionsForScreen(int menuId, string channel, LoginDTO loginDTO, CancellationToken ct) { var parameters = new { MenuId = menuId, Channel = channel ?? "", TenantId = loginDTO.ClientId }; return await _queryExecutor.QueryAsync(loginDTO, ActionPanelQB.GET_ACTIONS_FOR_SCREEN, parameters, cancellationToken: ct); } public async Task> GetQuickActionsForScreen(int menuId, LoginDTO loginDTO, CancellationToken ct) { var parameters = new { MenuId = menuId, TenantId = loginDTO.ClientId }; return await _queryExecutor.QueryAsync(loginDTO, ActionPanelQB.GET_QUICK_ACTIONS_FOR_SCREEN, parameters, cancellationToken: ct); } public async Task GetAllActionPanel(LoginDTO loginDTO, CancellationToken ct) { var list = (await _queryExecutor.QueryAsync(loginDTO, ActionPanelQB.GET_ALL_ACTION_PANEL, new { TenantId = loginDTO.ClientId }, cancellationToken: ct)).ToList(); return JsonConvert.SerializeObject(list); } public async Task GetQuickAction(int quickActionId, LoginDTO loginDTO, CancellationToken ct) { var parameters = new { QuickActionId = quickActionId, TenantId = loginDTO.ClientId }; return await _queryExecutor.QuerySingleAsync(loginDTO, ActionPanelQB.GET_QUICK_ACTION, parameters, cancellationToken: ct); } public async Task SaveQuickAction(QuickActionDTO dto, LoginDTO loginDTO, CancellationToken ct) => await _queryExecutor.ExecuteAsync(loginDTO, ActionPanelQB.SAVE_QUICK_ACTION, dto, cancellationToken: ct); public async Task UpdateQuickAction(QuickActionDTO dto, LoginDTO loginDTO, CancellationToken ct) => await _queryExecutor.ExecuteAsync(loginDTO, ActionPanelQB.UPDATE_QUICK_ACTION, dto, cancellationToken: ct); public async Task DeleteQuickAction(int quickActionId, LoginDTO loginDTO, CancellationToken ct) { var parameters = new { QuickActionId = quickActionId, TenantId = loginDTO.ClientId }; return await _queryExecutor.ExecuteAsync(loginDTO, ActionPanelQB.DELETE_QUICK_ACTION, parameters, cancellationToken: ct); } public async Task GetAllQuickAction(LoginDTO loginDTO, CancellationToken ct) { var list = (await _queryExecutor.QueryAsync(loginDTO, ActionPanelQB.GET_ALL_QUICK_ACTION, new { TenantId = loginDTO.ClientId }, cancellationToken: ct)).ToList(); return JsonConvert.SerializeObject(list); } } }