using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using Newtonsoft.Json; using WiDAL.DTOs; using WiDAL.Query.Wi; namespace WiDAL.CustomCode.WorkstationAvailability; public class WorkstationAvailabilityDAL : IWorkstationAvailabilityDAL { private readonly IQueryExecutor _qe; public WorkstationAvailabilityDAL(IQueryExecutor qe) => _qe = qe; public async Task GetAvailabilityAsync(int workstationId, DateTime rangeFrom, DateTime rangeTo, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync( login, WorkstationAvailabilityQB.GET_AVAILABILITY, new { WorkstationId = workstationId, RangeFrom = rangeFrom, RangeTo = rangeTo, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task InsertOutageAsync(WorkstationOutageDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteAsync(login, WorkstationAvailabilityQB.INSERT_OUTAGE, new { dto.WorkstationOutageId, dto.WorkstationId, dto.OutageType, dto.StartedOn, dto.Remarks, UserId = login.UserId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task CloseOutageAsync(int workstationOutageId, DateTime endedOn, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteAsync(login, WorkstationAvailabilityQB.CLOSE_OUTAGE, new { WorkstationOutageId = workstationOutageId, EndedOn = endedOn, UserId = login.UserId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } }