Gitlab@Informatics

Skip to content
Snippets Groups Projects
Select Git revision
3 results Searching

compile.js

Blame
  • OrderViewModel.kt 1.81 KiB
    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()
        }
    }