using CMGMDAL.DTOs; using CMGMDAL.Interfaces; using CMGMDAL.QueryBuilders; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace CMGMDAL.Implementations; public class CompetencyFrameworkDAL : ICompetencyFrameworkDAL { private readonly IQueryExecutor _qe; public CompetencyFrameworkDAL(IQueryExecutor queryExecutor) => _qe = queryExecutor; public async Task GetByIdAsync(int frameworkId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync(login, CompetencyFrameworkQB.GET_BY_ID, new { FrameworkId = frameworkId, TenantId = login.ClientId }) .ConfigureAwait(false); public async Task> GetListAsync(short status, LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, CompetencyFrameworkQB.GET_LIST, new { Status = status, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false) ?? Enumerable.Empty(); public async Task SaveAsync(CompetencyFrameworkDTO dto, bool isNew, LoginDTO login, CancellationToken ct) { if (isNew) return await _qe.ExecuteIdentityAsync(login, CompetencyFrameworkQB.INSERT, new { dto.Code, dto.Name, dto.Description, dto.Status, TenantId = login.ClientId, CreatedBy = login.UserId, ModifiedBy = login.UserId }) .ConfigureAwait(false); await _qe.ExecuteAsync(login, CompetencyFrameworkQB.UPDATE, new { dto.FrameworkId, dto.Code, dto.Name, dto.Description, dto.Status, TenantId = login.ClientId, ModifiedBy = login.UserId }, cancellationToken: ct).ConfigureAwait(false); return dto.FrameworkId; } public async Task DeleteAsync(int frameworkId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, CompetencyFrameworkQB.DELETE, new { FrameworkId = frameworkId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task HasActiveMapsAsync(int frameworkId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteScalarAsync(login, CompetencyFrameworkQB.HAS_ACTIVE_MAPS, new { FrameworkId = frameworkId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); }