using System; namespace FMDAL.DTO.ScanIntake { // Request shape for the scan-intake endpoint โ€” Capture step of the RAM design's own // "Capture -> Identity Resolution -> Scan Event Engine -> Module Handlers" pipeline // (RAM_Modernization_Design_Reference.md ยง4.13). One row per individual scan; bulk // submission is just repeated calls against the same ScanSessionId. public class ScanSubmitRequestDTO { public int ScanSessionId { get; set; } public string RawScannedValue { get; set; } = string.Empty; public byte IdentifierType { get; set; } // (0.RFID_EPC,1.RFID_TID,2.QR,3.BARCODE,4.NFC,5.MANUAL) public int ScanZoneId { get; set; } public int ScanDeviceId { get; set; } public byte ScanIntent { get; set; } // (0.IDENTIFY,1.VERIFY,2.TRANSACT,3.AUDIT) // Required only when ScanIntent == TRANSACT (2) โ€” the operator's confirmed choice among // whatever ResolveContextAsync would have advised for this entity. public int? ConfirmedBizTransactionTypeId { get; set; } // Optional custody-transfer + reference-document context โ€” TRANSACT-intent only. Omit any // of these to keep today's default behavior (custody unchanged, no reference recorded). public int? ToCustodianType { get; set; } // (0.INTERNAL_OU,1.EMPLOYEE,2.PARTNER,3.CUSTOMER) public int? ToCustodianId { get; set; } public string? ReferenceType { get; set; } // e.g. "TMMHEAD", "TPRODUCTION" public int? ReferenceId { get; set; } public string? ReferenceNumber { get; set; } // free-text fallback when there's no live document to reference public DateTime? ReferenceDate { get; set; } public short? Rssi { get; set; } public DateTime? DeviceTimestamp { get; set; } // defaults to server time if omitted (online capture) } }