using FMDAL.DTO.ScanEvent; using FMDAL.Query.ScanEvent; using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using System; using System.Collections.Generic; using System.Data.Common; using System.Linq; using System.Threading; using System.Threading.Tasks; namespace FMDAL.CustomCode.ScanEvent { public class ScanEventDAL : IScanEventDAL { private readonly IQueryExecutor _qe; public ScanEventDAL(IQueryExecutor qe) => _qe = qe; public async Task GetScanEvent(int scanEventId, LoginDTO login, CancellationToken ct) { var items = await _qe.QueryAsync(login, ScanEventQB.GET_SCANEVENT, new { ScanEventId = scanEventId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return items.FirstOrDefault(); } public async Task> GetScanEventListBySession(int scanSessionId, LoginDTO login, CancellationToken ct) { return await _qe.QueryAsync(login, ScanEventQB.GET_SCANEVENT_LIST_BY_SESSION, new { ScanSessionId = scanSessionId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task SaveScanEvent(ScanEventDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct) { dto.TenantId = login.ClientId; dto.ServerTimestamp = DateTime.UtcNow; await _qe.ExecuteAsync(login, ScanEventQB.SAVE_SCANEVENT, dto, tx, cancellationToken: ct).ConfigureAwait(false); } } }