Untitled

mail@pastecode.io avatarunknown
plain_text
a month ago
40 kB
1
Indexable
Never
package com.eruit.fragment

import android.app.DatePickerDialog
import android.content.Context
import android.os.Bundle
import android.os.Handler
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.view.inputmethod.EditorInfo
import androidx.core.view.OnApplyWindowInsetsListener
import androidx.core.view.ViewCompat
import androidx.core.view.WindowCompat
import androidx.core.view.WindowInsetsCompat
import androidx.core.widget.doAfterTextChanged
import androidx.core.widget.doOnTextChanged
import androidx.fragment.app.Fragment
import androidx.fragment.app.viewModels
import androidx.lifecycle.ViewModelProvider
import androidx.navigation.fragment.findNavController
import com.eruit.R
import com.eruit.adapter.ViewPagerAdapter
import com.eruit.api.common.CommonRequest
import com.eruit.api.request.OrderSummaryRequest
import com.eruit.api.utils.Resource
import com.eruit.databinding.FragmentOrderSummaryBinding
import com.eruit.fragment.OrderListFragment.Companion.isComfromFilter
import com.eruit.model.OrderSummaryData
import com.eruit.utils.Constant
import com.eruit.utils.PreferenceUtils
import com.eruit.utils.Utils
import com.eruit.utils.eventcalendar.utils.AppUtils
import com.eruit.viewmodel.OrderBookingViewModel
import com.eruit.viewmodel.OrderSummaryViewModel
import com.eruit.viewmodel.OrderViewModel
import dagger.hilt.android.AndroidEntryPoint
import org.json.JSONArray
import org.json.JSONObject
import timber.log.Timber
import java.text.DecimalFormat
import java.text.NumberFormat
import java.util.Calendar

@AndroidEntryPoint
class OrderSummaryFragment : Fragment(), View.OnFocusChangeListener {
    private lateinit var binding: FragmentOrderSummaryBinding
    private lateinit var mContext: Context
    private lateinit var adapter: ViewPagerAdapter
    private val firstFragment = Summary1Fragment()
    private val secondFragment = Summary2Fragment()
    private val thirdFragment = Summary3Fragment()
    private var orderBookingViewModel: OrderBookingViewModel? = null
    private val viewModel: OrderViewModel by viewModels()
    private var orderSummary: OrderSummaryViewModel? = null
    private var picker: DatePickerDialog? = null
    var isComeFromEvents = false

    var onef: NumberFormat = DecimalFormat("0")
    var twof: NumberFormat = DecimalFormat("0.0")
    var lastChange = ""
    var isCallSaveSummary = false

