diff --git a/Layout/default/Preordercampaign/Form.php b/Layout/default/Preordercampaign/Form.php
index faf90b5a0..2c1042d4f 100644
--- a/Layout/default/Preordercampaign/Form.php
+++ b/Layout/default/Preordercampaign/Form.php
@@ -102,6 +102,7 @@
+
diff --git a/application/ADBHausnummer/ADBHausnummer.php b/application/ADBHausnummer/ADBHausnummer.php
index 80c22b46d..9f8683f65 100644
--- a/application/ADBHausnummer/ADBHausnummer.php
+++ b/application/ADBHausnummer/ADBHausnummer.php
@@ -3,6 +3,7 @@
class ADBHausnummer extends mfBaseModel {
private $strasse;
private $plz;
+ private $freigabe = [];
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -42,6 +43,13 @@ class ADBHausnummer extends mfBaseModel {
public function getProperty($name) {
if($this->$name == null) {
+ if($name == "freigabe") {
+ foreach(ADBHausnummerFreigabeModel::search(['hausnummer_id' => $this->id]) as $hf) {
+ $this->freigabe[] = $hf->freigabe;
+ }
+ return $this->freigabe;
+ }
+
if($name == "strasse") {
$this->strasse = new ADBStrasse($this->strasse_id);
return $this->strasse;
diff --git a/application/ADBHausnummerFreigabe/ADBHausnummerFreigabe.php b/application/ADBHausnummerFreigabe/ADBHausnummerFreigabe.php
new file mode 100644
index 000000000..8ea403155
--- /dev/null
+++ b/application/ADBHausnummerFreigabe/ADBHausnummerFreigabe.php
@@ -0,0 +1,10 @@
+db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
+ $this->table = "HausnummerFreigabe";
+ }
+
+}
diff --git a/application/ADBHausnummerFreigabe/ADBHausnummerFreigabeModel.php b/application/ADBHausnummerFreigabe/ADBHausnummerFreigabeModel.php
new file mode 100644
index 000000000..a73da0f50
--- /dev/null
+++ b/application/ADBHausnummerFreigabe/ADBHausnummerFreigabeModel.php
@@ -0,0 +1,145 @@
+ $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 getFirst($filter) {
+ $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
+
+ $where = self::getSqlFilter($filter);
+ mfLoghandler::singleton()->debug($where);
+ $res = $db->select("HausnummerFreigabe", "*", "$where ORDER BY hausnummer_id,freigabe LIMIT 1");
+ if($db->num_rows($res)) {
+ $data = $db->fetch_object($res);
+ $item = new ADBHausnummerFreigabe($data);
+ if($item->id) {
+ return $item;
+ } else {
+ return null;
+ }
+ }
+ return null;
+ }
+
+ public static function getAll() {
+ $items = [];
+
+ $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
+
+ $res = $db->select("HausnummerFreigabe", "*", "1=1 ORDER BY hausnummer_id,freigabe");
+ if($db->num_rows($res)) {
+ while($data = $db->fetch_object($res)) {
+ $items[] = new ADBHausnummerFreigabe($data);
+ }
+ }
+ return $items;
+
+ }
+
+
+ public static function count($filter) {
+ $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
+
+ $where = self::getSqlFilter($filter);
+ $sql = "SELECT COUNT(*) as cnt FROM HausnummerFreigabe
+ WHERE $where
+ ";
+
+ $res = $db->query($sql);
+ if($db->num_rows($res)) {
+ $data = $db->fetch_object($res);
+ return $data->cnt;
+ }
+ return 0;
+ }
+
+ public static function search($filter, $limit = false) {
+ $items = [];
+ $db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
+
+ $where = self::getSqlFilter($filter);
+ $sql = "SELECT HausnummerFreigabe.* FROM HausnummerFreigabe
+ WHERE $where
+ ORDER BY hausnummer_id,freigabe";
+
+ mfLoghandler::singleton()->debug($sql);
+ if(is_array($limit) && count($limit)) {
+ if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
+ $sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
+ } elseif(is_numeric($limit['count'])) {
+ $sql .= " LIMIT ".$limit['count'];
+ }
+ }
+
+ $res = $db->query($sql);
+ if($db->num_rows($res)) {
+ while($data = $db->fetch_object($res)) {
+ $items[] = new ADBHausnummerFreigabe($data);
+ }
+ }
+ return $items;
+ }
+
+ private static function getSqlFilter($filter) {
+ $where = "1=1 ";
+
+ if(array_key_exists("extref", $filter)) {
+ $extref = FronkDB::singleton()->escape($filter['extref']);
+ if($extref) {
+ $where .= " AND HausnummerFreigabe.`extref` = '$extref'";
+ }
+ }
+
+ if(array_key_exists("hausnummer_id", $filter)) {
+ $hausnummer_id = $filter['hausnummer_id'];
+ if(is_numeric($hausnummer_id)) {
+ $where .= " AND HausnummerFreigabe.hausnummer_id=$hausnummer_id";
+ } elseif(is_array($hausnummer_id) && count($hausnummer_id)) {
+ $where .= " AND HausnummerFreigabe.hausnummer_id IN (". implode(",", $hausnummer_id).")";
+ }
+ }
+
+
+ if(array_key_exists("freigabe", $filter)) {
+ $freigabe = FronkDB::singleton()->escape($filter['freigabe']);
+ if($freigabe) {
+ $where .= " AND HausnummerFreigabe.`freigabe` = '$freigabe'";
+ }
+ }
+
+
+ //var_dump($filter, $where);exit;
+ return $where;
+ }
+
+}
diff --git a/application/Api/v1/AddressdbApicontroller.php b/application/Api/v1/AddressdbApicontroller.php
index ffbcd71ee..91b570069 100644
--- a/application/Api/v1/AddressdbApicontroller.php
+++ b/application/Api/v1/AddressdbApicontroller.php
@@ -210,22 +210,23 @@ class AddressdbApicontroller extends mfBaseApicontroller {
$sql = "SELECT * FROM view_wohneinheit WHERE $where ORDER BY plz, gemeinde, ortschaft, strasse, LENGTH(hausnummer), hausnummer, block, stiege, stock, LENGTH(tuer), tuer";
$res = $this->db()->query($sql);
+ $hausnummer_cache = [];
+
if($this->db()->num_rows($res)) {
while($data = $this->db()->fetch_object($res)) {
+ if(array_key_exists($data->hausnummer_id,$hausnummer_cache)) {
+ $hausnummer = $hausnummer_cache[$data->hausnummer_id];
+ } else {
+ $hausnummer = new ADBHausnummer($data->hausnummer_id);
+ $hausnummer_cache[$data->hausnummer_id] = $hausnummer;
+ }
+ if(!$hausnummer->id) continue;
+
$ptypes = [];
- switch($data->freigabe) {
- case "voll":
- if(in_array("order", $this->allowed_preordertypes)) {
- $ptypes[] = "order";
- }
- case "vorsorge":
- if(in_array("provision", $this->allowed_preordertypes)) {
- $ptypes[] = "provision";
- }
- case "interesse":
- if(in_array("interest", $this->allowed_preordertypes)) {
- $ptypes[] = "interest";
- }
+ foreach($hausnummer->freigabe as $freigabe) {
+ if(in_array($freigabe, $this->allowed_preordertypes)) {
+ $ptypes[] = $freigabe;
+ }
}
$addresses[] = [
@@ -240,6 +241,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
'zusatz' => $data->zusatz,
'gps_lat' => $data->gps_lat,
'gps_long' => $data->gps_long,
+ 'rollout_year' => ($data->rollout) ? (int)$data->rollout : null,
'preorderTypes' => $ptypes
];
}
diff --git a/application/Api/v1/PreorderApicontroller.php b/application/Api/v1/PreorderApicontroller.php
index fc3b0f0d2..f685c7a5c 100644
--- a/application/Api/v1/PreorderApicontroller.php
+++ b/application/Api/v1/PreorderApicontroller.php
@@ -61,7 +61,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$type = $this->post['preorderType'];
- if($type != "interest" && $type != "provision" && $type != "order") {
+ if($type != "interest" && $type != "provision" && $type != "order" && $type != "reorder") {
return mfResponse::BadRequest(["message" => "Invalid preorderType"]);
}
@@ -137,6 +137,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
/*
* search address in AddressDB
*/
+ $where = "1=1 ";
foreach($address_search as $field => $value) {
$where .= " AND `$field` = '$value'";
}
@@ -146,7 +147,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
$where .= " AND netzgebiet_id IN (".implode(',', $this->filter_salescluster_ids).")";
}
- $sql = "SELECT * FROM view_hausnummer WHERE 1=1 $where";
+ $sql = "SELECT * FROM view_hausnummer WHERE $where";
$res = $this->db()->query($sql);
if(!$this->db()->num_rows($res)) {
//var_dump($this->db()->num_rows($res), $this->db()->fetch_object($res));
@@ -279,6 +280,13 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
}
+ if($customer->type == "tenant") {
+ $preorder_data['contact_type'] = "tenant";
+ } elseif($customer->type == "owner") {
+ $preorder_data['contact_type'] = "owner";
+ } else {
+ return mfResponse::BadRequest(["message" => "customer type must be 'tenant' or 'owner'"]);
+ }
/*
* create preorder record
diff --git a/application/Preorder/PreorderModel.php b/application/Preorder/PreorderModel.php
index 8a88854eb..7a16acb5f 100644
--- a/application/Preorder/PreorderModel.php
+++ b/application/Preorder/PreorderModel.php
@@ -25,6 +25,7 @@ class PreorderModel {
public $accept_dsgvo;
public $accept_marketing;
public $accept_withdrawal;
+ public $contact_type;
public $company;
public $uid;
public $firstname;
diff --git a/application/Preordercampaign/Preordercampaign.php b/application/Preordercampaign/Preordercampaign.php
index fd41dc1d7..55dbb8e9e 100644
--- a/application/Preordercampaign/Preordercampaign.php
+++ b/application/Preordercampaign/Preordercampaign.php
@@ -13,7 +13,7 @@ class Preordercampaign extends mfBaseModel {
public function addTypes(Array $types) {
- $allowd_types = ["interest","provision","order"];
+ $allowd_types = ["interest","provision","order","reorder"];
$new_types = [];
diff --git a/lang/de.php b/lang/de.php
index a4351b10c..87cdf1d1f 100644
--- a/lang/de.php
+++ b/lang/de.php
@@ -42,5 +42,6 @@ $l['sipit'] = "SCA (sipit)";
$l['preorder.interest'] = "Interessenbekundung";
$l['preorder.provision'] = "Vorsorgeanschluss";
$l['preorder.order'] = "Vollanschluss";
+$l['preorder.reorder'] = "Nachbestellung";
$lang['de'] = $l;
\ No newline at end of file
diff --git a/scripts/addressdb/add_freigabe.php b/scripts/addressdb/add_freigabe.php
new file mode 100755
index 000000000..fdfc48d23
--- /dev/null
+++ b/scripts/addressdb/add_freigabe.php
@@ -0,0 +1,29 @@
+#!/usr/bin/php
+ [1,2]]) as $hausnummer) {
+ foreach(['interest','provision','order','reorder'] as $type) {
+ $freigabe = ADBHausnummerFreigabeModel::getFirst(['hausnummer_id' => $hausnummer->id, 'freigabe' => $type]);
+ if(!$freigabe) {
+ $freigabe = ADBHausnummerFreigabeModel::create([
+ 'hausnummer_id' => $hausnummer->id,
+ 'freigabe' => $type
+ ]);
+ if(!$freigabe->save()) {
+ die("Error saving HausnummerFreigabe (".$hausnummer->id.", $type)\n");
+ }
+ }
+ }
+}
\ No newline at end of file