using GB5Shared.DTO.Framework.Login; using GB5Shared.QueryExecutor; using GB5Shared.ResponseStandard; using MMDAL.DTO.Scheduling; using MMDAL.Query.Scheduling; using System.Data.Common; using static GB5Shared.DTO.GOP.GBGatewayDTO; namespace MMDAL.CustomCode.Scheduling { public class BatchRuleDAL : IBatchRuleDAL { private readonly IQueryExecutor _QueryExecutor; public BatchRuleDAL(IQueryExecutor queryExecutor) { _QueryExecutor = queryExecutor; } public async Task GetBatchRule( int batchRuleId, LoginDTO loginDTO, CancellationToken ct = default) { try { return await _QueryExecutor.QuerySingleAsync( loginDTO, BatchRuleQB.GET_BATCHRULE, new { BatchRuleId = batchRuleId }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task> GetBatchRuleList( int workCenterId, LoginDTO loginDTO, CancellationToken ct = default) { try { return await _QueryExecutor.QueryAsync( loginDTO, BatchRuleQB.GET_BATCHRULE_LIST, new { WorkCenterId = workCenterId }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task GetBatchRuleForProcess( int workCenterId, int processId, LoginDTO loginDTO, CancellationToken ct = default) { try { return await _QueryExecutor.QuerySingleAsync( loginDTO, BatchRuleQB.GET_BATCHRULE_FOR_PROCESS, new { WorkCenterId = workCenterId, ProcessId = processId, TenantId= loginDTO.ClientId }, cancellationToken: ct).ConfigureAwait(false); } catch (Exception) { throw; } } public async Task> SaveBatchRule( BatchRuleDTO dto, LoginDTO loginDTO, DbTransaction tx) { try { dto.CreatedById = loginDTO.UserId; dto.CreatedOn = DateTime.UtcNow; dto.ModifiedById = loginDTO.UserId; dto.ModifiedOn = DateTime.UtcNow; dto.TenantId = loginDTO.ClientId; int rows = await _QueryExecutor.ExecuteAsync( loginDTO, BatchRuleQB.SAVE_BATCHRULE, dto, tx).ConfigureAwait(false); return rows > 0 ? Result.Success("Batch rule saved.") : Result.Failure("Failed to save batch rule."); } catch (Exception) { throw; } } public async Task> UpdateBatchRule( BatchRuleDTO dto, LoginDTO loginDTO, DbTransaction tx) { try { dto.ModifiedById = loginDTO.UserId; dto.ModifiedOn = DateTime.UtcNow; int rows = await _QueryExecutor.ExecuteAsync( loginDTO, BatchRuleQB.UPDATE_BATCHRULE, dto, tx).ConfigureAwait(false); return rows > 0 ? Result.Success("Batch rule updated.") : Result.Failure("Batch rule not found."); } catch (Exception) { throw; } } public async Task> DeleteBatchRule( int batchRuleId, LoginDTO loginDTO, DbTransaction tx) { try { int rows = await _QueryExecutor.ExecuteAsync( loginDTO, BatchRuleQB.DELETE_BATCHRULE, new { BatchRuleId = batchRuleId }, tx).ConfigureAwait(false); return rows > 0 ? Result.Success("Batch rule deleted.") : Result.Failure("Batch rule not found or already deleted."); } catch (Exception) { throw; } } } }