From 609ac5ac4ad326315613d96da0479ab141ed718e Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Wed, 12 Oct 2022 13:35:06 +0200 Subject: [PATCH] Enabled soft-delete for preorders --- Layout/default/Preorder/Index.php | 2 +- Layout/default/Preordercampaign/Index.php | 2 +- application/Preorder/PreorderController.php | 38 +++++++++++++++++-- application/Preorder/PreorderModel.php | 13 +++++++ .../Preordercampaign/Preordercampaign.php | 6 +++ 5 files changed, 56 insertions(+), 5 deletions(-) diff --git a/Layout/default/Preorder/Index.php b/Layout/default/Preorder/Index.php index f1348e3b4..289f7ea67 100644 --- a/Layout/default/Preorder/Index.php +++ b/Layout/default/Preorder/Index.php @@ -138,7 +138,7 @@ edit)?> $preorder->id])?>"> - $preorder->id])?>" class="text-danger" onclick="if(!confirm('Vorbestellung wirklich löschen?')) return false;" title="Vorbestellung Löschen"> + $preorder->id, "filter" => $filter])?>" class="text-danger" onclick="if(!confirm('Vorbestellung wirklich löschen?')) return false;" title="Vorbestellung Löschen"> diff --git a/Layout/default/Preordercampaign/Index.php b/Layout/default/Preordercampaign/Index.php index 3a5afe44b..f16b5eaa1 100644 --- a/Layout/default/Preordercampaign/Index.php +++ b/Layout/default/Preordercampaign/Index.php @@ -98,7 +98,7 @@ network->name?> name?> area?> - ["preordercampaign_id" => $camp->id]])?>">preorders)?> + ["preordercampaign_id" => $camp->id]])?>">active_preorders)?> from)?> to)?> diff --git a/application/Preorder/PreorderController.php b/application/Preorder/PreorderController.php index 8c514c0a9..741ba7029 100644 --- a/application/Preorder/PreorderController.php +++ b/application/Preorder/PreorderController.php @@ -49,7 +49,7 @@ class PreorderController extends mfBaseController { $this->layout()->set("campaign", $campaign); } } - //var_dump($campaign_filter);exit; + //var_dump($filter);exit; $preorders = PreorderModel::search($filter); $this->layout()->set("preorders", $preorders); } @@ -60,10 +60,13 @@ class PreorderController extends mfBaseController { if(array_key_exists("show_deleted", $filter)) { if($filter['show_deleted'] == "show") { $new_filter['deleted'] = null; - } - if($filter['show_deleted'] == "only") { + } elseif($filter['show_deleted'] == "only") { $new_filter['deleted'] = 1; + } else { + $new_filter['deleted'] = 0; } + } else { + $new_filter['deleted'] = 0; } if(is_array($filter) && count($filter)) { @@ -326,4 +329,33 @@ class PreorderController extends mfBaseController { } + public function deleteAction() { + $qs = ""; + + if(is_array($this->request->filter) && count($this->request->filter)) { + $qs = ['filter' => $this->request->filter]; + $qs = http_build_query($qs); + } + + $id = $this->request->id; + if(!is_numeric($id) || $id < 1) { + $this->layout()->setFlash("Vorbestellung nicht gefunden!", "error"); + $this->redirect("Preorder", "Index", $qs); + } + + $preorder = new Preorder($id); + if(!$preorder->id) { + $this->layout()->setFlash("Vorbestellung nicht gefunden!", "error"); + $this->redirect("Preorder", "Index", $qs); + } + + $preorder->deleted = date('U'); + $preorder->deleted_by = $this->me->id; + $preorder->save(); + + $this->layout()->setFlash("Vorbestellung erfolgreich gelöscht!", "success"); + $this->redirect("Preorder", "Index", $qs); + + } + } \ No newline at end of file diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php index 768e6e744..350acd774 100644 --- a/application/Preorder/PreorderModel.php +++ b/application/Preorder/PreorderModel.php @@ -125,6 +125,17 @@ class PreorderModel { $where = "1=1 "; //var_dump($filter);exit; + + if(array_key_exists("deleted", $filter)) { + $deleted = $filter['deleted']; + if(is_numeric($deleted)) { + $where .= " AND deleted=$deleted"; + } + if($deleted === null) { + $where .= " AND deleted IS NULL"; + } + } + if(array_key_exists("preordercampaign_id", $filter)) { $preordercampaign_id = $filter['preordercampaign_id']; if(is_numeric($preordercampaign_id)) { @@ -185,6 +196,8 @@ class PreorderModel { } + + //var_dump($filter, $where);exit; return $where; } diff --git a/application/Preordercampaign/Preordercampaign.php b/application/Preordercampaign/Preordercampaign.php index 2c421543f..485f23d46 100644 --- a/application/Preordercampaign/Preordercampaign.php +++ b/application/Preordercampaign/Preordercampaign.php @@ -3,6 +3,7 @@ class Preordercampaign extends mfBaseModel { private $network; private $preorders; + private $active_preorders; private $types; private $setup_products; private $salesclusters; @@ -74,6 +75,11 @@ class Preordercampaign extends mfBaseModel { return $this->preorders; } + if($name == "active_preorders") { + $this->active_preorders = PreorderModel::search(['preordercampaign_id' => $this->id, 'deleted' => 0]); + return $this->active_preorders; + } + if($name == "types") { $types = PreordercampaignTypeModel::search(['preordercampaign_id' => $this->id]); foreach($types as $type) {