ConfiguracionFragment.kt 12.4 KB
package com.focasoftware.deboinventariov20.UI.configuracion

import android.content.Context
import android.content.SharedPreferences
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.*
import androidx.fragment.app.Fragment
import androidx.fragment.app.FragmentActivity
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.navigation.fragment.findNavController
import com.focasoftware.deboinventariov20.DB.DataBase.AppDb
import com.focasoftware.deboinventariov20.Model.ServeInv
import com.focasoftware.deboinventariov20.R
import kotlinx.android.synthetic.main.fragment_configuracion.*
import kotlinx.coroutines.*
import kotlinx.coroutines.Dispatchers.Main

class ConfiguracionFragment : Fragment() {

    lateinit var sharedPreferences: SharedPreferences
    private lateinit var navController: NavController
    var itemSelect: Int = 0
    var indexSelect: Int = 0

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        navController = Navigation.findNavController(view)
        GlobalScope.launch(Main) {
            val listServer = mutableListOf<String>()
            for (server in getDescServers()) {
                listServer.add((if (server.servNum < 9) "0" + server.servNum.toString() else server.servNum.toString()) + " - " + server.descripcion.toString())
            }
            val adapterSpServer = ArrayAdapter(requireContext(), R.layout.support_simple_spinner_dropdown_item, listServer)
            spServidor.adapter = adapterSpServer
            if (sharedPreferences.contains("ServerPredeterminado")) {
                spServidor.setSelection(sharedPreferences.getString("ServerPredeterminado", "").toString().toInt())
            } else (spServidor.setSelection(0))
        }
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {

        val v = inflater.inflate(R.layout.fragment_configuracion, container, false)
        val etRuta = v.findViewById<EditText>(R.id.etRuta)
        val btnGuardar = v.findViewById<Button>(R.id.btnGuardar)
        val rbProInclu = v.findViewById<RadioButton>(R.id.rbProInclu)
        val rbProNoInclu = v.findViewById<RadioButton>(R.id.rbProNoInclu)
        val cbHabiLectura = v.findViewById<CheckBox>(R.id.cbHabiLectura)
        val cbMostrarStock = v.findViewById<CheckBox>(R.id.cbMostrarStock)
        val rbCodigoBarras = v.findViewById<RadioButton>(R.id.rbCodigoBarras)
        val rbCodigoDebo = v.findViewById<RadioButton>(R.id.rbCodigoDebo)
        val rbCodigoOrigen = v.findViewById<RadioButton>(R.id.rbCodigoOrigen)
        val rbDeposito = v.findViewById<RadioButton>(R.id.rbDeposito)
        val rbVentas = v.findViewById<RadioButton>(R.id.rbVentas)
        val cbMostrarExistencia = v.findViewById<CheckBox>(R.id.cbMostrarExistencia)
        val cbMostrarPrecio = v.findViewById<CheckBox>(R.id.cbMostrarPrecio)
        val btnAgregarServidor = v.findViewById<Button>(R.id.btnAgregarServidor)
        val spServidor = v.findViewById<Spinner>(R.id.spServidor)
        val btnValidarServidor = v.findViewById<Button>(R.id.btnValidarServidor)

        if (sharedPreferences.contains("etRuta")) if (sharedPreferences.contains("rbProInclu")) {
            if (sharedPreferences.getString("rbProInclu", "").toString() == "0") {
                rbProInclu.isChecked = false
                rbProNoInclu.isChecked = true
            } else if (sharedPreferences.getString("rbProInclu", "").toString() == "1") {
                rbProInclu.isChecked = true
                rbProNoInclu.isChecked = false
            }
        } else (sharedPreferences.getString("rbProInclu", "").toString() == "")

        if (sharedPreferences.contains("rbProNoInclu")) {
            if (sharedPreferences.getString("rbProNoInclu", "").toString() == "0") {
                rbProNoInclu.isChecked = false
                rbProInclu.isChecked = true
            } else if (sharedPreferences.getString("rbProNoInclu", "").toString() == "1") {
                rbProNoInclu.isChecked = true
                rbProInclu.isChecked = false
            }
        } else (sharedPreferences.getString("rbProNoInclu", "").toString() == "")

        if (sharedPreferences.contains("cbHabiLectura")) {
            if (sharedPreferences.getString("cbHabiLectura", "").toString() == "0") {
                cbHabiLectura.isChecked = false
            } else if (sharedPreferences.getString("cbHabiLectura", "").toString() == "1") {
                cbHabiLectura.isChecked = true
            }
        } else (sharedPreferences.getString("cbHabiLectura", "").toString() == "")

        if (sharedPreferences.contains("cbMostrarStock")) {
            if (sharedPreferences.getString("cbMostrarStock", "").toString() == "0") {
                cbMostrarStock.isChecked = false
            } else if (sharedPreferences.getString("cbMostrarStock", "").toString() == "1") {
                cbMostrarStock.isChecked = true
            }
        } else (sharedPreferences.getString("cbMostrarStock", "").toString() == "")

        if (sharedPreferences.contains("rbVentas")) {
            if (sharedPreferences.getString("rbVentas", "").toString() == "0") {
                rbVentas.isChecked = false
                rbDeposito.isChecked = true
            } else if (sharedPreferences.getString("rbVentas", "").toString() == "1") {
                rbVentas.isChecked = true
                rbDeposito.isChecked = false
            }
        } else (sharedPreferences.getString("rbVentas", "").toString() == "")

        if (sharedPreferences.contains("rbDeposito")) {
            if (sharedPreferences.getString("rbDeposito", "").toString() == "0") {
                rbDeposito.isChecked = false
                rbVentas.isChecked = true
            } else if (sharedPreferences.getString("rbDeposito", "").toString() == "1") {
                rbDeposito.isChecked = true
                rbVentas.isChecked = false
            }
        } else (sharedPreferences.getString("rbDeposito", "").toString() == "")

        if (sharedPreferences.contains("rbCodigoDebo")) {
            if (sharedPreferences.getString("rbCodigoDebo", "").toString() == "0") {
                rbCodigoDebo.isChecked = false
                rbCodigoOrigen.isChecked = false
                rbCodigoBarras.isChecked = false
            } else if (sharedPreferences.getString("rbCodigoDebo", "").toString() == "1") {
                rbCodigoDebo.isChecked = true
                rbCodigoOrigen.isChecked = false
                rbCodigoBarras.isChecked = false
            }
        } else (sharedPreferences.getString("rbCodigoDebo", "").toString() == "")

        if (sharedPreferences.contains("rbCodigoOrigen")) {
            if (sharedPreferences.getString("rbCodigoOrigen", "").toString() == "0") {
                rbCodigoOrigen.isChecked = false
            } else if (sharedPreferences.getString("rbCodigoOrigen", "").toString() == "1") {
                rbCodigoOrigen.isChecked = true
            }
        } else (sharedPreferences.getString("rbCodigoOrigen", "").toString() == "")

        if (sharedPreferences.contains("rbCodigoBarras")) {
            if (sharedPreferences.getString("rbCodigoBarras", "").toString() == "0") {
                rbCodigoBarras.isChecked = false
            } else if (sharedPreferences.getString("rbCodigoBarras", "").toString() == "1") {
                rbCodigoBarras.isChecked = true
            }
        } else (sharedPreferences.getString("rbCodigoBarras", "").toString() == "")

        if (sharedPreferences.contains("cbMostrarExistencia")) {
            if (sharedPreferences.getString("cbMostrarExistencia", "").toString() == "0") {
                cbMostrarExistencia.isChecked = false
            } else if (sharedPreferences.getString("cbMostrarExistencia", "").toString() == "1") {
                cbMostrarExistencia.isChecked = true
            }
        } else (sharedPreferences.getString("cbMostrarExistencia", "").toString() == "")

        if (sharedPreferences.contains("cbMostrarPrecio")) {
            if (sharedPreferences.getString("cbMostrarPrecio", "").toString() == "0") {
                cbMostrarPrecio.isChecked = false
            } else if (sharedPreferences.getString("cbMostrarPrecio", "").toString() == "1") {
                cbMostrarPrecio.isChecked = true
            }
        } else (sharedPreferences.getString("cbMostrarPrecio", "").toString() == "")

        btnGuardar.setOnClickListener {
            guardarPreferencias()
            Toast.makeText(v.context, "Los Datos se guardaron correctamente", Toast.LENGTH_LONG).show()
            navController.navigate(R.id.action_configuracionFragment_to_mainFragment2)
        }
        btnAgregarServidor.setOnClickListener { findNavController().navigate(R.id.servidoresFragment) }

        btnValidarServidor.setOnClickListener { Toast.makeText(requireContext(), "Dirección correcta", Toast.LENGTH_LONG).show() }

        spServidor.onItemSelectedListener = object : AdapterView.OnItemSelectedListener {
            override fun onNothingSelected(parent: AdapterView<*>?) {}
            override fun onItemSelected(parent: AdapterView<*>?, view: View?, position: Int, id: Long) {
                itemSelect = parent!!.getItemAtPosition(position).toString().substring(0, 2).toInt()
                indexSelect=position
            }
        }
        return v
    }

