public async Task QueryCard(PadField pad, QueryCardType cardType) { await SendRequest <EFTQueryCardResponse>(new EFTQueryCardRequest { QueryCardType = cardType, PurchaseAnalysisData = pad }); }
public async Task DoSettlement(SettlementType settlement, ReceiptCutModeType cutMode, PadField padInfo, ReceiptPrintModeType printMode, bool resetTotals) { await SendRequest <EFTSettlementResponse>(new EFTSettlementRequest { SettlementType = settlement, CutReceipt = cutMode, PurchaseAnalysisData = padInfo, ReceiptAutoPrint = printMode, ResetTotals = resetTotals }); }
public bool Equals(Block other) { bool equals = Fields.Count == other.Fields.Count && BlockName == other.BlockName; if (equals) { for (int i = 0; i < Fields.Count; i++) { if (!equals) { break; } Field f1 = Fields[i], f2 = other.Fields[i]; equals &= f1.Type == f2.Type; if (equals) { switch (Fields[i].Type) { case FieldType.FieldBlock: BlockField bf1 = (BlockField)f1; BlockField bf2 = (BlockField)f2; equals &= bf1.BlockList.Count == bf2.BlockList.Count; if (equals) { for (int j = 0; j < bf1.BlockList.Count; j++) { if (equals) { equals = bf1.BlockList[j].Equals(bf2.BlockList[j]); } } } break; case FieldType.FieldStruct: equals &= ((Block)f1.Value).Equals((Block)f2.Value); break; case FieldType.FieldPad: PadField pf1 = (PadField)f1; PadField pf2 = (PadField)f2; for (int j = 0; j < pf1.Length; j++) { if (equals) { equals &= ((byte[])pf1.Value)[j] == ((byte[])pf2.Value)[j]; } } break; default: if (f1.Value == null && f2.Value == null) { continue; } else { equals &= f1.Value.Equals(f2.Value); } break; } } } } return(equals); }
public IfpTagBlock(IfpNode ifpNode) { int size; if (ifpNode.HeaderSize > ifpNode.TagBlockSize) { size = ifpNode.HeaderSize; } else { size = ifpNode.TagBlockSize; } AnalyzeFieldSet(ifpNode.Nodes, size); int offset = 0, previousOffset = 0; if (ifpNode.Alignment > 0) { alignment = ifpNode.Alignment; } bool skipId = false; foreach (var node in ifpNode.Nodes) { Field field = null; if (node.FieldOffset >= offset) { offset = node.FieldOffset; } else if (node.FieldOffset > 0) { continue; } if (node.Type == IfpNodeType.Tag) { int nodeIndex = ifpNode.Nodes.IndexOf(node); if (ifpNode.Nodes.Count > nodeIndex && ifpNode.Nodes[nodeIndex + 1].Type == IfpNodeType.TagId) { skipId = true; continue; } } else if (node.Type == IfpNodeType.TagId && skipId) { skipId = false; field = new TagReferenceField(node.Name); } else { switch (node.Type) { case IfpNodeType.TagBlock: field = new IfpBlockField(node); break; case IfpNodeType.UnusedArray: field = new PadField(node.Name, node.Length); break; case IfpNodeType.Byte: case IfpNodeType.SignedByte: field = new CharIntegerField(node.Name); break; case IfpNodeType.Short: case IfpNodeType.UnsignedShort: field = new ShortIntegerField(node.Name); break; case IfpNodeType.Int: case IfpNodeType.UnsignedInt: field = new LongIntegerField(node.Name); break; case IfpNodeType.Single: field = new RealField(node.Name); break; case IfpNodeType.Enumerator8: field = new CharEnumField(node.Name); break; case IfpNodeType.Enumerator16: field = new EnumField(node.Name); break; case IfpNodeType.Enumerator32: field = new LongEnumField(node.Name); break; case IfpNodeType.Bitfield8: field = new ByteFlagsField(node.Name); break; case IfpNodeType.Bitfield16: field = new WordFlagsField(node.Name); break; case IfpNodeType.Bitfield32: field = new LongFlagsField(node.Name); break; case IfpNodeType.String32: field = new StringField(node.Name); break; case IfpNodeType.String64: break; case IfpNodeType.Unicode128: break; case IfpNodeType.Unicode256: break; case IfpNodeType.Tag: field = new TagField(node.Name); break; case IfpNodeType.TagId: field = new TagIndexField(node.Name); break; case IfpNodeType.StringId: field = new StringIdField(node.Name); break; } } if (field != null) { if (node.Type == IfpNodeType.Enumerator8 || node.Type == IfpNodeType.Enumerator16 || node.Type == IfpNodeType.Enumerator32 || node.Type == IfpNodeType.Bitfield8 || node.Type == IfpNodeType.Bitfield16 || node.Type == IfpNodeType.Bitfield32) { var optionField = (OptionField)field; foreach (var optionNode in node.Nodes) { optionField.Options.Add(new Option(optionNode.Name, optionNode.Value)); } } if (previousOffset <= offset) { int length = offset - previousOffset; if (length > 0) { Fields.Add(new PadField("ifp padding", length)); } offset += field.Size; previousOffset = offset; Fields.Add(field); } } } if (offset < size) { Fields.Add(new PadField("ifp padding", size - offset)); } if (!string.IsNullOrEmpty(ifpNode.Label)) { var labelFields = Fields.Where(f => f.Name.Equals(ifpNode.Label, StringComparison.OrdinalIgnoreCase)); foreach (var labelField in labelFields) { this.labelFields.Add(labelField); } } }