using AnalyticsDAL.DTO.AnalysisMasterFields; using AnalyticsDAL.Query.AnalysisMasterFields; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System.Text.Json; namespace AnalyticsDAL.CustomCode.AnalysisMasterFields { public class AnalysisMasterFieldsDAL : IAnalysisMasterFieldsDAL { private readonly IQueryExecutor _queryExecutor; public AnalysisMasterFieldsDAL(IQueryExecutor queryExecutor) => _queryExecutor = queryExecutor; public async Task GetAnalysisMasterFields(int masterFieldsId, LoginDTO login, CancellationToken ct) { var result = await _queryExecutor.QuerySingleAsync( login, AnalysisMasterFieldsQB.GET_ANALYSIS_MASTER_FIELDS, new { MasterFieldsId = masterFieldsId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonSerializer.Serialize(result); } public async Task GetMasterFieldsByAnalysis(int analysisId, LoginDTO login, CancellationToken ct) { var result = await _queryExecutor.QueryAsync( login, AnalysisMasterFieldsQB.GET_MASTER_FIELDS_BY_ANALYSIS, new { AnalysisId = analysisId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonSerializer.Serialize(result); } public async Task GetSelectListMasterFieldsByAnalysis(int analysisId, LoginDTO login, CancellationToken ct) { var result = await _queryExecutor.QueryAsync( login, AnalysisMasterFieldsQB.GET_SELECTLIST_MASTER_FIELDS_BY_ANALYSIS, new { AnalysisId = analysisId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonSerializer.Serialize(result); } public async Task SaveAnalysisMasterFields(AnalysisMasterFieldsDTO dto, LoginDTO login, CancellationToken ct) { return await _queryExecutor.ExecuteIdentityAsync( login, AnalysisMasterFieldsQB.SAVE_ANALYSIS_MASTER_FIELDS, new { dto.AnalysisId, dto.CriteriaAttributeId, dto.FieldName, dto.DisplayName, dto.DbFieldName, dto.FilterCondition, dto.FieldType, dto.CriteriaAttributeType, dto.CriteriaAttributeName, dto.Variables, dto.IsFilterRequired, dto.SortOrder, dto.SourceType, TenantId = login.ClientId, dto.WorkspaceId, CreatedById = login.UserId, ModifiedById = login.UserId }).ConfigureAwait(false); } public async Task UpdateAnalysisMasterFields(AnalysisMasterFieldsDTO dto, LoginDTO login, CancellationToken ct) { await _queryExecutor.ExecuteAsync( login, AnalysisMasterFieldsQB.UPDATE_ANALYSIS_MASTER_FIELDS, new { dto.MasterFieldsId, dto.CriteriaAttributeId, dto.FieldName, dto.DisplayName, dto.DbFieldName, dto.FilterCondition, dto.FieldType, dto.CriteriaAttributeType, dto.CriteriaAttributeName, dto.Variables, dto.IsFilterRequired, dto.SortOrder, dto.WorkspaceId, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteAnalysisMasterFields(int masterFieldsId, LoginDTO login, CancellationToken ct) { await _queryExecutor.ExecuteAsync( login, AnalysisMasterFieldsQB.DELETE_ANALYSIS_MASTER_FIELDS, new { MasterFieldsId = masterFieldsId, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); } public async Task IsDuplicateFieldName(int analysisId, string fieldName, int masterFieldsId, LoginDTO login, CancellationToken ct) { var count = await _queryExecutor.ExecuteScalarAsync( login, AnalysisMasterFieldsQB.CHECK_DUPLICATE_FIELDNAME, new { AnalysisId = analysisId, FieldName = fieldName, TenantId = login.ClientId, MasterFieldsId = masterFieldsId }, cancellationToken: ct).ConfigureAwait(false); return count > 0; } } }