using AmpDAL.Query.ApiCapability; using AMPDAL.DTO.ApiCapability; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AmpDAL.CustomCode.ApiCapability; public class ApiCapabilityDAL(IQueryExecutor _qe) : IApiCapabilityDAL { public async Task GetCapabilityAsync(long ApiCapabilityId, int tenantId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync( login, ApiCapabilityQB.GET_CAPABILITY, new { ApiCapabilityId = ApiCapabilityId, TenantId = tenantId }).ConfigureAwait(false); public async Task> GetCapabilityListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiCapabilityQB.GET_CAPABILITY_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task SaveCapabilityAsync(ApiCapabilitySaveDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteScalarAsync( login, ApiCapabilityQB.SAVE_CAPABILITY, new { dto.ApiCapabilityId, // Primary key for the row dto.TenantId, dto.ApiId, dto.ApiDomainId, dto.CapabilityName, dto.Description, dto.Remarks, dto.SortOrder, dto.Status, dto.Version, dto.SourceType, dto.CreatedById, dto.ModifiedById, }).ConfigureAwait(false); public async Task UpdateCapabilityAsync(ApiCapabilitySaveDTO dto, LoginDTO login, CancellationToken ct) { // Ensure ModifiedById is set dto.ModifiedById = login.UserId; return await _qe.ExecuteScalarAsync( login, ApiCapabilityQB.UPDATE_CAPABILITY, new { dto.ApiCapabilityId, // Primary key for the row dto.TenantId, dto.ApiId, dto.ApiDomainId, dto.CapabilityName, dto.Description, dto.Remarks, dto.SortOrder, dto.Status, dto.Version, dto.SourceType, dto.ModifiedById, }).ConfigureAwait(false); } public async Task SaveCapabilityLinkAsync(SaveApiCapabilityLinkDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteScalarAsync( login, ApiCapabilityQB.SAVE_CAPABILITY_LINK, dto ).ConfigureAwait(false); } public async Task UpdateCapabilityLinkAsync(SaveApiCapabilityLinkDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteScalarAsync( login, ApiCapabilityQB.UPDATE_CAPABILITY_LINK, dto ).ConfigureAwait(false); } public async Task> GetCapabilitySelectListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiCapabilityQB.GET_CAPABILITY_SELECT_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task> GetPagedCapabilityList(int firstNumber, int maxResult, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiCapabilityQB.GET_CAPABILITY_LIST_PAGED, new { TenantId = login.ClientId, FirstNumber = firstNumber, MaxResult = maxResult }).ConfigureAwait(false); return result.ToList(); } public async Task DeleteById(int apiCapabilityId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync( login, ApiCapabilityQB.DELETE_CAPABILITY, new { ApiCapabilityId = apiCapabilityId, TenantId = login.ClientId }).ConfigureAwait(false); }