using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using OKRDAL.DTOs; using OKRDAL.Interfaces; using OKRDAL.QueryBuilders; namespace OKRDAL.Implementations; public class OKRDashboardDAL : IOKRDashboardDAL { private readonly IQueryExecutor _qe; public OKRDashboardDAL(IQueryExecutor qe) => _qe = qe; public async Task> GetDashboardObjectivesAsync( int okrCycleId, int ouid, LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, OKRDashboardQB.GET_DASHBOARD, new { OKRCycleId = okrCycleId, OUID = ouid, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task> GetStatusDistributionAsync( int okrCycleId, int forLevel, int forObjectId, LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, OKRAnalyticsQB.GET_STATUS_DISTRIBUTION, new { OKRCycleId = okrCycleId, ForLevel = forLevel, ForObjectId = forObjectId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task> GetPerspectiveBreakdownAsync( int okrCycleId, LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, OKRAnalyticsQB.GET_PERSPECTIVE_BREAKDOWN, new { OKRCycleId = okrCycleId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); }