using FMDAL.DTO.ScanIdentifier; using FMDAL.Query.ScanIdentifier; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System; using System.Data.Common; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FMDAL.CustomCode.ScanIdentifier { public class ScanIdentifierDAL : IScanIdentifierDAL { private readonly IQueryExecutor _qe; public ScanIdentifierDAL(IQueryExecutor qe) => _qe = qe; public async Task GetScanIdentifier(int scanIdentifierId, LoginDTO login, CancellationToken ct) { var items = await _qe.QueryAsync(login, ScanIdentifierQB.GET_SCANIDENTIFIER, new { ScanIdentifierId = scanIdentifierId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return items.FirstOrDefault(); } public async Task GetScanIdentifierByValue(string identifierValue, LoginDTO login, CancellationToken ct) { var items = await _qe.QueryAsync(login, ScanIdentifierQB.GET_SCANIDENTIFIER_BY_VALUE, new { IdentifierValue = identifierValue, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return items.FirstOrDefault(); } public async Task SaveScanIdentifier(ScanIdentifierDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.TenantId = login.ClientId; dto.CreatedOn = DateTime.UtcNow; dto.CreatedById = login.UserId; dto.ModifiedOn = DateTime.UtcNow; dto.ModifiedById = login.UserId; if (dto.ValidFrom == default) dto.ValidFrom = DateTime.UtcNow; await _qe.ExecuteAsync(login, ScanIdentifierQB.SAVE_SCANIDENTIFIER, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdateScanIdentifier(ScanIdentifierDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.TenantId = login.ClientId; dto.ModifiedOn = DateTime.UtcNow; dto.ModifiedById = login.UserId; await _qe.ExecuteAsync(login, ScanIdentifierQB.UPDATE_SCANIDENTIFIER, dto, tx, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteScanIdentifier(int scanIdentifierId, LoginDTO login, DbTransaction tx, CancellationToken ct) { await _qe.ExecuteAsync(login, ScanIdentifierQB.DELETE_SCANIDENTIFIER, new { ScanIdentifierId = scanIdentifierId, TenantId = login.ClientId, ModifiedById = login.UserId }, tx, cancellationToken: ct).ConfigureAwait(false); } } }