using AmpDAL.DTO.ApiDomain; using AmpDAL.Query.ApiDomain; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AmpDAL.CustomCode.ApiDomain; public class ApiDomainDAL(IQueryExecutor _qe) : IApiDomainDAL { public async Task GetDomainAsync(long ApiDomainId, int tenantId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync( login, ApiDomainQB.GET_DOMAIN, new { ApiDomainId = ApiDomainId, TenantId = tenantId }).ConfigureAwait(false); public async Task> GetDomainListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiDomainQB.GET_DOMAIN_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task SaveDomainAsync(ApiDomainSaveDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteScalarAsync( login, ApiDomainQB.SAVE_DOMAIN, new { dto.ApiDomainId, // if auto-number generated in BLL dto.ApiId, dto.TenantId, dto.DomainName, dto.ParentDomainId, dto.Remarks, dto.Status, dto.SourceType, dto.SortOrder, dto.Version, dto.CreatedById, dto.ModifiedById }).ConfigureAwait(false); } public async Task UpdateDomainAsync(ApiDomainSaveDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteScalarAsync( login, ApiDomainQB.UPDATE_DOMAIN, new { dto.ApiDomainId, // required to identify which record to update dto.DomainName, dto.ApiId, dto.ParentDomainId, dto.Remarks, dto.Status, dto.SortOrder, dto.Version, dto.SourceType, dto.ModifiedById // only modified by, no created by }).ConfigureAwait(false); } public async Task> GetDomainSelectListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiDomainQB.GET_DOMAIN_SELECT_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task> GetPagedDomainList(int firstNumber, int maxResult, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiDomainQB.GET_DOMAIN_LIST_PAGED, new { TenantId = login.ClientId, FirstNumber = firstNumber, MaxResult = maxResult }).ConfigureAwait(false); return result.ToList(); } public async Task DeleteById(int apiDomainId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync( login, ApiDomainQB.DELETE_DOMAIN, new { ApiDomainId = apiDomainId, TenantId = login.ClientId }).ConfigureAwait(false); }