using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using WiDAL.DTOs; using WiDAL.Query.Wi; namespace WiDAL.CustomCode.WiScanCode; public class WiScanCodeDAL : IWiScanCodeDAL { private readonly IQueryExecutor _qe; public WiScanCodeDAL(IQueryExecutor qe) => _qe = qe; public async Task ExistsAsync(ScanCodeType type, int entityId, LoginDTO login, CancellationToken ct) { string sql = type switch { ScanCodeType.Workstation => WiScanCodeQB.EXISTS_WORKSTATION, ScanCodeType.Employee => WiScanCodeQB.EXISTS_EMPLOYEE, ScanCodeType.Wi => WiScanCodeQB.EXISTS_WI, ScanCodeType.WorkOrderDetail => WiScanCodeQB.EXISTS_WORKORDERDETAIL, _ => throw new ArgumentOutOfRangeException(nameof(type), type, "Unknown scan code type.") }; int count = await _qe.ExecuteScalarAsync(login, sql, new { EntityId = entityId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return count > 0; } public async Task GetWorkOrderDetailVerifyData(int entityId, LoginDTO login, CancellationToken ct) { var rows = await _qe.QueryAsync(login, WiScanCodeQB.GET_WORKORDERDETAIL_VERIFY, new { EntityId = entityId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return rows.FirstOrDefault(); } }