    companion object {
        var orderId: String? = null
        var mEdit = false
        var orderSummaryObj: JSONObject = JSONObject()
    }

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View {
        binding = FragmentOrderSummaryBinding.inflate(inflater, container, false)
        mContext = requireContext()
        orderSummary = ViewModelProvider(requireActivity())[OrderSummaryViewModel::class.java]
        orderBookingViewModel =
            ViewModelProvider(requireActivity())[OrderBookingViewModel::class.java]
        orderId = arguments?.getString(Constant.SHARED.OrderId).toString()
        isComeFromEvents = arguments?.getBoolean(Constant.SHARED.IsFromEvents, false)!!
        if (orderId.toString().isNotEmpty()) {
            orderSummary?.data?.value?.order = orderId?.toInt()
            viewModel.startOrderSummary(OrderSummaryRequest(orderId?.toInt()))
        }
        binding.imgBack.setOnClickListener {
            findNavController().navigateUp()
        }
        binding.btnApply.setOnClickListener {
            println("LAST CHANGE$lastChange")
            if (lastChange.isEmpty()) {
                saveSummaryApi()
            } else {
                isCallSaveSummary = true
                calOrderSummaryApi(lastChange)
            }
        }
        binding.btnClear.setOnClickListener {
            findNavController().navigateUp()
        }
        binding.editNumPortion.doAfterTextChanged {
            if (binding.editNumPortion.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.NUM_PORTIONS
            }
        }

        binding.editPossiblePortions.doAfterTextChanged {
            if (binding.editPossiblePortions.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.POSSIBLE_PORTIONS
            }
        }

        binding.editAddition1.doAfterTextChanged {
            if (binding.editAddition1.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.ADDITION_1
            }
        }

        binding.editCost1.doAfterTextChanged {
            if (binding.editCost1.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.COST_1
            }
        }
        binding.editAddition1.setOnEditorActionListener { _, actionId, _ ->
            if (actionId == EditorInfo.IME_ACTION_DONE) {
                if (binding.editAddition1.text?.isNotEmpty() == true) {
                    orderSummary?.data?.value?.addition_1 =
                        binding.editAddition1.text.toString().toDouble()
                    calOrderSummaryApi(lastChange)
                }
            }
            false
        }


        binding.editMinPortions.doAfterTextChanged {
            if (binding.editMinPortions.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.MIN_PORTIONS
            }
        }

        binding.editPractical.doAfterTextChanged {
            if (binding.editPractical.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.PRACTICAL
            }
        }

        binding.editDiscount2.doAfterTextChanged {
            if (binding.editDiscount2.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = Constant.SHARED.DISCOUNT_2
            }
        }

        binding.editNan.doAfterTextChanged {
            if (binding.editNan.text?.isNotEmpty() == true) {
                Summary1Fragment.mEdit = true
                lastChange = "discount_percent"
            }
        }

        binding.editNumPortion.onFocusChangeListener = this
        binding.editPossiblePortions.onFocusChangeListener = this
        binding.editAddition1.onFocusChangeListener = this
        binding.editCost1.onFocusChangeListener = this
        binding.editMinPortions.onFocusChangeListener = this
        binding.editPractical.onFocusChangeListener = this
        binding.editDiscount2.onFocusChangeListener = this
        binding.editNan.onFocusChangeListener = this
        binding.editText1.doOnTextChanged { text, _, _, _ ->
            orderSummary?.data?.value?.text_1 = text.toString()
        }
        binding.rdoInclude.isChecked = orderSummary?.data?.value?.Include_Vat == true



        binding.rdoInclude.setOnCheckedChangeListener { _, isChecked ->
            orderSummary?.data?.value?.Include_Vat = isChecked
            if (isChecked) {
                binding.rdoInclude.text = "המחירים כוללים מע”מ"
            } else {
                binding.rdoInclude.text = "המחירים אינם כוללים מע”מ"
            }
            calOrderSummaryApi(Constant.SHARED.IS_INCLUDE_VAT)
        }

        binding.editDateFinish.setOnClickListener {
            val cldr = Calendar.getInstance()
            val day = cldr[Calendar.DAY_OF_MONTH]
            val month = cldr[Calendar.MONTH]
            val year = cldr[Calendar.YEAR]
            picker = DatePickerDialog(
                mContext,
                { _, yearOf, monthOfYear, dayOfMonth ->
                    val mt = if (monthOfYear + 1 < 10) "0${monthOfYear + 1}" //if month less than 10 then ad 0 before month
                    else java.lang.String.valueOf(monthOfYear + 1)
                    val dy: String =
                        if (dayOfMonth < 10) "0$dayOfMonth" else java.lang.String.valueOf(dayOfMonth) //local variable
                    binding.editDateFinish.text = "$dy-$mt-$yearOf"
                    orderSummary?.data?.value?.date_finish = "$yearOf-$mt-$dy"
                    binding.lblDateFinish.visibility = View.VISIBLE
                    binding.lblDateFinish.setPadding(0, 5, 0, 0)
                    clearFocus()
                },
                year,
                month,
                day
            )
            picker?.show()
        }

        binding.editNan.textDirection = View.TEXT_DIRECTION_RTL
        setupObserver()
        return binding.root
    }

    private fun isKeyboardOpen() {
        val window = requireActivity().window
        WindowCompat.setDecorFitsSystemWindows(window, false)
        val callBack = OnApplyWindowInsetsListener { _, insets ->
            val isKeyboardVisible = insets.isVisible(WindowInsetsCompat.Type.ime())
            if (isKeyboardVisible) {
                binding.linBottomEnglish.visibility = View.INVISIBLE
            } else {
                binding.linBottomEnglish.visibility = View.VISIBLE
            }
            insets
        }

        ViewCompat.setOnApplyWindowInsetsListener(binding.root, callBack)
    }

