DescripcionFragment.kt 7.1 KB
package com.focasoftware.deboinventariov20.ui.descripcionFragment

import android.content.Context
import android.content.SharedPreferences
import android.graphics.Canvas
import android.graphics.Color
import android.graphics.drawable.ColorDrawable
import android.os.Bundle
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.Button
import androidx.fragment.app.Fragment
import androidx.lifecycle.lifecycleScope
import androidx.navigation.NavController
import androidx.navigation.Navigation
import androidx.recyclerview.widget.ItemTouchHelper
import androidx.recyclerview.widget.LinearLayoutManager
import androidx.recyclerview.widget.RecyclerView
import com.afollestad.materialdialogs.MaterialDialog
import com.afollestad.materialdialogs.input.input
import com.focasoftware.deboinventariov20.DB.DataBase.AppDb
import com.focasoftware.deboinventariov20.Model.Articles
import com.focasoftware.deboinventariov20.Model.InvBody
import com.focasoftware.deboinventariov20.R
import com.focasoftware.deboinventariov20.ui.inventario.InventarioFragment
import kotlinx.coroutines.Dispatchers
import kotlinx.coroutines.launch
import kotlinx.coroutines.withContext

class DescripcionFragment : Fragment() {
    private var artAcargar2: List<Articles>? = null
    private var listArticulos2: List<Articles>? = null
    lateinit var viewAdapter2: RecyclerView.Adapter<*>
    private lateinit var viewManager2: RecyclerView.LayoutManager
    private lateinit var rcDescripcion: RecyclerView
    private var swipeBackground: ColorDrawable = ColorDrawable(Color.YELLOW)
    private var cantidad = 0F
    private var numeroInventario = 0
    lateinit var navController: NavController
    lateinit var sharedPreferences: SharedPreferences

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        sharedPreferences = requireActivity().getSharedPreferences("SP_INFO", Context.MODE_PRIVATE)
        arguments.apply {
            artAcargar2 = requireArguments().getSerializable("ArrayDesc") as List<Articles>
            numeroInventario = requireArguments().getInt("numeroInv")
        }
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        navController = Navigation.findNavController(view)
    }

    override fun onCreateView(inflater: LayoutInflater, container: ViewGroup?, savedInstanceState: Bundle?): View? {
        // Inflate the layout for this fragment
        val v = inflater.inflate(R.layout.fragment_descripcion, container, false)
        rcDescripcion = v.findViewById(R.id.rcDescripcion)
        val btnSalir = v.findViewById<Button>(R.id.btnSalir)

        IngresarRecicler(artAcargar2)

        btnSalir.setOnClickListener {
            VolverAinventario()
        }
        return v
    }

    fun IngresarRecicler(articulos: List<Articles>?) {

        viewAdapter2 = DescripcionListAdapter(articulos)
        viewManager2 = LinearLayoutManager(requireContext())

        rcDescripcion.apply {
            adapter = viewAdapter2
            layoutManager = viewManager2
        }
        val itemTouchHelperCallback = object : ItemTouchHelper.SimpleCallback(0, ItemTouchHelper.LEFT or ItemTouchHelper.RIGHT) {
            override fun onMove(p0: RecyclerView, p1: RecyclerView.ViewHolder, target: RecyclerView.ViewHolder): Boolean {
                return false
            }

            override fun onSwiped(viewHolder: RecyclerView.ViewHolder, position: Int) {
                MaterialDialog(requireContext()).show {
                    title(R.string.sTitulo)
                    message(R.string.sMensajeEncontrado)
                    input { materialDialog, charSequence ->
                        cantidad = 0F
                        cantidad = charSequence.toString().toFloat()
                    }
//                                .input("Cantidad",1,,1,0,InputType.TYPE_CLASS_NUMBER,0,waitForPositiveButton = true,false,positiveButton ())
                    positiveButton(R.string.btnOk) {
                        dismiss()
                        var indice = 0
                        indice=viewHolder.layoutPosition

                        val body = InvBody(numeroInventario,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.sector,
                            // TODO PREPARO PARA MANDAR A CARGAR EN LA BD
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codigo,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.descripcion,
                            cantidad.toString(),
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codBar,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.codOrigen,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.precio,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.precio,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.balanza,
                            (viewAdapter2 as DescripcionListAdapter).items2?.get(indice)!!.depSn,
                            InventarioFragment().ObtenerFechaActual(),
                            InventarioFragment().ObtenerFechaActual())
                        InsertarArtEnDB(body)// TODO: MANDO A CARGAR A LA BASE DE DATOS
                        VolverAinventario()
                    }
                }.cancelOnTouchOutside(false).cornerRadius(10F)
            }

            override fun onChildDraw(c: Canvas, recyclerView: RecyclerView, viewHolder: RecyclerView.ViewHolder, dX: Float, dY: Float, actionState: Int, isCurrentlyActive: Boolean) {
                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
                val itemView = viewHolder.itemView

                c.clipRect(0f, itemView.top.toFloat(), dX, itemView.bottom.toFloat())

                if (dX > 0) {

                    c.drawColor(Color.RED)
                } else if (dX < 0) {
                    // swipeBackground.setBounds(itemView.right+dX.toInt(),itemView.top,itemView.right,itemView.bottom)
                    c.drawColor(Color.YELLOW)
                }
                swipeBackground.draw(c)
                super.onChildDraw(c, recyclerView, viewHolder, dX, dY, actionState, isCurrentlyActive)
            }
        }
        val itemTouchHelper2 = ItemTouchHelper(itemTouchHelperCallback)
        itemTouchHelper2.attachToRecyclerView(rcDescripcion)

    }

    fun InsertarArtEnDB(cuarpoInventario: InvBody) {
        lifecycleScope.launch {
            withContext(Dispatchers.IO) {
                AppDb.getAppDb(requireActivity())!!.InvBodyDAO()!!.insertInvBody(cuarpoInventario)
            }
        }
    }
    fun VolverAinventario(){

        val editor = sharedPreferences.edit()
        editor?.putString("Inventario", numeroInventario.toString())
        editor?.apply()
        editor.commit()
        navController.navigate(R.id.action_descripcionFragment_to_inventarioFragment)
    }
}