using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.Resource.Response; using GB5Shared.Validation; using Newtonsoft.Json; using WiDAL.DTOs; using WiDAL.Query.Wi; namespace WiDAL.CustomCode.Workstation; public class WorkstationDAL : IWorkstationDAL { private readonly IQueryExecutor _qe; private readonly IValidation _Validation; public WorkstationDAL(IQueryExecutor qe, IValidation validation) { _qe = qe; _Validation = validation; } public async Task GetListAsync(int workCenterId, bool activeOnly, LoginDTO login, CancellationToken ct) { var result = await _qe.QueryAsync(login, WorkstationQB.GET_LIST, new { TenantId = login.ClientId, WorkCenterId = workCenterId, ActiveOnly = activeOnly ? 1 : 0 }, cancellationToken: ct).ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task GetSelectListWorkstation(int first, int max, LoginDTO loginDTO) { var result = await _qe.QueryAsync( loginDTO, WorkstationQB.GET_SELECT_LIST, new { firstnumber = first, maxresult = max, TenantId = loginDTO.ClientId }) .ConfigureAwait(false); return JsonConvert.SerializeObject(result); } public async Task GetByIdAsync(int workstationId, LoginDTO login, CancellationToken ct) { return await _qe.QuerySingleAsync(login, WorkstationQB.GET_BY_ID, new { WorkstationId = workstationId, databaseName = login.DatabaseName }, cancellationToken: ct).ConfigureAwait(false); } public async Task InsertAsync(WorkstationDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteAsync(login, WorkstationQB.INSERT, new { dto.WorkstationId, dto.WorkCenterId, dto.WorkstationCode, dto.WorkstationName, dto.WorkstationType, dto.BayCode, dto.FloorDescription, dto.IpAddress, dto.MacAddress, dto.MaxOperators, dto.Remarks, IsActive = dto.IsActive, UserId = login.UserId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task UpdateAsync(WorkstationDTO dto, LoginDTO login, CancellationToken ct) { return await _qe.ExecuteAsync(login, WorkstationQB.UPDATE, new { dto.WorkstationId, dto.WorkCenterId, dto.WorkstationName, dto.WorkstationType, dto.BayCode, dto.FloorDescription, dto.IpAddress, dto.MacAddress, dto.MaxOperators, dto.Remarks, IsActive = dto.IsActive, UserId = login.UserId, TenantId = login.ClientId }, cancellationToken: ct).ConfigureAwait(false); } public async Task DeleteWorkStation(int WorkStationId, LoginDTO loginDTO) { try { string sql = WorkstationQB.DELETE_WORKSTATION; var parameter = new { workstationid = WorkStationId }; var result = await _qe.ExecuteAsync(loginDTO, sql, parameter); if (result > 0) return SuccessResponse.DeleteSuccessMessage; else return ErrorResponse.DeleteNotFoundMessage; } catch (Exception ex) { string error = await _Validation.HandleException(ex, ErrorResponse.DeleteErrorMessage); throw new Exception(error); } } }