    private fun setupObserver() {
        viewModel.orderSummary.observe(viewLifecycleOwner) {
            when (it.status) {
                Resource.Status.SUCCESS -> {
                    if (it.responseCode in 200..299) {
                        if (it.data?.RequestResponse == true) {
                            println("GET ORDER SUMMERY ${it.data}")
                            Timber.tag("Response").e(it.data.Data.toString())
                            val orders: OrderSummaryData? = it.data.Data
                            if (orders != null) {
                                binding.editAddCommon.setText(
                                    (onef.format(orders.add_common) ?: "").toString()
                                )
                                binding.editNumPortion.setText(
                                    (onef.format(orders.num_portions) ?: "").toString()
                                )
                                binding.editPossiblePortions.setText(
                                    (onef.format(orders.possible_portions) ?: 0).toString()
                                )
                                binding.editAddition1.setText(
                                    (onef.format(orders.addition_1) ?: 0).toString()
                                )
                                binding.editMan2.setText(orders.man_2 ?: "")
                                binding.editLastUser.setText(orders.last_user ?: "")
                                binding.editText1.setText(orders.text_1 ?: "")
                                if (orders.date_finish?.isNotEmpty() == true) {
                                    binding.lblDateFinish.visibility = View.VISIBLE
                                    binding.lblDateFinish.setPadding(0, 5, 0, 0)
                                    binding.editDateFinish.text = AppUtils().changeDateFormat(
                                        Constant.yyyy_MM_dd, Constant.dd_MM_yyyy, orders.date_finish
                                            .toString()
                                    )
                                } else {
                                    binding.lblDateFinish.visibility = View.INVISIBLE
                                    binding.editDateFinish.text = ""
                                }
                                binding.editCost1.setText(
                                    (onef.format(orders.cost_1) ?: "").toString()
                                )
                                binding.editMinPortions.setText(
                                    (onef.format(orders.min_portions) ?: "").toString()
                                )
                                binding.editPractical.setText(
                                    (onef.format(orders.practical) ?: "").toString()
                                )
                                binding.editDutyHist.setText(
                                    (onef.format(orders.duty_hist) ?: "").toString()
                                )
                                binding.editLastUpdate.setText(
                                    AppUtils().changeDateFormat(
                                        "yyyy-MM-dd",
                                        "dd-MM-yyyy",
                                        orders.last_update ?: "null"
                                    )
                                )
                                binding.editDiscount2.setText(
                                    (onef.parse(orders.discount_2.toString()) ?: "").toString()
                                )

                                binding.editNan.setText(
                                    (onef.parse(orders.discount_percent.toString()) ?: "0").toString()
                                )
                                binding.editTSum.setText(((orders.t_sum?.toString()?.let { it1 -> onef.parse(it1) }) ?: "").toString())
                                binding.editTMamSum.setText((orders.t_mam_sum?.toString()?.let { it1 -> onef.parse(it1) } ?: "").toString())
                                binding.editSumTotal.setText((orders.sum_total?.toString()?.let { it1 -> onef.parse(it1) } ?: "").toString())
                                binding.rdoInclude.isChecked = orders.Include_Vat ?: false
                                if (binding.rdoInclude.isChecked) {
                                    binding.rdoInclude.text = "המחירים כוללים מע”מ"
                                } else {
                                    binding.rdoInclude.text = "המחירים אינם כוללים מע”מ"
                                }

                                orderSummary?.selected(
                                    OrderSummaryData(
                                        orders.add_common,
                                        orders.num_portions,
                                        orders.possible_portions,
                                        orders.addition_1,
                                        orders.date_finish ?: "",
                                        orders.cost_1,
                                        orders.min_portions,
                                        orders.Include_Vat,
                                        orders.discount_2,
                                        orders.sum_total,
                                        orders.t_mam_sum,
                                        orders.t_sum,
                                        orders.total_before_discount,
                                        orders.man_2 ?: "",
                                        orders.last_user ?: "",
                                        orders.text_1 ?: "",
                                        orders.practical,
                                        orders.add_portion,
                                        orders.duty_hist,
                                        orders.discount_percent,
                                        orders.add_sum,
                                        orders.hist_dollar ?: "",
                                        orders.last_update ?: "",
                                        orderId?.toInt()
                                    )
                                )
                            }
                            binding.relLoading.visibility = View.GONE
                        } else {
                            println("GET ORDER SUMMERY ${it.data}")
                        }
                    }
                }

                Resource.Status.ERROR -> {
                    binding.relLoading.visibility = View.GONE
                    it?.errorResponse?.Messages?.get(0)?.let { it1 -> Utils.showCustomToast(mContext, it1) }
                }

                Resource.Status.LOADING -> {
                    binding.relLoading.visibility = View.VISIBLE
                }
            }
        }
        viewModel.saveSummary.observe(viewLifecycleOwner) {
            when (it.status) {
                Resource.Status.SUCCESS -> {
                    if (it.responseCode in 200..299) {
                        if (it.data?.RequestResponse == true) {
                            Timber.tag("Response").e(it.data.Data.toString())
                            val orders: OrderSummaryData? = it.data.Data
                            if (orders != null) {
                                orderSummary?.selected(
                                    OrderSummaryData(
                                        orders.add_common,
                                        orders.num_portions,
                                        orders.possible_portions,
                                        orders.addition_1,
                                        orders.date_finish,
                                        orders.cost_1,
                                        orders.min_portions,
                                        orders.Include_Vat,
                                        orders.discount_2,
                                        orders.sum_total,
                                        orders.t_mam_sum,
                                        orders.t_sum,
                                        orders.total_before_discount,
                                        orders.man_2,
                                        orders.last_user,
                                        orders.text_1,
                                        orders.practical,
                                        orders.add_portion,
                                        orders.duty_hist,
                                        orders.discount_percent,
                                        orders.add_sum,
                                        orders.hist_dollar,
                                        orders.last_update,
                                        orderId?.toInt()
                                    )
                                )
                            }
                            binding.relLoading.visibility = View.GONE
                            isComfromFilter = false
                            findNavController().navigateUp()
                        }
                    }
                }

                Resource.Status.ERROR -> {
                    binding.relLoading.visibility = View.GONE
                    it?.errorResponse?.Messages?.get(0)?.let { it1 -> Utils.showCustomToast(mContext, it1) }
                }

                Resource.Status.LOADING -> {
                    binding.relLoading.visibility = View.VISIBLE
                }
            }
        }
        viewModel.orderCalSummary.observe(viewLifecycleOwner) {
            when (it.status) {
                Resource.Status.SUCCESS -> {
                    if (it.responseCode in 200..299) {
                        if (it.data?.RequestResponse == true) {
                            binding.relLoading.visibility = View.GONE
                            Timber.tag("Response").e(it.data.Data.toString())
                            val orders: OrderSummaryData? = it.data.Data
                            if (orders != null) {
                                binding.editAddCommon.setText(
                                    (onef.format(orders.add_common) ?: "").toString()
                                )
                                binding.editNumPortion.setText(
                                    (onef.format(orders.num_portions) ?: "").toString()
                                )
                                binding.editPossiblePortions.setText(
                                    (onef.format(orders.possible_portions) ?: "").toString()
                                )
                                binding.editAddition1.setText(
                                    (onef.format(orders.addition_1) ?: "").toString()
                                )
                                binding.editCost1.setText(
                                    (onef.format(orders.cost_1) ?: "").toString()
                                )
                                binding.editMinPortions.setText(
                                    (onef.format(orders.min_portions) ?: "").toString()
                                )
                                binding.editPractical.setText(
                                    (onef.format(orders.practical) ?: "").toString()
                                )
                                binding.editDutyHist.setText(
                                    (onef.format(orders.duty_hist) ?: "").toString()
                                )
                                binding.editDiscount2.setText(
                                    ((onef.format(orders.discount_2)) ?: "").toString()
                                )
                                binding.editTSum.setText(
                                    (onef.format(orders.t_sum) ?: "").toString()
                                )
                                binding.editTMamSum.setText(
                                    (onef.format(orders.t_mam_sum) ?: "").toString()
                                )
                                binding.editSumTotal.setText(
                                    (onef.format(orders.sum_total) ?: "").toString()
                                )
                                if (orders.discount_percent == null) {
                                    binding.editNan.setText("0")
                                } else {
                                    binding.editNan.setText(
                                        (onef.format(orders.discount_percent) ?: "").toString()
                                    )
                                }
                                binding.rdoInclude.isChecked = orders.Include_Vat ?: false
                                orderSummary?.selected(
                                    OrderSummaryData(
                                        orders.add_common,
                                        orders.num_portions,
                                        orders.possible_portions,
                                        orders.addition_1,
                                        orderSummary?.data?.value?.date_finish ?: "",
                                        orders.cost_1,
                                        orders.min_portions,
                                        orders.Include_Vat,
                                        orders.discount_2,
                                        orders.sum_total,
                                        orders.t_mam_sum,
                                        orders.t_sum,
                                        orders.total_before_discount,
                                        orderSummary?.data?.value?.man_2,
                                        orderSummary?.data?.value?.last_user,
                                        orderSummary?.data?.value?.text_1,
                                        orders.practical,
                                        orders.add_portion,
                                        orders.duty_hist,
                                        orders.discount_percent,
                                        orders.add_sum,
                                        orders.hist_dollar,
                                        orders.last_update,
                                        orderId?.toInt()
                                    )
                                )
                                if (isCallSaveSummary) {
                                    binding.relLoading.visibility = View.VISIBLE
                                    Handler().postDelayed({
                                        saveSummaryApi()
                                    }, 2000)
                                }

                            }
                        }
                    }
                }

                Resource.Status.ERROR -> {
                    it?.errorResponse?.Messages?.get(0)?.let { it1 -> Utils.showCustomToast(mContext, it1) }
                    binding.relLoading.visibility = View.GONE
                }

                Resource.Status.LOADING -> {
                    binding.relLoading.visibility = View.VISIBLE
                }
            }
        }
    }

