Skip to content

Commit

Permalink
Fixed syntax of data classes
Browse files Browse the repository at this point in the history
  • Loading branch information
torland-klev committed Oct 16, 2024
1 parent 997d051 commit f0e33ec
Showing 1 changed file with 66 additions and 67 deletions.
133 changes: 66 additions & 67 deletions app/src/main/java/com/pax/ecr/app/NexoMessages.kt
Original file line number Diff line number Diff line change
@@ -1,5 +1,6 @@
package com.pax.ecr.app

import kotlinx.serialization.SerialName
import kotlinx.serialization.Serializable
import java.math.BigDecimal
import java.nio.charset.Charset
Expand Down Expand Up @@ -120,17 +121,17 @@ object NexoMessages {

@Serializable
data class CardholderReceipt(
val Cardholder: Cardholder,
@SerialName("Cardholder") val cardholder: Cardholder,
) {
fun toReceiptData(items: Map<String, Int> = emptyMap()): String {
return """
<OutputText StartRow="1">Customer Receipt</OutputText>
<OutputText StartRow="2">Check out the integration guide for examples</OutputText>
<OutputText StartRow="4">${Cardholder.Mandatory.Outcome.AuthorisationResponder} ${Cardholder.Mandatory.Outcome.DebitStatus} ${Cardholder.Mandatory.Outcome.ApprovalCode} ${Cardholder.Mandatory.Outcome.AuthorisationResponseCode}</OutputText>
<OutputText StartRow="5">${Cardholder.Mandatory.TimeStamp.TimeOfPayment} ${Cardholder.Mandatory.TimeStamp.DateOfPayment}
</OutputText>
${if (items.isNotEmpty()) {
<OutputText StartRow="1">Customer Receipt</OutputText>
<OutputText StartRow="2">Check out the integration guide for examples</OutputText>
<OutputText StartRow="4">${cardholder.mandatory.outcome.authorisationResponder} ${cardholder.mandatory.outcome.debitStatus} ${cardholder.mandatory.outcome.approvalCode} ${cardholder.mandatory.outcome.authorisationResponseCode}</OutputText>
<OutputText StartRow="5">${cardholder.mandatory.timeStamp.timeOfPayment} ${cardholder.mandatory.timeStamp.dateOfPayment}
</OutputText>
${if (items.isNotEmpty()) {
items.keys.mapIndexed {
index,
key,
Expand All @@ -140,117 +141,115 @@ data class CardholderReceipt(
} else {
""
}}
<OutputText StartRow="${items.size + 7}">
</OutputText>
<OutputText StartRow="${items.size + 8}">${Cardholder.Mandatory.Payment.PaymentAmount} ${Cardholder.Mandatory.Payment.Currency}
</OutputText>
<OutputText StartRow="${items.size + 7}">
</OutputText>
<OutputText StartRow="${items.size + 8}">${cardholder.mandatory.payment.paymentAmount} ${cardholder.mandatory.payment.currency}
</OutputText>
""".trimIndent()
}
}

@Serializable
data class Cardholder(
val Mandatory: Mandatory,
val Optional: Optional? = null,
@SerialName("Mandatory") val mandatory: Mandatory,
@SerialName("Optional") val optional: Optional? = null,
)

@Serializable
data class Mandatory(
val Acquirer: Acquirer,
val CardAcceptor: CardAcceptor,
val CardDetails: CardDetails,
val Outcome: Outcome,
val Payment: Payment,
val TimeStamp: TimeStamp,
@SerialName("Acquirer") val acquirer: Acquirer,
@SerialName("CardAcceptor") val cardAcceptor: CardAcceptor,
@SerialName("CardDetails") val cardDetails: CardDetails,
@SerialName("Outcome") val outcome: Outcome,
@SerialName("Payment") val payment: Payment,
@SerialName("TimeStamp") val timeStamp: TimeStamp,
)

@Serializable
data class Acquirer(
val CardAcceptorNumber: String,
val TerminalID: String,
@SerialName("CardAcceptorNumber") val cardAcceptorNumber: String,
@SerialName("TerminalID") val terminalID: String,
)

@Serializable
data class CardAcceptor(
val Address1: String,
val BankAgentName: String,
val Name: String,
val OperatorNumber: String,
val OrganisationNumber: String,
val PostZipCode: String,
val TownCity: String,
@SerialName("Address1") val address1: String,
@SerialName("BankAgentName") val bankAgentName: String,
@SerialName("Name") val name: String,
@SerialName("OperatorNumber") val operatorNumber: String,
@SerialName("OrganisationNumber") val organisationNumber: String,
@SerialName("PostZipCode") val postZipCode: String,
@SerialName("TownCity") val townCity: String,
)

@Serializable
data class CardDetails(
val ApplicationIdentifier: String,
val CardSchemeName: CardSchemeName,
val PrimaryAccountNumber: String,
val TerminalVerificationResult: String,
val TransactionStatusInformation: String,
@SerialName("ApplicationIdentifier") val applicationIdentifier: String,
@SerialName("CardSchemeName") val cardSchemeName: CardSchemeName,
@SerialName("PrimaryAccountNumber") val primaryAccountNumber: String,
@SerialName("TerminalVerificationResult") val terminalVerificationResult: String,
@SerialName("TransactionStatusInformation") val transactionStatusInformation: String,
)

@Serializable
data class CardSchemeName(
val ApplicationLabel: String,
@SerialName("ApplicationLabel") val applicationLabel: String,
)

@Serializable
data class Outcome(
val ApprovalCode: String? = null,
val AuthorisationResponder: String,
val AuthorisationResponseCode: String? = null,
val DebitStatus: String,
@SerialName("ApprovalCode") val approvalCode: String? = null,
@SerialName("AuthorisationResponder") val authorisationResponder: String,
@SerialName("AuthorisationResponseCode") val authorisationResponseCode: String? = null,
@SerialName("DebitStatus") val debitStatus: String,
)

@Serializable
data class Payment(
val AuthorisationChannel: String,
val CardholderVerificationMethod: String,
val Currency: String,
val FinancialInstitution: String,
val PaymentAmount: String,
val ReceiptNumber: String,
val SignatureBlock: Boolean,
val TotalAmount: String,
val TransactionSource: String,
val TransactionType: String,
@SerialName("AuthorisationChannel") val authorisationChannel: String,
@SerialName("CardholderVerificationMethod") val cardholderVerificationMethod: String,
@SerialName("Currency") val currency: String,
@SerialName("FinancialInstitution") val financialInstitution: String,
@SerialName("PaymentAmount") val paymentAmount: String,
@SerialName("ReceiptNumber") val receiptNumber: String,
@SerialName("SignatureBlock") val signatureBlock: Boolean,
@SerialName("TotalAmount") val totalAmount: String,
@SerialName("TransactionSource") val transactionSource: String,
@SerialName("TransactionType") val transactionType: String,
)

@Serializable
data class TimeStamp(
val DateOfPayment: String,
val TimeOfPayment: String,
@SerialName("DateOfPayment") val dateOfPayment: String,
@SerialName("TimeOfPayment") val timeOfPayment: String,
)

@Serializable
data class Optional(
val CardAcceptor: OptionalCardAcceptor? = null,
val CardDetails: OptionalCardDetails? = null,
val Payment: OptionalPayment? = null,
val ReceiptString: List<String>? = null,
@SerialName("CardAcceptor") val cardAcceptor: OptionalCardAcceptor? = null,
@SerialName("CardDetails") val cardDetails: OptionalCardDetails? = null,
@SerialName("Payment") val payment: OptionalPayment? = null,
@SerialName("ReceiptString") val receiptString: List<String>? = null,
)

@Serializable
data class OptionalCardAcceptor(
val CountryName: String,
@SerialName("CountryName") val countryName: String,
)

@Serializable
data class OptionalCardDetails(
val CardIssuerNumber: String,
val CardSchemeName: CardSchemeName,
@SerialName("CardIssuerNumber") val cardIssuerNumber: String,
@SerialName("CardSchemeName") val cardSchemeName: CardSchemeName,
)

@Serializable
data class OptionalPayment(
val Reference: String,
@SerialName("Reference") val reference: String,
)

0 comments on commit f0e33ec

Please sign in to comment.