From c66ffb1d2fa9f44dd5bb52a6347ccddeaeffb71b Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Mon, 12 Sep 2022 13:51:01 +0200 Subject: [PATCH] Added apiuser selection to preordercampaign --- Layout/default/Preordercampaign/Form.php | 29 ++++- .../Preordercampaign/Preordercampaign.php | 9 ++ .../PreordercampaignController.php | 13 +++ .../PreordercampaignApiuser.php | 5 + .../PreordercampaignApiuserModel.php | 106 ++++++++++++++++++ application/User/UserModel.php | 10 ++ 6 files changed, 171 insertions(+), 1 deletion(-) create mode 100644 application/PreordercampaignApiuser/PreordercampaignApiuser.php create mode 100644 application/PreordercampaignApiuser/PreordercampaignApiuserModel.php diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php index 20c23deca..a47caabdd 100644 --- a/Layout/default/Preordercampaign/Form.php +++ b/Layout/default/Preordercampaign/Form.php @@ -127,7 +127,29 @@ - + + + + + +
+
+

API-User

+
+
+
+ +
+ +
+
+
+
+
@@ -175,5 +197,10 @@ closeOnSelect: false }); + $("#apiusers").select2({ + allowClear: true, + placeholder: "", + closeOnSelect: false + }); \ No newline at end of file diff --git a/application/Preordercampaign/Preordercampaign.php b/application/Preordercampaign/Preordercampaign.php index c02551c08..31b6ffbb3 100644 --- a/application/Preordercampaign/Preordercampaign.php +++ b/application/Preordercampaign/Preordercampaign.php @@ -6,6 +6,7 @@ class Preordercampaign extends mfBaseModel { private $types; private $setup_products; private $gemeinden; + private $apiusers; public function addTypes(Array $types) { @@ -94,6 +95,14 @@ class Preordercampaign extends mfBaseModel { return $this->gemeinden; } + if($name == "apiusers") { + $items = PreordercampaignApiuserModel::search(["preordercampaign_id" => $this->id]); + foreach($items as $poa) { + $this->apiusers[$poa->worker_id] = $poa; + } + return $this->apiusers; + } + if($name == "creator") { $user = mfValuecache::singleton()->get("Worker-id-".$this->create_by); if($user) { diff --git a/application/Preordercampaign/PreordercampaignController.php b/application/Preordercampaign/PreordercampaignController.php index abe56c549..268ae8b0e 100644 --- a/application/Preordercampaign/PreordercampaignController.php +++ b/application/Preordercampaign/PreordercampaignController.php @@ -194,6 +194,19 @@ class PreordercampaignController extends mfBaseController { } } + foreach(PreordercampaignApiuserModel::search(['preordercampaign_id' => $campaign->id]) as $pca) { + $pca->delete(); + } + if(is_array($r->apiusers) && count($r->apiusers)) { + foreach($r->apiusers as $user_id) { + $pca = PreordercampaignApiuserModel::getFirst(['preordercampaign_id' => $campaign->id, 'worker_id' => $user_id]); + if($pca) continue; + + $pca = PreordercampaignApiuserModel::create(['preordercampaign_id' => $campaign->id, 'worker_id' => $user_id]); + $pca->save(); + } + } + $this->layout()->setFlash("Vorbestellkampagne erfolgreich gespeichert.", "success"); //$this->redirect("Preordercampaign", "Edit", ['id' => $new_id]); $this->redirect("Preordercampaign"); diff --git a/application/PreordercampaignApiuser/PreordercampaignApiuser.php b/application/PreordercampaignApiuser/PreordercampaignApiuser.php new file mode 100644 index 000000000..fc5d3ce04 --- /dev/null +++ b/application/PreordercampaignApiuser/PreordercampaignApiuser.php @@ -0,0 +1,5 @@ + $value) { + if(property_exists(get_called_class(), $field)) { + $model->$field = $value; + } + } + + $me = mfValuecache::singleton()->get("me"); + if(!$me) { + $me = new User(); + $me->loadMe(); + mfValuecache::singleton()->set("me", $me); + } + + if($model->create_by === null) { + $model->create_by = $me->id; + } + if($model->edit_by === null) { + $model->edit_by = $me->id; + } + + return $model; + } + + public static function getAll() { + $items = []; + + $db = FronkDB::singleton(); + + $res = $db->select("PreordercampaignApiuser", "*", "ORDER BY preordercampaign_id, worker_id"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreordercampaignApiuser($data); + } + } + return $items; + + } + + public static function getFirst($filter) { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("PreordercampaignApiuser", "*", "$where ORDER BY preordercampaign_id, worker_id"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new PreordercampaignApiuser($data); + if($item->id) { + return $item; + } else { + return null; + } + } + return null; + } + + public static function search($filter) { + $items = []; + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("PreordercampaignApiuser", "*", "$where ORDER BY preordercampaign_id, worker_id"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreordercampaignApiuser($data); + } + } + return $items; + } + + private static function getSqlFilter($filter) { + $where = "1=1 "; + + //var_dump($filter);exit; + if(array_key_exists("preordercampaign_id", $filter)) { + $preordercampaign_id = $filter['preordercampaign_id']; + if(is_numeric($preordercampaign_id)) { + $where .= " AND preordercampaign_id=$preordercampaign_id"; + } + } + + if(array_key_exists("worker_id", $filter)) { + $worker_id = $filter['worker_id']; + if(is_numeric($worker_id)) { + $where .= " AND worker_id=$worker_id"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +} diff --git a/application/User/UserModel.php b/application/User/UserModel.php index d3ef81ddd..c775f3e46 100644 --- a/application/User/UserModel.php +++ b/application/User/UserModel.php @@ -91,6 +91,16 @@ class UserModel { $where .= " AND address_id=$addressid"; } } + + if(array_key_exists("apikey", $filter)) { + $apikey = $filter['apikey']; + if($apikey === true) { + $where .= " AND (apikey IS NOT NULL OR apikey <> '')"; + } elseif($apikey === null) { + $where .= " AND (apikey IS NULL OR apikey='')"; + } + } + //var_dump($filter, $where);exit; return $where; }