using GB5Shared.DTO.Framework.Criteria; using GB5Shared.DTO.Framework.Login; using MMDAL.DTO.ItemReason; using MMDAL.DTO.Production; using System.Data.Common; namespace MMDAL.CustomCode.Production { public interface IProductionDAL { Task GetProduction(int productionId, LoginDTO login, CancellationToken ct); Task> GetProductionDetails(int productionId, LoginDTO login, CancellationToken ct); Task> GetProductionStoppages(int productionId, LoginDTO login, CancellationToken ct); // Returns total count via out; use QueryPagedAsync pattern Task<(IEnumerable Items, int TotalCount)> GetProductionList( int ouId, DateTime? fromDate, DateTime? toDate, int firstNumber, int maxResult, LoginDTO login, CancellationToken ct); Task SaveProductionHeader(ProductionSaveDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateProductionHeader(ProductionSaveDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task BulkSaveProductionDetails(IEnumerable rows, int tenantId, LoginDTO login, DbTransaction tx, CancellationToken ct); // Resources can exceed 100 rows (one per operator per operation) — always BulkInsert Task BulkSaveProductionResources(IEnumerable rows, int tenantId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task SaveProductionStoppage(ProductionStoppageSaveDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task SaveItemReason(ItemReasonSaveDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task InsertStockLedgerFromProduction(ProductionStockLedgerPostDTO dto, LoginDTO login, DbTransaction tx, CancellationToken ct); Task DeleteProductionChildren(int productionId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task SoftDeleteProduction(int productionId, LoginDTO login, DbTransaction tx, CancellationToken ct); Task UpdateWOReleaseStatus(int indentDetailId, byte releaseStatus, LoginDTO login, DbTransaction tx, CancellationToken ct); Task GetSelectListProduction(int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO); // ── Production.svc/RejectionReport parity ──────────────────────────── Task GetRejectionReport(int Type, int SubType, int FirstNumber, int MaxResult, CriteriaDTO CriteriaDTO, LoginDTO LoginDTO, bool IsCount = false); // ── Production Entry screen's WO+stage queue (TPOSTEDINDENTDETAIL-backed) ─ Task> GetProductionEntryQueue( int ouId, int workCenterId, bool showCompleted, int nestingPlanId, LoginDTO login, CancellationToken ct); } }