using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using TCMSDAL.DTO; using TCMSDAL.Interfaces; using TCMSDAL.QueryBuilders; namespace TCMSDAL.Implementations; public class TCMSDefectDAL : ITCMSDefectDAL { private readonly IQueryExecutor _Qe; public TCMSDefectDAL(IQueryExecutor queryExecutor) => _Qe = queryExecutor; public async Task GetDefectAsync( int defectId, LoginDTO login, CancellationToken ct) => await _Qe.QuerySingleAsync( login, TCMSDefectQB.GET_DEFECT, new { DefectId = defectId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetDefectListAsync( int? moduleId, string? status, int? patternId, LoginDTO login, CancellationToken ct) => await _Qe.QueryAsync( login, TCMSDefectQB.GET_DEFECT_LIST, new { TenantId = login.ClientId, ModuleId = moduleId, Status = status, RootCausePatternId = patternId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task InsertDefectAsync( TCMSDefectDTO dto, LoginDTO login, CancellationToken ct) => await _Qe.ExecuteIdentityAsync( login, TCMSDefectQB.INSERT_DEFECT, new { dto.Title, dto.ModuleId, dto.Entity, dto.Operation, dto.StepsToReproduce, dto.ExpectedResult, dto.ActualResult, dto.Priority, dto.RootCausePatternId, dto.RequiresRca, dto.LinkedTestCaseId, TenantId = login.ClientId, CreatedById = login.UserId, }).ConfigureAwait(false); public async Task UpdateDefectAsync( TCMSDefectDTO dto, LoginDTO login, CancellationToken ct) => await _Qe.ExecuteAsync( login, TCMSDefectQB.UPDATE_DEFECT, new { dto.DefectId, dto.Status, dto.RootCausePatternId, dto.RequiresRca, dto.LinkedTestCaseId, TenantId = login.ClientId, ModifiedById = login.UserId, }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetDefectPatternListAsync( LoginDTO login, CancellationToken ct) => await _Qe.QueryAsync( login, TCMSDefectQB.GET_DEFECT_PATTERN_LIST, new { TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); public async Task SaveDefectPatternAsync( TCMSDefectPatternDTO dto, LoginDTO login, CancellationToken ct) => await _Qe.ExecuteAsync( login, TCMSDefectQB.SAVE_DEFECT_PATTERN, new { dto.PatternId, dto.PatternCode, dto.Description, dto.IsActive, TenantId = login.ClientId, CreatedById = login.UserId, ModifiedById = login.UserId, }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetCapaGapReportAsync( LoginDTO login, CancellationToken ct) => await _Qe.QueryAsync( login, TCMSDefectQB.GET_CAPA_GAP_REPORT, new { TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false) ?? Enumerable.Empty(); }