using FrameworkDAL.DTO.Playground; using FrameworkDAL.Query.Playground; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System.Collections.Generic; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FrameworkDAL.CustomCode.Playground { public sealed class PlaygroundDAL : IPlaygroundDAL { private readonly IQueryExecutor _qe; public PlaygroundDAL(IQueryExecutor qe) => _qe = qe; public async Task> GetActionsByEventTypeAsync( int eventTypeId, LoginDTO login, CancellationToken ct = default) { return (await _qe.QueryAsync( login, PlaygroundQB.GET_ACTIONS_BY_EVENT_TYPE, new { EventTypeId = eventTypeId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false)).ToList(); } public async Task> GetTaskStatusCountsAsync( string runId, LoginDTO login, CancellationToken ct = default) { return (await _qe.QueryAsync( login, PlaygroundQB.GET_TASK_STATUS_COUNTS, new { RunId = runId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false)).ToList(); } public async Task> GetActionStatusCountsAsync( string runId, LoginDTO login, CancellationToken ct = default) { return (await _qe.QueryAsync( login, PlaygroundQB.GET_ACTION_STATUS_COUNTS, new { RunId = runId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false)).ToList(); } public async Task> GetActionQueueAsync( string runId, LoginDTO login, CancellationToken ct = default) { return (await _qe.QueryAsync( login, PlaygroundQB.GET_ACTION_QUEUE, new { RunId = runId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false)).ToList(); } public async Task ResetActionRunAsync( int actionRunId, LoginDTO login, CancellationToken ct = default) { var param = new { ActionRunId = actionRunId, TenantId = login.ClientId, ModifiedById = login.UserId }; await _qe.ExecuteAsync(login, PlaygroundQB.RESET_ACTION_RUN, param, cancellationToken: ct).ConfigureAwait(false); await _qe.ExecuteAsync(login, PlaygroundQB.RESET_OUTBOX_FOR_RUN, param, cancellationToken: ct).ConfigureAwait(false); } } }