using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using WiDAL.DTOs; using WiDAL.Query.Wi; namespace WiDAL.CustomCode.LineStation; public class LineStationDAL : ILineStationDAL { private readonly IQueryExecutor _qe; public LineStationDAL(IQueryExecutor qe) => _qe = qe; public async Task GetCurrentByLineAsync(int productionLineId, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync(login, LineStationQB.GET_CURRENT_BY_LINE, new { ProductionLineId = productionLineId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task GetCurrentByWorkstationAsync(int workstationId, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync(login, LineStationQB.GET_CURRENT_BY_WORKSTATION, new { WorkstationId = workstationId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task CloseCurrentAsync(int productionLineId, int workstationId, DateOnly effectiveTo, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteAsync(login, LineStationQB.CLOSE_CURRENT, new { ProductionLineId = productionLineId, WorkstationId = workstationId, EffectiveTo = effectiveTo, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task InsertNewAsync(ProductionLineStationDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteAsync(login, LineStationQB.INSERT_NEW, new { dto.ProductionLineId, dto.WorkstationId, dto.PositionNo, dto.EffectiveFrom, dto.Remarks, UserId = login.UserId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task> GetByLineId(int lineId,LoginDTO loginDTO,CancellationToken ct) { var result = await _qe.QueryAsync( loginDTO, LineStationQB.GET_BY_LINE_ID, new { LineId = lineId } ).ConfigureAwait(false); return result.ToList(); } }