HostResponse.fromMap constructor

HostResponse.fromMap(
  1. Map<String, dynamic>? map
)

Implementation

factory HostResponse.fromMap(Map<String, dynamic>? map) {
  if (map == null) return const HostResponse();
  // Helper to get string, handling potential type mismatches
  String? getString(String key) => map[key]?.toString();

  return HostResponse(
    expressResponseCode:
        getString('expressResponseCode') ?? getString('ExpressResponseCode'),
    expressResponseMessage:
        getString('expressResponseMessage') ??
        getString('ExpressResponseMessage'),
    hostResponseCode:
        getString('hostResponseCode') ?? getString('HostResponseCode'),
    expressTransactionDate:
        getString('expressTransactionDate') ??
        getString('ExpressTransactionDate'),
    expressTransactionTime:
        getString('expressTransactionTime') ??
        getString('ExpressTransactionTime'),
    expressTransactionTimezone:
        getString('expressTransactionTimezone') ??
        getString('ExpressTransactionTimezone'),

    hostBatchId: getString('hostBatchId') ?? getString('HostBatchID'),
    hostItemId: getString('hostItemId') ?? getString('HostItemID'),
    hostBatchAmount:
        getString('hostBatchAmount') ?? getString('HostBatchAmount'),

    cardLogo: getString('cardLogo') ?? getString('CardLogo'),
    emvData: getString('emvData') ?? getString('EMVData'),
    cardNumberMasked:
        getString('cardNumberMasked') ?? getString('CardNumberMasked'),
    bin: getString('bin') ?? getString('BIN'),

    transactionId:
        getString('transactionId') ??
        getString('TransactionID') ??
        getString('xmlTransactionId'),
    approvalNumber:
        getString('approvalNumber') ?? getString('ApprovalNumber'),
    referenceNumber:
        getString('referenceNumber') ?? getString('ReferenceNumber'),
    processorName: getString('processorName') ?? getString('ProcessorName'),
    transactionStatus:
        getString('transactionStatus') ?? getString('TransactionStatus'),
    transactionStatusCode:
        getString('transactionStatusCode') ??
        getString('TransactionStatusCode'),
    hostTransactionId:
        getString('hostTransactionId') ?? getString('HostTransactionID'),
    pinlessPOSConversionIndicator:
        getString('pinlessPOSConversionIndicator') ??
        getString('PINlessPOSConversionIndicator'),
    retrievalReferenceNumber:
        getString('retrievalReferenceNumber') ??
        getString('RetrievalReferenceNumber'),
    systemTraceAuditNumber:
        getString('systemTraceAuditNumber') ??
        getString('SystemTraceAuditNumber'),

    tokenId: getString('tokenId') ?? getString('TokenID'),
    tokenProvider: getString('tokenProvider') ?? getString('TokenProvider'),

    // Alias mapping
    authCode: getString('authCode') ?? getString('ApprovalNumber'),
    responseCode: getString('responseCode') ?? getString('HostResponseCode'),
    responseMessage:
        getString('responseMessage') ?? getString('ExpressResponseMessage'),
    traceNumber:
        getString('traceNumber') ?? getString('SystemTraceAuditNumber'),
    batchNumber: getString('batchNumber') ?? getString('HostBatchID'),
    hostResponseMessage: getString(
      'hostResponseMessage',
    ), // Usually not in XML directly if HostResponseCode is
    xmlTransactionId:
        getString('xmlTransactionId') ?? getString('TransactionID'),
  );
}