using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using SwDAL.DTO.RolloutCampaign; using SwDAL.Query.RolloutCampaign; namespace SwDAL.CustomCode.RolloutCampaign; public class RolloutCampaignDAL : IRolloutCampaignDAL { private readonly IQueryExecutor _QueryExecutor; public RolloutCampaignDAL(IQueryExecutor queryExecutor) => _QueryExecutor = queryExecutor; public async Task InsertCampaign(RolloutCampaignDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, RolloutCampaignQB.INSERT_CAMPAIGN, dto, cancellationToken: ct) .ConfigureAwait(false); public async Task GetById(int rolloutCampaignId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, RolloutCampaignQB.GET_BY_ID, new { RolloutCampaignId = rolloutCampaignId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task> GetList(LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, RolloutCampaignQB.GET_LIST, new { TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task UpdateCampaignStatus(int rolloutCampaignId, byte campaignStatus, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, RolloutCampaignQB.UPDATE_CAMPAIGN_STATUS, new { RolloutCampaignId = rolloutCampaignId, CampaignStatus = campaignStatus, ModifiedById = login.UserId, ModifiedOn = DateTime.UtcNow, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task> ResolveTargetsAllForDbModel(int dbModelId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, RolloutCampaignQB.RESOLVE_TARGETS_ALL_FOR_DBMODEL, new { DbModelId = dbModelId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task> ResolveTargetsAllOnServer(int dbModelId, int targetServerId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, RolloutCampaignQB.RESOLVE_TARGETS_ALL_ON_SERVER, new { DbModelId = dbModelId, TargetServerId = targetServerId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task InsertTarget(RolloutTargetDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, RolloutCampaignQB.INSERT_TARGET, dto, cancellationToken: ct) .ConfigureAwait(false); public async Task> GetTargetsForCampaign(int rolloutCampaignId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, RolloutCampaignQB.GET_TARGETS_FOR_CAMPAIGN, new { RolloutCampaignId = rolloutCampaignId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task GetTargetById(int rolloutTargetId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, RolloutCampaignQB.GET_TARGET_BY_ID, new { RolloutTargetId = rolloutTargetId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task> GetDueTargets(DateTime now, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QueryAsync( login, RolloutCampaignQB.GET_DUE_TARGETS, new { Now = now }, cancellationToken: ct) .ConfigureAwait(false); public async Task UpdateTargetStatus(RolloutTargetDTO dto, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteAsync(login, RolloutCampaignQB.UPDATE_TARGET_STATUS, dto, cancellationToken: ct) .ConfigureAwait(false); public async Task GetCampaignStatusRollup(int rolloutCampaignId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.QuerySingleAsync( login, RolloutCampaignQB.GET_CAMPAIGN_STATUS_ROLLUP, new { RolloutCampaignId = rolloutCampaignId, TenantId = login.ClientId }, cancellationToken: ct) .ConfigureAwait(false); public async Task IsPackageAlreadyApplied(int clientDbId, int packageId, LoginDTO login, CancellationToken ct) => await _QueryExecutor.ExecuteScalarAsync( login, RolloutCampaignQB.IS_PACKAGE_ALREADY_APPLIED, new { ClientDbId = clientDbId, PackageId = packageId }, cancellationToken: ct) .ConfigureAwait(false) == 1; }