    fun clearFocus() {
        binding.editNumPortion.clearFocus()
        binding.editPossiblePortions.clearFocus()
        binding.editAddition1.clearFocus()
        binding.editText1.clearFocus()
        binding.editCost1.clearFocus()
        binding.editMinPortions.clearFocus()
        binding.editMinPortions.clearFocus()
        binding.editNan.clearFocus()
        binding.editDiscount2.clearFocus()
    }

    private fun calOrderSummaryApi(change: String?) {
        val json = JSONObject()
        json.put(Constant.SHARED.ORDER, orderId?.toInt() ?: 0)
        json.put(Constant.SHARED.ADD_COMMON, orderSummary?.data?.value?.add_common ?: 0)
        if (binding.editNumPortion.text?.isNotEmpty() == true) {
            json.put(Constant.SHARED.NUM_PORTIONS, binding.editNumPortion.text.toString().toDouble())
        } else {
            json.put(Constant.SHARED.NUM_PORTIONS, 0)
        }
        if (binding.editPossiblePortions.text?.isNotEmpty() == true) {
            json.put(Constant.SHARED.POSSIBLE_PORTIONS, binding.editPossiblePortions.text.toString().toDouble())
        } else {
            json.put(Constant.SHARED.POSSIBLE_PORTIONS, 0)
        }
        if (binding.editAddition1.text?.isNotEmpty() == true) {
            json.put(Constant.SHARED.ADDITION_1, binding.editAddition1.text.toString().toDouble())
        } else {
            json.put(Constant.SHARED.ADDITION_1, 0)
        }
        if (binding.editCost1.text?.isNotEmpty() == true) {
            json.put(Constant.SHARED.COST_1, binding.editCost1.text.toString().toDouble())
        } else {
            json.put(Constant.SHARED.COST_1, 0)
        }
        if (binding.editMinPortions.text?.isNotEmpty() == true) {
            json.put(Constant.SHARED.MIN_PORTIONS, binding.editMinPortions.text.toString().toDouble())
        } else {
            json.put(Constant.SHARED.MIN_PORTIONS, 0)
        }
        if (binding.editPractical.text?.isNotEmpty() == true) {
            json.put(Constant.SHARED.PRACTICAL, binding.editPractical.text.toString().toDouble())
        } else {
            json.put(Constant.SHARED.PRACTICAL, 0)
        }
        json.put(Constant.SHARED.DUTY_HIST, binding.editDutyHist.text.toString().toDouble())
        json.put(Constant.SHARED.IS_INCLUDE_VAT, orderSummary?.data?.value?.Include_Vat ?: false)
        json.put(Constant.SHARED.DISCOUNT_2, binding.editDiscount2.text ?: 0)
        json.put(Constant.SHARED.ADD_PORTION, orderSummary?.data?.value?.add_portion ?: 0)
        json.put(Constant.SHARED.HIST_DOLLAR, orderSummary?.data?.value?.hist_dollar ?: 0)
        json.put(Constant.SHARED.DISCOUNT_PERCENT, binding.editNan.text.toString())
        json.put(Constant.SHARED.ADD_SUM, orderSummary?.data?.value?.add_sum ?: 0)
        json.put(Constant.SHARED.CHANGE_COLUMN, change)
        orderSummaryObj = json

        viewModel.startOrderCalSummary(CommonRequest(json))
    }

