ability to remove a category
This commit is contained in:
parent
fbfe68786e
commit
068cd7846b
|
@ -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()
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
Loading…
Reference in New Issue