using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using KmsDAL.DTO.KmGap; using KmsDAL.Query.KmGap; using Newtonsoft.Json; namespace KmsDAL.CustomCode.KmGap { public class KmGapDAL : IKmGapDAL { private readonly IQueryExecutor _qe; public KmGapDAL(IQueryExecutor qe) => _qe = qe; public async Task UpsertKmGap(KmRecordGapDTO dto, int gapId, LoginDTO login, CancellationToken ct) { await _qe.ExecuteAsync(login, KmGapQB.UPSERT_KMGAP, new { GapId = gapId, dto.QueryText, dto.QueryHash, dto.BestScoreReturned, BestArtifactId = dto.BestArtifactId <= 0 ? -1 : dto.BestArtifactId, dto.CallerJson, CreatedById = login.UserId, ModifiedById = login.UserId, TenantId = login.ClientId }, cancellationToken: ct); } public async Task GetKmGaps(byte gapStatus, int page, int pageSize, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryPagedAsync( login, KmGapQB.GET_KMGAPS_PAGED, new { TenantId = login.ClientId, GapStatus = gapStatus, Offset = (page - 1) * pageSize, PageSize = pageSize }); return JsonConvert.SerializeObject(result); } public async Task UpdateKmGapStatus(KmResolveGapDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, KmGapQB.UPDATE_KMGAP_STATUS, new { dto.GapId, dto.ResolutionNotes, dto.NewStatus, ResolvedById = login.UserId, ModifiedById = login.UserId, TenantId = login.ClientId }, cancellationToken: ct); } }