Added hausnummer_add_zusatz flag to campaigns

This commit is contained in:
Frank Schubert
2022-11-29 14:14:45 +01:00
parent d209d4d7fe
commit b9db22d0b7
5 changed files with 59 additions and 5 deletions

View File

@@ -145,7 +145,7 @@
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="adb_netzgebiet_ids">Ortsteil ist Ort</label>
<label class="col-lg-2 col-form-label" for="district_is_city">Ortsteil ist Ort</label>
<div class="col-lg-10">
<select class="form-control" name="district_is_city" id="district_is_city">
<option value="0" <?=(!$campaign->district_is_city) ? "selected='selected'" : ""?>>Nein</option>
@@ -155,6 +155,16 @@
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="hausnummer_add_zusatz">Adresszusatz an Hausnummer anhängen</label>
<div class="col-lg-10">
<select class="form-control" name="hausnummer_add_zusatz" id="hausnummer_add_zusatz">
<option value="0" <?=(!$campaign->hausnummer_add_zusatz) ? "selected='selected'" : ""?>>Nein</option>
<option value="1" <?=($campaign->hausnummer_add_zusatz) ? "selected='selected'" : ""?>>Ja</option>
</select>
</div>
</div>
</div>
</div>

View File

@@ -6,6 +6,7 @@ class AddressdbApicontroller extends mfBaseApicontroller {
private $campaigns_by_scluster = [];
private $allowed_preordertypes = [];
private $district_is_city = false;
private $hausnummer_add_zusatz = false;
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -50,6 +51,10 @@ class AddressdbApicontroller extends mfBaseApicontroller {
if($campaign->district_is_city == 1) {
$this->district_is_city = true;
}
if($campaign->hausnummer_add_zusatz == 1) {
$this->hausnummer_add_zusatz = true;
}
}
foreach(PreordercampaignOriginhostnameModel::search(['preordercampaign_id' => $campaign->id]) as $origin) {
@@ -347,12 +352,20 @@ class AddressdbApicontroller extends mfBaseApicontroller {
}
}
$housenumber = $data->hausnummer;
if($this->hausnummer_add_zusatz) {
if($data->zusatz) {
$housenumber .= " (".$data->zusatz.")";
}
}
$addresses[] = [
'zip' => $data->plz,
'city' => ($this->district_is_city) ? $data->ortschaft : $data->gemeinde,
'district' => $data->ortschaft,
'street' => $data->strasse,
'housenumber' => $data->hausnummer,
'housenumber' => $housenumber,
'block' => $data->block,
'stock' => $data->stock,
'stiege' => $data->stiege,

View File

@@ -11,6 +11,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
private $allowed_preordertypes = [];
private $district_is_city = false;
private $hausnummer_add_zusatz = false;
protected function init() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
@@ -46,6 +47,11 @@ class PreorderApicontroller extends mfBaseApicontroller {
if($campaign->district_is_city == 1) {
$this->district_is_city = true;
}
if($campaign->hausnummer_add_zusatz == 1) {
$this->hausnummer_add_zusatz = true;
}
}
@@ -131,12 +137,24 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
}
$zusatz = false;
if($this->hausnummer_add_zusatz) {
$m = [];
if(preg_match('/^(.*) \((.+)\)$/', trim($address_search['hausnummer']), $m)) {
$address_search['hausnummer'] = $this->db()->escape($m[1]);
$zusatz = $m[2];
}
}
$unit_search = [];
foreach(['block','stiege','stock','tuer'] as $key) {
if(property_exists($this->post['address'], $key) && trim($this->post['address']->$key)) {
$unit_search[$key] = trim($this->post['address']->$key);
}
}
if($zusatz) {
$unit_search['zusatz'] = $zusatz;
}
/*
* check customer
@@ -173,13 +191,15 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$address = $this->db()->fetch_object($res);
//var_dump($address);exit;
/*
* search wohneinheit
*/
$where = "1=1 ";
$unit = false;
if(count($unit_search)) {
//var_dump($unit_search);exit;
foreach($unit_search as $field => $value) {
if($field == "stock" || $field == "stiege") continue; // only check for block and tuer
$where .= " AND `$field` = '$value'";
@@ -191,6 +211,7 @@ class PreorderApicontroller extends mfBaseApicontroller {
}
$sql = "SELECT * FROM view_wohneinheit WHERE $where AND hausnummer_id=".$address->hausnummer_id;
$this->log->debug($sql);
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
$unit = $this->db()->fetch_object($res);
@@ -200,14 +221,19 @@ class PreorderApicontroller extends mfBaseApicontroller {
} else {
// if all unit values are empty try to find the unit with all empty values
// failure is not an error, but must be checked by a human at some point
$where = "hausnummer_id=".$address->hausnummer_id." AND (block = '' OR block IS NULL) AND (stiege = '' OR stiege IS NULL) AND (stock = '' OR stock IS NULL) AND (tuer = '' OR tuer IS NULL)";
if($zusatz) {
$where .= " AND zusatz='$zusatz'";
} else {
$where .= " AND (zusatz = '' OR zusatz IS NULL)";
}
// filter salesclusters
if(count($this->filter_salescluster_ids)) {
$where .= " AND netzgebiet_id IN (".implode(',', $this->filter_salescluster_ids).")";
}
$sql = "SELECT * FROM view_wohneinheit WHERE $where";
$this->log->debug($sql);
$res = $this->db()->query($sql);
if($this->db()->num_rows($res)) {
$unit = $this->db()->fetch_object($res);

View File

@@ -243,6 +243,11 @@ class PreordercampaignController extends mfBaseController {
$data['district_is_city'] = 0;
}
if($r->hausnummer_add_zusatz == 1) {
$data['hausnummer_add_zusatz'] = 1;
} else {
$data['hausnummer_add_zusatz'] = 0;
}
$data['edit_by'] = $this->me->id;

View File

@@ -12,7 +12,7 @@ class PreordercampaignModel {
public $to;
public $required_preorder_fields;
public $district_is_city;
public $hausnummer_add_zusatz;
public $note;
public $create_by;