using AmpDAL.DTO.ApiVersion; using AmpDAL.Query.ApiVersion; using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AmpDAL.CustomCode.ApiVersion; public class ApiVersionDAL(IQueryExecutor _qe) : IApiVersionDAL { public async Task GetVersionAsync(long ApiVersionId, LoginDTO login, CancellationToken ct) => await _qe.QuerySingleAsync( login, ApiVersionQB.GET_VERSION, new { ApiVersionId = ApiVersionId, TenantId = login.ClientId }).ConfigureAwait(false); public async Task> GetVersionListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiVersionQB.GET_VERSION_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task SaveVersionAsync(ApiVersionSaveDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteScalarAsync( login, ApiVersionQB.SAVE_VERSION, new { dto.ApiVersionId, // Auto-number from code dto.TenantId, dto.ApiId, dto.ReplacementApiId, dto.Version, dto.VersionStatus, dto.IsBreaking, dto.FromDate, dto.ToDate, dto.VersionDescription, dto.SunsetDate, dto.Notes, dto.Remarks, dto.SortOrder, dto.Status, dto.VersionNo, dto.SourceType, dto.CreatedById, dto.ModifiedById }).ConfigureAwait(false); } public async Task UpdateVersionAsync(ApiVersionSaveDTO dto, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync( login, ApiVersionQB.UPDATE_VERSION, new { dto.ApiVersionId, dto.TenantId, dto.ApiId, dto.ReplacementApiId, dto.Version, dto.VersionStatus, dto.IsBreaking, dto.FromDate, dto.ToDate, dto.VersionDescription, dto.SunsetDate, dto.Notes, dto.Remarks, dto.SortOrder, dto.Status, dto.VersionNo, dto.SourceType, dto.ModifiedById, ModifiedOn = DateTime.UtcNow }).ConfigureAwait(false); return dto.ApiVersionId; } public async Task UpdateVersionStatusAsync(long ApiVersionId, int versionStatus,int ModifiedById, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync( login, ApiVersionQB.UPDATE_VERSION_STATUS, new { ApiVersionId = ApiVersionId, VersionStatus = versionStatus, ModifiedById = ModifiedById }).ConfigureAwait(false); public async Task> GetVersionSelectListAsync(CriteriaDTO criteriaDTO, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiVersionQB.GET_VERSION_SELECT_LIST, new { TenantId = login.ClientId }).ConfigureAwait(false); return result.ToList(); } public async Task> GetPagedVersionList(int firstNumber, int maxResult, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, ApiVersionQB.GET_VERSION_LIST_PAGED, new { TenantId = login.ClientId, FirstNumber = firstNumber, MaxResult = maxResult }).ConfigureAwait(false); return result.ToList(); } public async Task DeleteById(int apiVersionId, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync( login, ApiVersionQB.DELETE_VERSION, new { ApiVersionId = apiVersionId, TenantId = login.ClientId }).ConfigureAwait(false); }