package es.verdnatura.presentation.view.feature.precontrol

import android.content.Context
import android.os.Bundle
import android.view.View
import android.view.inputmethod.EditorInfo
import androidx.lifecycle.Observer
import es.verdnatura.R
import es.verdnatura.databinding.FragmentControladorBinding
import es.verdnatura.domain.ConstAndValues
import es.verdnatura.presentation.base.BaseFragment
import es.verdnatura.presentation.common.OnCollectionSelectedListener
import es.verdnatura.presentation.view.feature.sacador.model.CollectionVO


@Suppress("UNUSED_ANONYMOUS_PARAMETER")
class PreControladorFragment: BaseFragment<FragmentControladorBinding,ShowTicketViewModel>(ShowTicketViewModel::class) {
        private var goBack:Boolean = false
        private var onCollectionSelectedListener : OnCollectionSelectedListener? = null
        override fun getLayoutId(): Int = R.layout.fragment_controlador
        private var type = ""

        companion object {
            fun newInstance() = PreControladorFragment()
        }

        override fun onAttach(context: Context) {
            super.onAttach(context)
            if (context is OnCollectionSelectedListener) onCollectionSelectedListener = context
        }

    //sergio:Es PRECONTROLADOR PORQUE REALIZA LO MISMO QUE CONTROLADOR PERO EN EL BACK NO ACTUALIZA ESTADO Y EL CONTROLADOR SI.

        override fun init() {

            binding.splashProgress.visibility = View.GONE
            binding.mainToolbar.toolbarTitle.text = getString(R.string.titlePreControl)
            setEvents()
            super.init()
        }

        override fun onPause() {
            goBack = true
            super.onPause()
        }

        override fun onCreate(savedInstanceState: Bundle?) {

            type=ConstAndValues.PRECHECKER
            super.onCreate(savedInstanceState)
        }

        private fun setEvents(){

            binding.mainToolbar.backButton.setOnClickListener {
                requireActivity().onBackPressed()
            }

            binding.scanInput.requestFocus()
            binding.scanInput.setOnEditorActionListener { v, actionId, event ->
                if (actionId == EditorInfo.IME_ACTION_SEARCH || actionId == EditorInfo.IME_ACTION_DONE || actionId == 0 || actionId == 5) {
                    goBack=false;
                    if (!binding.scanInput.text.isNullOrEmpty()) {
                        binding.splashProgress.visibility = View.VISIBLE

                        viewModel.collectionTicketGet(
                            usuario = getData(USER),
                            password = getData(PASSWORD),
                            sectorFk = getData(SECTORFK),
                            collectionFk = binding.scanInput.text.toString(),
                            type = type
                        )

                    }
                    binding.scanInput.setText("")
                    ma.hideKeyboard(binding.scanInput)
                    return@setOnEditorActionListener true
                }
                false
            }
        }

        override fun observeViewModel() {
            with(viewModel){
                collectionTicketList.observe(viewLifecycleOwner, Observer {
                    binding.splashProgress.visibility = View.GONE
                    if (it.isError){
                        ma.messageWithSound(it.errorMessage,true,false)

                    }else{
                        if (!goBack)navigateToCollectionList(it)
                        goBack = false
                    }

                })
            }
        }

        private fun navigateToCollectionList(collection: CollectionVO){
            onCollectionSelectedListener?.onCollectionSelected(collection, type)
        }

    }

