Hausnummer Frigabe is own table now

This commit is contained in:
Frank Schubert
2022-10-12 17:41:03 +02:00
parent 192e1323df
commit 58ff523492
10 changed files with 221 additions and 16 deletions

View File

@@ -102,6 +102,7 @@
<option value="interest" <?=(is_array($campaign->types) && array_key_exists("interest", $campaign->types)) ? "selected='selected'" : ""?>><?=__("interest", "preorder")?></option> <option value="interest" <?=(is_array($campaign->types) && array_key_exists("interest", $campaign->types)) ? "selected='selected'" : ""?>><?=__("interest", "preorder")?></option>
<option value="provision" <?=(is_array($campaign->types) && array_key_exists("provision", $campaign->types)) ? "selected='selected'" : ""?>><?=__("provision", "preorder")?></option> <option value="provision" <?=(is_array($campaign->types) && array_key_exists("provision", $campaign->types)) ? "selected='selected'" : ""?>><?=__("provision", "preorder")?></option>
<option value="order" <?=(is_array($campaign->types) && array_key_exists("order", $campaign->types)) ? "selected='selected'" : "netowner"?>><?=__("order", "preorder")?></option> <option value="order" <?=(is_array($campaign->types) && array_key_exists("order", $campaign->types)) ? "selected='selected'" : "netowner"?>><?=__("order", "preorder")?></option>
<option value="reorder" <?=(is_array($campaign->types) && array_key_exists("reorder", $campaign->types)) ? "selected='selected'" : "netowner"?>><?=__("reorder", "preorder")?></option>
</select> </select>
</div> </div>
</div> </div>

View File

@@ -3,6 +3,7 @@
class ADBHausnummer extends mfBaseModel { class ADBHausnummer extends mfBaseModel {
private $strasse; private $strasse;
private $plz; private $plz;
private $freigabe = [];
protected function init() { protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); $this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -42,6 +43,13 @@ class ADBHausnummer extends mfBaseModel {
public function getProperty($name) { public function getProperty($name) {
if($this->$name == null) { 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") { if($name == "strasse") {
$this->strasse = new ADBStrasse($this->strasse_id); $this->strasse = new ADBStrasse($this->strasse_id);
return $this->strasse; return $this->strasse;

View File

@@ -0,0 +1,10 @@
<?php
class ADBHausnummerFreigabe extends mfBaseModel {
protected function init() {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "HausnummerFreigabe";
}
}

View File

@@ -0,0 +1,145 @@
<?php
class ADBHausnummerFreigabeModel {
public $hausnummer_id;
public $freigabe;
public $create = null;
public $edit = null;
public static function create(Array $data) {
$model = new ADBHausnummerFreigabe();
foreach($data as $field => $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;
}
}

View File

@@ -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"; $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); $res = $this->db()->query($sql);
$hausnummer_cache = [];
if($this->db()->num_rows($res)) { if($this->db()->num_rows($res)) {
while($data = $this->db()->fetch_object($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 = []; $ptypes = [];
switch($data->freigabe) { foreach($hausnummer->freigabe as $freigabe) {
case "voll": if(in_array($freigabe, $this->allowed_preordertypes)) {
if(in_array("order", $this->allowed_preordertypes)) { $ptypes[] = $freigabe;
$ptypes[] = "order"; }
}
case "vorsorge":
if(in_array("provision", $this->allowed_preordertypes)) {
$ptypes[] = "provision";
}
case "interesse":
if(in_array("interest", $this->allowed_preordertypes)) {
$ptypes[] = "interest";
}
} }
$addresses[] = [ $addresses[] = [
@@ -240,6 +241,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
'zusatz' => $data->zusatz, 'zusatz' => $data->zusatz,
'gps_lat' => $data->gps_lat, 'gps_lat' => $data->gps_lat,
'gps_long' => $data->gps_long, 'gps_long' => $data->gps_long,
'rollout_year' => ($data->rollout) ? (int)$data->rollout : null,
'preorderTypes' => $ptypes 'preorderTypes' => $ptypes
]; ];
} }

View File

@@ -61,7 +61,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
} }
$type = $this->post['preorderType']; $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"]); return mfResponse::BadRequest(["message" => "Invalid preorderType"]);
} }
@@ -137,6 +137,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
/* /*
* search address in AddressDB * search address in AddressDB
*/ */
$where = "1=1 ";
foreach($address_search as $field => $value) { foreach($address_search as $field => $value) {
$where .= " AND `$field` = '$value'"; $where .= " AND `$field` = '$value'";
} }
@@ -146,7 +147,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
$where .= " AND netzgebiet_id IN (".implode(',', $this->filter_salescluster_ids).")"; $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); $res = $this->db()->query($sql);
if(!$this->db()->num_rows($res)) { if(!$this->db()->num_rows($res)) {
//var_dump($this->db()->num_rows($res), $this->db()->fetch_object($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 * create preorder record

View File

@@ -25,6 +25,7 @@ class PreorderModel {
public $accept_dsgvo; public $accept_dsgvo;
public $accept_marketing; public $accept_marketing;
public $accept_withdrawal; public $accept_withdrawal;
public $contact_type;
public $company; public $company;
public $uid; public $uid;
public $firstname; public $firstname;

View File

@@ -13,7 +13,7 @@ class Preordercampaign extends mfBaseModel {
public function addTypes(Array $types) { public function addTypes(Array $types) {
$allowd_types = ["interest","provision","order"]; $allowd_types = ["interest","provision","order","reorder"];
$new_types = []; $new_types = [];

View File

@@ -42,5 +42,6 @@ $l['sipit'] = "SCA (sipit)";
$l['preorder.interest'] = "Interessenbekundung"; $l['preorder.interest'] = "Interessenbekundung";
$l['preorder.provision'] = "Vorsorgeanschluss"; $l['preorder.provision'] = "Vorsorgeanschluss";
$l['preorder.order'] = "Vollanschluss"; $l['preorder.order'] = "Vollanschluss";
$l['preorder.reorder'] = "Nachbestellung";
$lang['de'] = $l; $lang['de'] = $l;

View File

@@ -0,0 +1,29 @@
#!/usr/bin/php
<?php
//require 'vendor/autoload.php';
require("../../config/config.php");
define('FRONKDB_SQLDEBUG',false);
error_reporting(E_ALL & ~(E_NOTICE | E_STRICT | E_DEPRECATED));
require_once(LIBDIR."/mvcfronk/mfRouter/mfRouter.php");
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseModel.php");
require_once(LIBDIR."/mvcfronk/mfBase/mfBaseController.php");
$me = new User(1);
foreach(ADBHausnummerModel::search(['netzgebiet_id' => [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");
}
}
}
}