Skip to content

Commit

Permalink
fix: Add payment mode (#1860)
Browse files Browse the repository at this point in the history
Details:
- Use constant string for payment mode
- Add payment mode for offline payment + place order with PLACED status

Fixes: #1858
  • Loading branch information
anhanh11001 authored and iamareebjamal committed May 30, 2019
1 parent c69574f commit 0b59f57
Show file tree
Hide file tree
Showing 2 changed files with 36 additions and 17 deletions.
Original file line number Diff line number Diff line change
Expand Up @@ -625,10 +625,6 @@ class AttendeeFragment : Fragment() {
rootView.attendeeScrollView.longSnackbar(getString(R.string.paypal_payment_not_available))
false
}
getString(R.string.cheque), getString(R.string.on_site), getString(R.string.bank_transfer) -> {
rootView.attendeeScrollView.longSnackbar(getString(R.string.offline_payment_message))
false
}
else -> true
}

Expand Down Expand Up @@ -684,8 +680,9 @@ class AttendeeFragment : Fragment() {

if (attendeeViewModel.areAttendeeEmailsValid(attendees)) {
val country = rootView.countryPicker.selectedItem.toString()
val paymentOption = if (totalAmount != 0F) rootView.paymentSelector.selectedItem.toString()
else getString(R.string.free)
val paymentOption =
if (totalAmount != 0F) getPaymentMode(rootView.paymentSelector.selectedItem.toString())
else PAYMENT_MODE_FREE
val company = rootView.company.text.toString()
val city = rootView.city.text.toString()
val taxId = rootView.taxId.text.toString()
Expand Down Expand Up @@ -726,6 +723,16 @@ class AttendeeFragment : Fragment() {
})
}

private fun getPaymentMode(paymentSelectedItem: String): String =
when (paymentSelectedItem) {
getString(R.string.cheque) -> PAYMENT_MODE_CHEQUE
getString(R.string.bank_transfer) -> PAYMENT_MODE_BANK
getString(R.string.stripe) -> PAYMENT_MODE_STRIPE
getString(R.string.paypal) -> PAYMENT_MODE_PAYPAL
getString(R.string.on_site) -> PAYMENT_MODE_ONSITE
else -> PAYMENT_MODE_FREE
}

private fun showTicketSoldOutDialog(show: Boolean) {
if (show) {
val builder = AlertDialog.Builder(requireContext())
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -31,6 +31,12 @@ const val ORDER_STATUS_PENDING = "pending"
const val ORDER_STATUS_COMPLETED = "completed"
const val ORDER_STATUS_PLACED = "placed"
const val ORDER_STATUS_CANCELLED = "cancelled"
const val PAYMENT_MODE_FREE = "free"
const val PAYMENT_MODE_BANK = "bank"
const val PAYMENT_MODE_ONSITE = "onsite"
const val PAYMENT_MODE_CHEQUE = "cheque"
const val PAYMENT_MODE_PAYPAL = "paypal"
const val PAYMENT_MODE_STRIPE = "stripe"

class AttendeeViewModel(
private val attendeeService: AttendeeService,
Expand Down Expand Up @@ -67,7 +73,7 @@ class AttendeeViewModel(
val attendees = ArrayList<Attendee>()
private val attendeesForOrder = ArrayList<Attendee>()
private val ticketsForOrder = ArrayList<Ticket>()
private lateinit var paymentOption: String
private var paymentModeForOrder: String = PAYMENT_MODE_FREE
private var countryForOrder: String = ""
private var companyForOrder: String = ""
private var taxIdForOrder: String = ""
Expand Down Expand Up @@ -158,7 +164,7 @@ class AttendeeViewModel(
address: String,
city: String,
postalCode: String,
paymentOption: String
paymentMode: String
) {
attendeesForOrder.clear()
countryForOrder = country ?: ""
Expand All @@ -167,7 +173,7 @@ class AttendeeViewModel(
addressForOrder = address
cityForOrder = city
postalCodeForOrder = postalCode
this.paymentOption = paymentOption
paymentModeForOrder = paymentMode
var isAllDetailsFilled = true
createAttendeeIterations = 0
attendees.forEach {
Expand Down Expand Up @@ -214,14 +220,13 @@ class AttendeeViewModel(
private fun createOrder() {
val attendeeList = attendeesForOrder.map { AttendeeId(it.id) }.toList()
val amount: Float = totalAmount.value ?: 0F
var paymentMode: String? = paymentOption.toLowerCase()
if (amount <= 0) {
paymentMode = resource.getString(R.string.free)
paymentModeForOrder = PAYMENT_MODE_FREE
}
val eventId = event.value?.id
if (eventId != null) {
var order = Order(id = getId(), paymentMode = paymentMode, status = ORDER_STATUS_PENDING, amount = amount,
attendees = attendeeList, event = EventId(eventId))
var order = Order(id = getId(), paymentMode = paymentModeForOrder, status = ORDER_STATUS_PENDING,
amount = amount, attendees = attendeeList, event = EventId(eventId))
if (billingEnabled) {
order = order.copy(isBillingEnabled = true, company = companyForOrder, taxBusinessInfo = taxIdForOrder,
address = addressForOrder, city = cityForOrder, zipcode = postalCodeForOrder, country = countryForOrder)
Expand All @@ -235,10 +240,17 @@ class AttendeeViewModel(
}.subscribe({
orderIdentifier = it.identifier.toString()
Timber.d("Success placing order!")
if (it.paymentMode == resource.getString(R.string.free)) {
confirmOrder = ConfirmOrder(it.id.toString(), ORDER_STATUS_COMPLETED)
confirmOrderStatus(it.identifier.toString(), confirmOrder)
} else mutableMessage.value = resource.getString(R.string.order_success_message)
when (it.paymentMode) {
PAYMENT_MODE_FREE -> {
confirmOrder = ConfirmOrder(it.id.toString(), ORDER_STATUS_COMPLETED)
confirmOrderStatus(it.identifier.toString(), confirmOrder)
}
PAYMENT_MODE_CHEQUE, PAYMENT_MODE_BANK, PAYMENT_MODE_ONSITE -> {
confirmOrder = ConfirmOrder(it.id.toString(), ORDER_STATUS_PLACED)
confirmOrderStatus(it.identifier.toString(), confirmOrder)
}
else -> mutableMessage.value = resource.getString(R.string.order_success_message)
}
}, {
mutableMessage.value = resource.getString(R.string.order_fail_message)
Timber.d(it, "Failed creating Order")
Expand Down

0 comments on commit 0b59f57

Please sign in to comment.