    private fun saveSummaryApi() {
        val createOrderObject = orderBookingViewModel?.createOrder?.value
        val json = JSONObject()
        json.put(Constant.SHARED.ORDER, orderId?.toInt() ?: 0)
        json.put(Constant.SHARED.ADD_COMMON, orderSummary?.data?.value?.add_common ?: 0)
        json.put(Constant.SHARED.NUM_PORTIONS, orderSummary?.data?.value?.num_portions ?: 0)
        json.put(
            Constant.SHARED.POSSIBLE_PORTIONS,
            orderSummary?.data?.value?.possible_portions ?: 0
        )
        json.put(Constant.SHARED.ADDITION_1, orderSummary?.data?.value?.addition_1 ?: 0)
        json.put(Constant.SHARED.COST_1, orderSummary?.data?.value?.cost_1 ?: 0)
        json.put(Constant.SHARED.MIN_PORTIONS, orderSummary?.data?.value?.min_portions ?: 0)
        json.put(Constant.SHARED.PRACTICAL, orderSummary?.data?.value?.practical ?: 0)
        json.put(Constant.SHARED.DUTY_HIST, orderSummary?.data?.value?.duty_hist ?: 0)
        json.put(Constant.SHARED.IS_INCLUDE_VAT, orderSummary?.data?.value?.Include_Vat ?: false)
        json.put(Constant.SHARED.DISCOUNT_2, orderSummary?.data?.value?.discount_2 ?: 0)
        json.put(Constant.SHARED.ADD_PORTION, orderSummary?.data?.value?.add_portion ?: 0)
        json.put(Constant.SHARED.HIST_DOLLAR, orderSummary?.data?.value?.hist_dollar ?: 0)
        json.put(Constant.SHARED.DISCOUNT_PERCENT, orderSummary?.data?.value?.discount_percent ?: 0)
        json.put(Constant.SHARED.DATE_FINISH, orderSummary?.data?.value?.date_finish ?: "")
        json.put(Constant.SHARED.ADD_SUM, orderSummary?.data?.value?.add_sum ?: 0)
        json.put(Constant.SHARED.TEXT_1, orderSummary?.data?.value?.text_1 ?: 0)
        json.put(Constant.SHARED.SUM_TOTAL, orderSummary?.data?.value?.sum_total ?: 0.0)

        val eventJsonArray = JSONArray()
        val eventItemJsonArray = JSONArray()
        if (PreferenceUtils.getEdit(mContext, Constant.SHARED.IsFromEditOrder, false)) {
            val eventData = orderBookingViewModel?.createOrder?.value?.events?.last()
            if ((eventData?.EventItems?.isNotEmpty() == true) && (eventData.EventItems != null)) {
                eventData.EventItems?.forEach { _ ->
                    val jsonEvent = JSONObject()
                    if (PreferenceUtils.getEdit(
                            requireContext(),
                            Constant.SHARED.IsFromEditOrder
                        )
                    ) {
                        jsonEvent.put(Constant.SHARED.T_EVENTID, eventData.t_eventId ?: "")
                    } else {
                        jsonEvent.put(Constant.SHARED.T_EVENTID, "")
                    }
                    jsonEvent.put(Constant.SHARED.DAY_EVENT, eventData.day_event ?: "")
                    jsonEvent.put(Constant.SHARED.SERVER, eventData.server)
                    jsonEvent.put(
                        Constant.SHARED.DATE_EVENT,
                        AppUtils().changeDateFormat(
                            "dd-MM-yyyy",
                            "yyyy-MM-dd",
                            eventData.date_event.toString()
                        )
                    )
                    jsonEvent.put(
                        Constant.SHARED.FROM_DATE,
                        AppUtils().updateEventSendingDate(eventData.from_date.toString())
                    )
                    jsonEvent.put(Constant.SHARED.HALL, eventData.hall)
                    jsonEvent.put(
                        Constant.SHARED.FROM_TIME,
                        (eventData.from_date.toString())
                    )
                    jsonEvent.put(
                        Constant.SHARED.TO_DATE,
                        AppUtils().updateEventSendingDate(eventData.to_date.toString())
                    )
                    jsonEvent.put(Constant.SHARED.EVENT_LINE, 0)
                    jsonEvent.put(
                        Constant.SHARED.TO_TIME,
                        (eventData.to_date.toString())
                    )
                    jsonEvent.put(Constant.SHARED.MENU, eventData.menu)
                    jsonEvent.put(
                        Constant.SHARED.EVENT_FLAG,
                        PreferenceUtils.getEdit(requireContext(), Constant.SHARED.IsFromEditOrder)
                    )
                    jsonEvent.put(Constant.SHARED.EVENTITEMS, eventItemJsonArray)
                    eventJsonArray.put(jsonEvent)
                }
            } else {
                val jsonEvent = JSONObject()
                jsonEvent.put(Constant.SHARED.T_EVENTID, "")
                jsonEvent.put(Constant.SHARED.DAY_EVENT, eventData?.day_event.toString())
                jsonEvent.put(Constant.SHARED.SERVER, eventData?.server ?: "")
                jsonEvent.put(
                    Constant.SHARED.DATE_EVENT,
                    AppUtils().updateEventSendingDate(eventData?.from_date.toString())
                )
                jsonEvent.put(Constant.SHARED.HALL, eventData?.hall ?: "")
                jsonEvent.put(Constant.SHARED.EVENT_LINE, 0)
                jsonEvent.put(
                    Constant.SHARED.FROM_DATE,
                    AppUtils().updateEventSendingDate(eventData?.from_date.toString())
                )
                jsonEvent.put(
                    Constant.SHARED.TO_DATE,
                    AppUtils().updateEventSendingDate(eventData?.to_date.toString())
                )
                jsonEvent.put(
                    Constant.SHARED.FROM_TIME,
                    (eventData?.from_date.toString())
                )
                jsonEvent.put(Constant.SHARED.TO_TIME, (eventData?.to_time.toString()))
                jsonEvent.put(Constant.SHARED.MENU, eventData?.menu ?: "")
                jsonEvent.put(
                    Constant.SHARED.EVENT_FLAG,
                    PreferenceUtils.getEdit(requireContext(), Constant.SHARED.IsFromEditOrder)
                )
                jsonEvent.put(Constant.SHARED.EVENTITEMS, eventItemJsonArray)
                eventJsonArray.put(jsonEvent)
            }
        }
        val jsonOrderMobObject = JSONObject()
        val jsonBooking = JSONObject()
        jsonBooking.put(
            Constant.SHARED.BOOKING_NUMBER,
            createOrderObject?.booking?.BookingNumber ?: ""
        )
        jsonBooking.put(Constant.SHARED.BOOKING_ID, createOrderObject?.booking?.BookingId ?: "")
        jsonBooking.put(Constant.SHARED.TERMS, createOrderObject?.booking?.terms ?: "")
        jsonBooking.put(Constant.SHARED.NAME, createOrderObject?.booking?.name ?: "")
        jsonBooking.put(Constant.SHARED.ADDRESS_1, createOrderObject?.booking?.address_1 ?: "")
        jsonBooking.put(Constant.SHARED.TELEFON_1, createOrderObject?.booking?.telefon_1 ?: "")
        jsonBooking.put(
            Constant.SHARED.EMAIL_ADDRESS,
            createOrderObject?.booking?.email_adress ?: ""
        )
        jsonBooking.put(Constant.SHARED.NUM, createOrderObject?.booking?.num ?: "")

        jsonOrderMobObject.put(Constant.SHARED.orderId, createOrderObject?.orderId ?: "")
        jsonOrderMobObject.put(Constant.SHARED.ORDER, createOrderObject?.order ?: "")
        jsonOrderMobObject.put(Constant.SHARED.EVENT, createOrderObject?.event ?: "")
        jsonOrderMobObject.put(Constant.SHARED.STATUS, createOrderObject?.status ?: "")
        jsonOrderMobObject.put(Constant.SHARED.AGENT, createOrderObject?.agent ?: "")
        jsonOrderMobObject.put(
            Constant.SHARED.Event_LOCATION,
            createOrderObject?.eventLocation ?: ""
        )
        jsonOrderMobObject.put(Constant.SHARED.IS_INCLUDE_VAT, false)
        jsonOrderMobObject.put(Constant.SHARED.DUTY_HIST, 0)
        jsonOrderMobObject.put(Constant.SHARED.BOOKING, jsonBooking)
        json.putOpt(Constant.SHARED.MOBORDER, jsonOrderMobObject)
        json.putOpt(Constant.SHARED.EVENTS, eventJsonArray)
        viewModel.startSaveSummary(CommonRequest(json))
        isComfromFilter = false
        viewModel.saveSummary.observe(viewLifecycleOwner) {
            when (it.status) {
                Resource.Status.SUCCESS -> {
                    Utils.showToast(mContext, it.data?.Messages?.get(0) ?: "")
                    if (isComeFromEvents) {
                        orderBookingViewModel?.createOrder?.value = null
                    }
                }

                Resource.Status.ERROR -> it?.errorResponse?.Messages?.get(0)?.let { it1 -> Utils.showCustomToast(mContext, it1) }

                Resource.Status.LOADING -> binding.relLoading.visibility = View.VISIBLE
            }
        }
    }

