ability to remove a category
This commit is contained in:
		@@ -62,7 +62,51 @@ class DBStorageController(context: Context) : SQLiteOpenHelper(context, DATABASE
 | 
				
			|||||||
        TODO("Not yet implemented")
 | 
					        TODO("Not yet implemented")
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    public fun eraseAbstractProduct(db: SQLiteDatabase, id: Int, context: Context) {
 | 
					    fun eraseCategory (db: SQLiteDatabase, id: Int, context: Context) {
 | 
				
			||||||
 | 
					        val productsInCategory = getAllAbstractProductInCategory(db, id)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        for (product in productsInCategory.iterator()) {
 | 
				
			||||||
 | 
					            eraseAbstractProduct(db, product.id, context)
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        db.delete(CategoriesContract.CategoryEntry.TABLE_NAME, BaseColumns._ID + "=" + id, null)
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fun getAllAbstractProductInCategory(db: SQLiteDatabase, id: Int) : List<AbstractProduct> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        var result = mutableListOf<AbstractProduct>()
 | 
				
			||||||
 | 
					        val projection = arrayOf(
 | 
				
			||||||
 | 
					            BaseColumns._ID,
 | 
				
			||||||
 | 
					            ProductContract.ProductEntry.PRODUCT_NAME,
 | 
				
			||||||
 | 
					            ProductContract.ProductEntry.IMAGE_FILENAME,
 | 
				
			||||||
 | 
					            ProductContract.ProductEntry.PRODUCT_NET_WEIGHT,
 | 
				
			||||||
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        val selection = "${ProductContract.ProductEntry.CATEGORY} = ?"
 | 
				
			||||||
 | 
					        val selectionArgs = arrayOf(id.toString())
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        val cursor = db.query(ProductContract.ProductEntry.TABLE_NAME, projection, selection, selectionArgs, null, null, null)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        with(cursor) {
 | 
				
			||||||
 | 
					            while (moveToNext()) {
 | 
				
			||||||
 | 
					                val abstractProductId = getInt(getColumnIndexOrThrow(BaseColumns._ID))
 | 
				
			||||||
 | 
					                val abstractProductName = getString(getColumnIndexOrThrow(ProductContract.ProductEntry.PRODUCT_NAME))
 | 
				
			||||||
 | 
					                val abstractProductNetWeight = getDouble(getColumnIndexOrThrow(ProductContract.ProductEntry.PRODUCT_NET_WEIGHT))
 | 
				
			||||||
 | 
					                val abstractProductImageHash = getString(getColumnIndexOrThrow(ProductContract.ProductEntry.IMAGE_FILENAME))
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                val abstractProduct = AbstractProduct(
 | 
				
			||||||
 | 
					                    abstractProductId, abstractProductName, abstractProductNetWeight, abstractProductImageHash,
 | 
				
			||||||
 | 
					                    categoryName = ""
 | 
				
			||||||
 | 
					                )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                result.add(abstractProduct)
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        return result
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    fun eraseAbstractProduct(db: SQLiteDatabase, id: Int, context: Context) {
 | 
				
			||||||
        val projection = arrayOf(
 | 
					        val projection = arrayOf(
 | 
				
			||||||
            ProductContract.ProductEntry.IMAGE_FILENAME
 | 
					            ProductContract.ProductEntry.IMAGE_FILENAME
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -1,7 +1,9 @@
 | 
				
			|||||||
package org.foxarmy.barcodescannerforemployees.views
 | 
					package org.foxarmy.barcodescannerforemployees.views
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import android.app.Activity
 | 
					import android.app.Activity
 | 
				
			||||||
 | 
					import android.app.AlertDialog
 | 
				
			||||||
import android.content.Context
 | 
					import android.content.Context
 | 
				
			||||||
 | 
					import android.content.DialogInterface
 | 
				
			||||||
import android.content.Intent
 | 
					import android.content.Intent
 | 
				
			||||||
import android.os.Bundle
 | 
					import android.os.Bundle
 | 
				
			||||||
import android.view.LayoutInflater
 | 
					import android.view.LayoutInflater
 | 
				
			||||||
@@ -10,6 +12,7 @@ import android.widget.LinearLayout
 | 
				
			|||||||
import android.widget.TextView
 | 
					import android.widget.TextView
 | 
				
			||||||
import androidx.core.content.ContextCompat
 | 
					import androidx.core.content.ContextCompat
 | 
				
			||||||
import org.foxarmy.barcodescannerforemployees.Category
 | 
					import org.foxarmy.barcodescannerforemployees.Category
 | 
				
			||||||
 | 
					import org.foxarmy.barcodescannerforemployees.DBStorageController
 | 
				
			||||||
import org.foxarmy.barcodescannerforemployees.R
 | 
					import org.foxarmy.barcodescannerforemployees.R
 | 
				
			||||||
import org.foxarmy.barcodescannerforemployees.activities.AddCategoryActivity
 | 
					import org.foxarmy.barcodescannerforemployees.activities.AddCategoryActivity
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -41,7 +44,16 @@ class CategoryView : LinearLayout {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        deleteButton.setOnClickListener {
 | 
					        deleteButton.setOnClickListener {
 | 
				
			||||||
            TODO("implement delete button")
 | 
					            val builder = AlertDialog.Builder(context)
 | 
				
			||||||
 | 
					                .setMessage("Deleting this category will also delete ALL the products, that belong to that category. Do you want to proceed?")
 | 
				
			||||||
 | 
					                .setPositiveButton("Yes") { _: DialogInterface, _: Int ->
 | 
				
			||||||
 | 
					                    val db = DBStorageController(context).writableDatabase
 | 
				
			||||||
 | 
					                    DBStorageController(context).eraseCategory(db, category.id, context)
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }
 | 
				
			||||||
 | 
					                .setNegativeButton("No") { _: DialogInterface, _: Int ->
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					                }.show()
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user