using AmpDAL.DTO.ApiExposurePolicy; using AmpDAL.Query.ApiExposurePolicy; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AmpDAL.CustomCode.ApiExposurePolicy; public class ApiExposurePolicyDAL(IQueryExecutor _qe) : IApiExposurePolicyDAL { public async Task GetExposurePolicyAsync(long ApiId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync( login, ApiExposurePolicyQB.GET_EXPOSURE_POLICY, new { ApiId = ApiId }).ConfigureAwait(false); public async Task SaveExposurePolicyAsync(ApiExposurePolicySaveDTO dto, LoginDTO login, CancellationToken ct) { // Set TenantId if not already set dto.TenantId = dto.TenantId > 0 ? dto.TenantId : login.ClientId; return await _qe.ExecuteScalarAsync( login, ApiExposurePolicyQB.SAVE_EXPOSURE_POLICY, new { ApiExposurePolicyId = dto.ApiExposurePolicyId, // auto-numbered in BLL TenantId = dto.TenantId, ApiId = dto.ApiId, AllowPartnerAccess = dto.AllowPartnerAccess, AllowPublicAccess = dto.AllowPublicAccess, BillingCategory = dto.BillingCategory, SlaReference = dto.SLAReference, Remarks = dto.Remarks, SortOrder = dto.SortOrder, Status = dto.Status, Version = dto.Version, SourceType = dto.SourceType, CreatedById = dto.CreatedById, CreatedOn = dto.CreatedOn, ModifiedById = dto.ModifiedById, ModifiedOn = dto.ModifiedOn }).ConfigureAwait(false); } public async Task UpdateExposurePolicyAsync(ApiExposurePolicySaveDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteScalarAsync( login, ApiExposurePolicyQB.UPDATE_EXPOSURE_POLICY, new { ApiExposurePolicyId = dto.ApiExposurePolicyId, // required to identify the record AllowPartnerAccess = dto.AllowPartnerAccess, AllowPublicAccess = dto.AllowPublicAccess, BillingCategory = dto.BillingCategory, SlaReference = dto.SLAReference, Remarks = dto.Remarks, SortOrder = dto.SortOrder, Status = dto.Status, Version = dto.Version, SourceType = dto.SourceType, ModifiedById = dto.ModifiedById, ModifiedOn = dto.ModifiedOn }).ConfigureAwait(false); } public async Task> GetExposurePolicySelectListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiExposurePolicyQB.GET_EXPOSURE_POLICY_SELECT_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task> GetExposurePolicyListAsync(LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiExposurePolicyQB.GET_EXPOSURE_POLICY_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task DeleteById(int apiExposurePolicyId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync( login, ApiExposurePolicyQB.DELETE_EXPOSURE_POLICY, new { ApiExposurePolicyId = apiExposurePolicyId, TenantId = login.ClientId }).ConfigureAwait(false); }