    suspend fun getDescServers(): List<ServeInv> {
        return GlobalScope.async(Dispatchers.IO) {
            return@async AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.fetchAllServers()
        }.await()
    }

    fun guardarPreferencias() {
//        try {
        val editor = sharedPreferences.edit()

        if (etRuta.text.isNotEmpty()) editor?.putString("etRuta", etRuta.text.toString())

        if (rbProInclu.isChecked) editor?.putString("rbProInclu", "1") else editor?.putString("rbProInclu", "0")
        if (rbProNoInclu.isChecked) editor?.putString("rbProNoInclu", "1") else editor?.putString("rbProNoInclu", "0")

        if (cbHabiLectura.isChecked) editor?.putString("cbHabiLectura", "1") else editor?.putString("cbHabiLectura", "0")
        if (cbMostrarStock.isChecked) editor?.putString("cbMostrarStock", "1") else editor?.putString("cbMostrarStock", "0")
        if (rbVentas.isChecked) editor?.putString("rbVentas", "1") else editor?.putString("rbVentas", "0")
        if (rbDeposito.isChecked) editor?.putString("rbDeposito", "1") else editor?.putString("rbDeposito", "0")
        if (rbCodigoDebo.isChecked) editor?.putString("rbCodigoDebo", "1") else editor?.putString("rbCodigoDebo", "0")
        if (rbCodigoOrigen.isChecked) editor?.putString("rbCodigoOrigen", "1") else editor?.putString("rbCodigoOrigen", "0")
        if (rbCodigoBarras.isChecked) editor?.putString("rbCodigoBarras", "1") else editor?.putString("rbCodigoBarras", "0")
        if (cbMostrarExistencia.isChecked) editor?.putString("cbMostrarExistencia", "1") else editor?.putString("cbMostrarExistencia", "0")
        if (cbMostrarPrecio.isChecked) editor?.putString("cbMostrarPrecio", "1") else editor?.putString("cbMostrarPrecio", "0")
        editor?.putString("ServerPredeterminado", indexSelect.toString())
        updateServerPreInZero()
        updateServerPre(itemSelect)

        editor?.apply()
        editor.commit()

//        } catch (e: Exception) {
//            Toast.makeText(requireContext(),    "Error ", Toast.LENGTH_LONG).show()
//            e.printStackTrace()
//        }
    }

    private fun updateServerPreInZero() {
        lifecycleScope.launch {
            withContext(Dispatchers.IO) {
                val activity: FragmentActivity? = activity
                if (activity != null && isAdded) {
                    AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.UpdateServerPreInZero()
                }
            }
        }
    }

    private fun updateServerPre(server: Int) {
        lifecycleScope.launch {
            withContext(Dispatchers.IO) {
                val activity: FragmentActivity? = activity
                if (activity != null) {
                    AppDb.getAppDb(requireActivity())!!.ServeInvDao()!!.UpdateServerPre(server)
                }
            }
        }
    }
}