Added checks in Product::deleteAction()

This commit is contained in:
Frank Schubert
2024-02-21 15:56:15 +01:00
parent de39dd6946
commit b833c57a98
4 changed files with 68 additions and 3 deletions
@@ -100,7 +100,25 @@ class OrderProductModel
}
return null;
}
public static function count($filter) {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM OrderProduct
WHERE $where
";
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
$data = $db->fetch_object($res);
return $data->cnt;
}
return 0;
}
public static function search($filter)
{
$items = [];
+16
View File
@@ -544,6 +544,20 @@ class PreorderModel {
}
}
if(array_key_exists("product_id", $filter)) {
$product_id = $filter['product_id'];
if(is_numeric($product_id)) {
$where .= " AND tt_preorder.product_id=$product_id";
}
}
if(array_key_exists("setup_product_id", $filter)) {
$setup_product_id = $filter['setup_product_id'];
if(is_numeric($setup_product_id)) {
$where .= " AND tt_preorder.setup_product_id=$setup_product_id";
}
}
if(array_key_exists("address_created", $filter)) {
$address_created = $filter['address_created'];
if($address_created === true) {
@@ -610,6 +624,8 @@ class PreorderModel {
}
}
if(array_key_exists("extref", $filter)) {
$extref = FronkDB::singleton()->escape($filter['extref']);
if($extref) {
+32 -1
View File
@@ -312,8 +312,39 @@ class ProductController extends mfBaseController {
$this->redirect("Product");
}
// check if Product is unused
// check if product is in use
if(OrderProductModel::count(["product_id" => $product->id])) {
$this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error");
$this->redirect("Product");
}
if(ContractModel::count(["product_id" => $product->id])) {
$this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error");
$this->redirect("Product");
}
if(ContractqueueModel::count(["product_id" => $product->id])) {
$this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error");
$this->redirect("Product");
}
if(PreorderModel::count(["product_id" => $product->id]) || PreorderModel::count(["setup_product_id" => $product->id])) {
$this->layout()->setFlash("Produkt kann nicht gelöscht werden, da es in Verwendung ist!", "error");
$this->redirect("Product");
}
// delete attributes
foreach($product->attributes as $attrib) {
$attrib->delete();
}
// delete networks
foreach(ProductNetworkModel::search(['product_id' => $product->id]) as $pn) {
$pn->delete();
}
// delete product
$product->delete();
$this->layout()->setFlash("Produkt erfolgreich gelöscht", "success");
$this->redirect("Product");
}