    override fun onFocusChange(v: View?, hasFocus: Boolean) {
        when (v!!.id) {
            R.id.editNan -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    if (binding.editNan.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.discount_percent =
                            binding.editNan.text.toString().toDouble()
                    }
                    if (binding.editNan.text?.isNotEmpty() == true) {
                        binding.editNan.text?.length?.let { binding.editNan.setSelection(it) }
                    }
                    calOrderSummaryApi(lastChange)
                }
            }

            R.id.editDiscount2 -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    if (binding.editDiscount2.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.discount_2 =
                            binding.editDiscount2.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }

            R.id.editPractical -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    if (binding.editPractical.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.practical =
                            binding.editPractical.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }

            R.id.editMinPortions -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    if (binding.editMinPortions.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.min_portions =
                            binding.editMinPortions.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }

            R.id.editCost1 -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    Summary1Fragment.mEdit = false
                    if (binding.editCost1.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.cost_1 =
                            binding.editCost1.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }

            R.id.editAddition1 -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    Summary1Fragment.mEdit = false
                    if (binding.editAddition1.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.addition_1 =
                            binding.editAddition1.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }

            R.id.editPossiblePortions -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    Summary1Fragment.mEdit = false
                    if (binding.editPossiblePortions.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.possible_portions =
                            binding.editPossiblePortions.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }

            R.id.editNumPortion -> {
                if (hasFocus && Summary1Fragment.mEdit) {
                    Summary1Fragment.mEdit = false
                    if (binding.editNumPortion.text?.isNotEmpty() == true) {
                        orderSummary?.data?.value?.num_portions =
                            binding.editNumPortion.text.toString().toDouble()
                        calOrderSummaryApi(lastChange)
                    }
                }
            }
        }
    }
}