using System.Text.Json; using AnalyticsDAL.DTO.KPIManual; using AnalyticsDAL.Query.KPIManual; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace AnalyticsDAL.CustomCode.KPIManual { public class KPIManualDAL : IKPIManualDAL { private readonly IQueryExecutor _queryExecutor; public KPIManualDAL(IQueryExecutor queryExecutor) { _queryExecutor = queryExecutor; } public async Task GetKPIManual(int kpiManualId, LoginDTO login, CancellationToken ct) { var dto = await _queryExecutor.QuerySingleAsync( login, KPIManualQB.GET_KPIMANUAL, new { KPIManualId = kpiManualId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonSerializer.Serialize(dto); } public async Task GetListKPIManual(int kpiId, int scenarioId, int periodDetailId, LoginDTO login, CancellationToken ct) { var list = await _queryExecutor.QueryAsync( login, KPIManualQB.GET_LIST_KPIMANUAL, new { TenantId = login.ClientId, KPIId = kpiId, ScenarioId = scenarioId, PeriodDetailId = periodDetailId }, cancellationToken: ct).ConfigureAwait(false); return JsonSerializer.Serialize(list); } public async Task SaveKPIManual(KPIManualDTO dto, LoginDTO login, CancellationToken ct) { return await _queryExecutor.ExecuteIdentityAsync( login, KPIManualQB.SAVE_KPIMANUAL, new { ScenarioId = dto.KPIManualScenarioId, PeriodDetailId = dto.GBPeriodDetailId, dto.KPIId, MemberOUId = dto.KPIManualMemberOUId, Member1Id = dto.KPIManualMember1Id, Member2Id = dto.KPIManualMember2Id, Member3Id = dto.KPIManualMember3Id, Member4Id = dto.KPIManualMember4Id, Member5Id = dto.KPIManualMember5Id, DIMOUId = dto.KPIManualDIMOUId, DIM1Id = dto.KPIManualDIM1Id, DIM2Id = dto.KPIManualDIM2Id, DIM3Id = dto.KPIManualDIM3Id, DIM4Id = dto.KPIManualDIM4Id, DIM5Id = dto.KPIManualDIM5Id, dto.KPIManualActual, dto.KPIManualTarget, dto.KPIManualSortOrder, KPIManualSourceType = (byte)5, TenantId = login.ClientId, CreatedById = login.UserId, ModifiedById = login.UserId }).ConfigureAwait(false); } public async Task UpdateKPIManual(KPIManualDTO dto, LoginDTO login, CancellationToken ct) { await _queryExecutor.ExecuteAsync( login, KPIManualQB.UPDATE_KPIMANUAL, new { dto.KPIManualId, dto.KPIManualActual, dto.KPIManualTarget, dto.KPIManualSortOrder, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteKPIManual(int kpiManualId, LoginDTO login, CancellationToken ct) { await _queryExecutor.ExecuteAsync( login, KPIManualQB.DELETE_KPIMANUAL, new { KPIManualId = kpiManualId, TenantId = login.ClientId, ModifiedById = login.UserId }, cancellationToken: ct).ConfigureAwait(false); } public async Task IsDuplicate(KPIManualDTO dto, LoginDTO login, CancellationToken ct) { var count = await _queryExecutor.ExecuteScalarAsync( login, KPIManualQB.CHECK_DUPLICATE, new { dto.KPIId, ScenarioId = dto.KPIManualScenarioId, PeriodDetailId = dto.GBPeriodDetailId, MemberOUId = dto.KPIManualMemberOUId, Member1Id = dto.KPIManualMember1Id, Member2Id = dto.KPIManualMember2Id, Member3Id = dto.KPIManualMember3Id, Member4Id = dto.KPIManualMember4Id, Member5Id = dto.KPIManualMember5Id, TenantId = login.ClientId, KPIManualId = dto.KPIManualId }, cancellationToken: ct).ConfigureAwait(false); return count > 0; } } }