using System.Collections.Generic; using System.Threading; using System.Threading.Tasks; using FrameworkDAL.DTO.Promotion; using FrameworkDAL.Query.Promotion; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; namespace FrameworkDAL.CustomCode.Promotion { public class PromotionCounterpartyDAL : IPromotionCounterpartyDAL { private readonly IQueryExecutor _qe; public PromotionCounterpartyDAL(IQueryExecutor qe) => _qe = qe; public async Task GetByEnvironmentCode( string environmentCode, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, PromotionCounterpartyQB.GET_BY_ENVIRONMENT_CODE, new { EnvironmentCode = environmentCode }, cancellationToken: ct).ConfigureAwait(false); foreach (var row in rows) return row; // PK lookup — at most one row return null; } public async Task GetByEnvironmentCodeForAdmin( string environmentCode, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, PromotionCounterpartyQB.GET_BY_ENVIRONMENT_CODE_FOR_ADMIN, new { EnvironmentCode = environmentCode }, cancellationToken: ct).ConfigureAwait(false); foreach (var row in rows) return row; // PK lookup — at most one row return null; } public async Task> GetList(LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, PromotionCounterpartyQB.GET_LIST, new { }, cancellationToken: ct).ConfigureAwait(false); public async Task> GetSelectList(LoginDTO login, CancellationToken ct) => await _qe.QueryAsync(login, PromotionCounterpartyQB.GET_SELECTLIST, new { }, cancellationToken: ct).ConfigureAwait(false); public async Task ExistsByEnvironmentCode(string environmentCode, LoginDTO login, CancellationToken ct) { var count = await _qe.ExecuteScalarAsync(login, PromotionCounterpartyQB.CHECK_EXISTS, new { EnvironmentCode = environmentCode }, cancellationToken: ct).ConfigureAwait(false); return count > 0; } public async Task InsertCounterparty(PromotionCounterpartyDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, PromotionCounterpartyQB.INSERT, dto, cancellationToken: ct) .ConfigureAwait(false); public async Task UpdateCounterparty(PromotionCounterpartyDTO dto, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, PromotionCounterpartyQB.UPDATE, dto, cancellationToken: ct) .ConfigureAwait(false); public async Task DeleteCounterparty(string environmentCode, LoginDTO login, CancellationToken ct) => await _qe.ExecuteAsync(login, PromotionCounterpartyQB.DELETE, new { EnvironmentCode = environmentCode }, cancellationToken: ct).ConfigureAwait(false); } }