diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php index 5d2e3f00d..a01e48a32 100644 --- a/Layout/default/Preordercampaign/Form.php +++ b/Layout/default/Preordercampaign/Form.php @@ -113,7 +113,20 @@ - +
+
+
+ +
+ +
+
+
+
@@ -156,5 +169,11 @@ closeOnSelect: false }); + $("#adb_gemeinde_ids").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 eb2ccb217..c02551c08 100644 --- a/application/Preordercampaign/Preordercampaign.php +++ b/application/Preordercampaign/Preordercampaign.php @@ -5,6 +5,7 @@ class Preordercampaign extends mfBaseModel { private $preorders; private $types; private $setup_products; + private $gemeinden; public function addTypes(Array $types) { @@ -85,6 +86,14 @@ class Preordercampaign extends mfBaseModel { return $this->setup_products; } + if($name == "gemeinden") { + $items = PreordercampaignGemeindeModel::search(["preordercampaign_id" => $this->id]); + foreach($items as $pog) { + $this->gemeinden[$pog->gemeinde_id] = $pog; + } + return $this->gemeinden; + } + 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 18ec3840d..a921116a5 100644 --- a/application/Preordercampaign/PreordercampaignController.php +++ b/application/Preordercampaign/PreordercampaignController.php @@ -91,6 +91,8 @@ class PreordercampaignController extends mfBaseController { $this->layout()->set("statuses", BuildingstatusModel::getAll()); $this->layout()->set("networksections", NetworksectionModel::getAll()); + + $this->layout()->set("adb_gemeinden", ADBGemeindeModel::getAll()); } protected function editAction() { @@ -108,6 +110,7 @@ class PreordercampaignController extends mfBaseController { $this->layout()->set("campaign", $campaign); + return $this->addAction(); } @@ -177,6 +180,19 @@ class PreordercampaignController extends mfBaseController { $campaign->addTypes($r->types); } + //var_dump($r->adb_gemeinde_ids);exit; + if(is_array($r->adb_gemeinde_ids) && count($r->adb_gemeinde_ids)) { + foreach(PreordercampaignGemeindeModel::search(['preordercampaign_id' => $campaign->id]) as $pcg) { + $pcg->delete(); + } + foreach($r->adb_gemeinde_ids as $gemeinde_id) { + $pcg = PreordercampaignGemeindeModel::getFirst(['preordercampaign_id' => $campaign->id, 'gemeinde_id' => $gemeinde_id]); + if($pcg) continue; + + $pcg = PreordercampaignGemeindeModel::create(['preordercampaign_id' => $campaign->id, 'gemeinde_id' => $gemeinde_id]); + $pcg->save(); + } + } $this->layout()->setFlash("Vorbestellkampagne erfolgreich gespeichert.", "success"); //$this->redirect("Preordercampaign", "Edit", ['id' => $new_id]); diff --git a/application/PreordercampaignGemeinde/PreordercampaignGemeinde.php b/application/PreordercampaignGemeinde/PreordercampaignGemeinde.php new file mode 100644 index 000000000..f9b9c30a2 --- /dev/null +++ b/application/PreordercampaignGemeinde/PreordercampaignGemeinde.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("PreordercampaignGemeinde", "*", "ORDER BY preordercampaign_id, gemeinde_id"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreordercampaignGemeinde($data); + } + } + return $items; + + } + + public static function getFirst($filter) { + $db = FronkDB::singleton(); + + $where = self::getSqlFilter($filter); + $res = $db->select("PreordercampaignGemeinde", "*", "$where ORDER BY preordercampaign_id, gemeinde_id"); + if($db->num_rows($res)) { + $data = $db->fetch_object($res); + $item = new PreordercampaignGemeinde($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("PreordercampaignGemeinde", "*", "$where ORDER BY preordercampaign_id, gemeinde_id"); + if($db->num_rows($res)) { + while($data = $db->fetch_object($res)) { + $items[] = new PreordercampaignGemeinde($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("gemeinde_id", $filter)) { + $gemeinde_id = $filter['gemeinde_id']; + if(is_numeric($gemeinde_id)) { + $where .= " AND gemeinde_id=$gemeinde_id"; + } + } + + //var_dump($filter, $where);exit; + return $where; + } + +}