package com.example.cupcake.model import androidx.lifecycle.LiveData import androidx.lifecycle.MutableLiveData import androidx.lifecycle.ViewModel import java.text.SimpleDateFormat import java.util.Calendar import java.util.Locale private const val PRICE_PER_CUPCAKE = 2.00 class OrderViewModel : ViewModel() { private val _quantity = MutableLiveData<Int>() val quantity: LiveData<Int> = _quantity private val _flavor = MutableLiveData<String>() val flavor: LiveData<String> = _flavor private val _date = MutableLiveData<String>() val date: LiveData<String> = _date private val _price = MutableLiveData<Double>() val price: LiveData<Double> = _price val dateOptions = getPickupOptions() init { resetOrder() } private fun updatePrice() { _price.value = (quantity.value ?: 0) * PRICE_PER_CUPCAKE } private fun getPickupOptions(): List<String> { val options = mutableListOf<String>() val formatter = SimpleDateFormat("E MMM d", Locale.getDefault()) val calendar = Calendar.getInstance() // Create a list of dates starting with the current date and the following 3 dates repeat(4) { options.add(formatter.format(calendar.time)) calendar.add(Calendar.DATE, 1) } return options } fun resetOrder() { _quantity.value = 0 _flavor.value = "" _date.value = dateOptions[0] _price.value = 0.0 } fun setQuantity(numberCupcakes: Int) { _quantity.value = numberCupcakes updatePrice() } fun setFlavor(desiredFlavor: String) { _flavor.value = desiredFlavor } fun setDate(pickupDate: String) { _date.value = pickupDate } fun hasNoFlavorSet(): Boolean { return _flavor.value.isNullOrEmpty() } }