From 74c84807e421b395211d21a7badb2a46d4a85913 Mon Sep 17 00:00:00 2001
From: 62160052 <62160052@go.buu.ac.th>
Date: Mon, 19 Sep 2022 03:54:15 +0700
Subject: [PATCH] Set Lifecycle owner to observe LiveData

---
 app/src/main/java/com/example/cupcake/FlavorFragment.kt  | 1 +
 app/src/main/java/com/example/cupcake/PickupFragment.kt  | 1 +
 app/src/main/java/com/example/cupcake/SummaryFragment.kt | 1 +
 .../java/com/example/cupcake/model/OrderViewModel.kt     | 9 ++++++++-
 4 files changed, 11 insertions(+), 1 deletion(-)

diff --git a/app/src/main/java/com/example/cupcake/FlavorFragment.kt b/app/src/main/java/com/example/cupcake/FlavorFragment.kt
index e7b74d2..cae160c 100644
--- a/app/src/main/java/com/example/cupcake/FlavorFragment.kt
+++ b/app/src/main/java/com/example/cupcake/FlavorFragment.kt
@@ -49,6 +49,7 @@ class FlavorFragment : Fragment() {
 
         binding?.apply {
             viewModel = sharedViewModel
+            lifecycleOwner = viewLifecycleOwner
             nextButton.setOnClickListener { goToNextScreen() }
         }
     }
diff --git a/app/src/main/java/com/example/cupcake/PickupFragment.kt b/app/src/main/java/com/example/cupcake/PickupFragment.kt
index e1bb1fd..799116c 100644
--- a/app/src/main/java/com/example/cupcake/PickupFragment.kt
+++ b/app/src/main/java/com/example/cupcake/PickupFragment.kt
@@ -49,6 +49,7 @@ class PickupFragment : Fragment() {
 
         binding?.apply {
             viewModel = sharedViewModel
+            lifecycleOwner = viewLifecycleOwner
             nextButton.setOnClickListener { goToNextScreen() }
         }
     }
diff --git a/app/src/main/java/com/example/cupcake/SummaryFragment.kt b/app/src/main/java/com/example/cupcake/SummaryFragment.kt
index 839e377..9a9affb 100644
--- a/app/src/main/java/com/example/cupcake/SummaryFragment.kt
+++ b/app/src/main/java/com/example/cupcake/SummaryFragment.kt
@@ -50,6 +50,7 @@ class SummaryFragment : Fragment() {
 
         binding?.apply {
             viewModel = sharedViewModel
+            lifecycleOwner = viewLifecycleOwner
             sendButton.setOnClickListener { sendOrder() }
         }
     }
diff --git a/app/src/main/java/com/example/cupcake/model/OrderViewModel.kt b/app/src/main/java/com/example/cupcake/model/OrderViewModel.kt
index 67b4a83..3539770 100644
--- a/app/src/main/java/com/example/cupcake/model/OrderViewModel.kt
+++ b/app/src/main/java/com/example/cupcake/model/OrderViewModel.kt
@@ -8,6 +8,7 @@ import java.util.Calendar
 import java.util.Locale
 
 private const val PRICE_PER_CUPCAKE = 2.00
+private const val PRICE_FOR_SAME_DAY_PICKUP = 3.00
 
 class OrderViewModel : ViewModel() {
     private val _quantity = MutableLiveData<Int>()
@@ -29,7 +30,12 @@ class OrderViewModel : ViewModel() {
     }
 
     private fun updatePrice() {
-        _price.value = (quantity.value ?: 0) * PRICE_PER_CUPCAKE
+        var calculatedPrice = (quantity.value ?: 0) * PRICE_PER_CUPCAKE
+        // If the user selected the first option (today) for pickup, add the surcharge
+        if (dateOptions[0] == _date.value) {
+            calculatedPrice += PRICE_FOR_SAME_DAY_PICKUP
+        }
+        _price.value = calculatedPrice
     }
 
     private fun getPickupOptions(): List<String> {
@@ -62,6 +68,7 @@ class OrderViewModel : ViewModel() {
 
     fun setDate(pickupDate: String) {
         _date.value = pickupDate
+        updatePrice()
     }
 
     fun hasNoFlavorSet(): Boolean {
-- 
GitLab