Can now add to AddressDB via Preorder/Form
This commit is contained in:
@@ -47,18 +47,109 @@
|
||||
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="price">Adresse *</label>
|
||||
<label class="col-lg-2 col-form-label" for="adb_hausnummer_id">Adresse *</label>
|
||||
<div class="col-lg-10">
|
||||
<select class="form-control" name="adb_hausnummer_id" id="adb_hausnummer_id" />
|
||||
<?php if($preorder->adb_hausnummer_id): ?>
|
||||
<option value="<?=$preorder->adb_hausnummer_id?>" selected="selected"><?=$preorder->adb_hausnummer->plz->plz?> <?=$preorder->adb_hausnummer->strasse->ortschaft->name?>, <?=$preorder->adb_hausnummer->strasse->name?> <?=$preorder->adb_hausnummer->hausnummer?></option>
|
||||
<?php endif; ?>
|
||||
</select>
|
||||
|
||||
<div id="new-address-toggle" class="alert alert-info mt-1 mb-1 pb-1 pt-1 hidden">
|
||||
<h5><i class="icon fas fa-info-circle"></i> Adresse nicht gefunden?</h5>
|
||||
Vertippt? Richtiges Netzgebiet (<strong><?=$campaign->network->name?></strong>) ?<br /><br /><a href="#" onclick="toggleNewAddress()"><i class="far fa-plus-square"></i> Hier klickem um die Adresse neu anzulegen</a>
|
||||
|
||||
<div id="new-address" class="mt-0 mb-4 hidden">
|
||||
<hr />
|
||||
<div class="row" id="new-address-form">
|
||||
<div class="col-7 border">
|
||||
<div class="mb-3">
|
||||
<h4>Neue Adresse in Adress-Datenbank eintragen:</h4>
|
||||
<small class="text-danger">Alle mit * markierten Felder sind Pflichtfelder</small>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="street">Straße <span class="text-danger">*</span> / Hausnummer <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control basicAutoComplete" autocomplete="off" data-url="<?=self::getUrl('AddressDB','api')?>?do=findStreets&autocomplete=1" name="new_address_street" id="new_address_street" value="<?=$preorder->new_address_street?>" placeholder="Straße" />
|
||||
</div>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="new_address_housenumber" id="new_address_housenumber" value="<?=$preorder->new_address_housenumber?>" placeholder="Hausnummer" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="price">Wohneinheit *</label>
|
||||
<label class="col-lg-3 col-form-label" for="zip">PLZ <span class="text-danger">*</span> / Ort <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-2">
|
||||
<input type="text" class="form-control basicAutoComplete" autocomplete="off" data-url="<?=self::getUrl('AddressDB','api')?>?do=findZips&campaign_id=<?=$campaign->id?>&autocomplete=1" name="new_address_zip" id="new_address_zip" value="<?=$preorder->new_address_zip?>" placeholder="PLZ" />
|
||||
</div>
|
||||
<div class="col-lg-7">
|
||||
<input type="text" class="form-control basicAutoComplete" autocomplete="off" data-url="<?=self::getUrl('AddressDB','api')?>?do=findCities&campaign_id=<?=$campaign->id?>&autocomplete=1" name="new_address_city" id="new_address_city" value="<?=$preorder->new_address_city?>" placeholder="Ort" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="zip">Ortsteil <span class="text-danger">*</span></label>
|
||||
<div class="col-lg-9">
|
||||
<input type="text" class="form-control basicAutoComplete" autocomplete="off" data-url="<?=self::getUrl('AddressDB','api')?>?do=findDistricts&campaign_id=<?=$campaign->id?>&autocomplete=1" name="new_address_district" id="new_address_district" value="<?=$preorder->new_address_zip?>" placeholder="Ortsteil" />
|
||||
</div>
|
||||
|
||||
</div>
|
||||
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for="">Wohneinheit</label>
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-4 col-form-label text-right" for="">Block:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="new_address_block" id="new_address_block" value="<?=$preorder->block?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-4 col-form-label text-right" for="">Stiege:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="new_address_stiege" id="new_address_stiege" value="<?=$preorder->stiege?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-3 col-form-label" for=""></label>
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-4 col-form-label text-right" for="">Stock:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="new_address_stock" id="new_address_stock" value="<?=$preorder->stock?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-4">
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-4 col-form-label text-right" for="">Tür:</label>
|
||||
<div class="col-lg-6">
|
||||
<input type="text" class="form-control" name="new_address_tuer" id="new_address_tuer" value="<?=$preorder->tuer?>" />
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
<div class="form-group row" id="wohneinheit_row">
|
||||
<label class="col-lg-2 col-form-label" for="adb_wohneinheit_id">Wohneinheit *</label>
|
||||
<div class="col-lg-10">
|
||||
<select class="form-control" name="adb_wohneinheit_id" id="adb_wohneinheit_id" />
|
||||
<?php if($preorder->adb_wohneinheit_id): ?>
|
||||
@@ -228,34 +319,34 @@
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="company">Firma</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="company" id="company" value="<?=$preorder->company?>" />
|
||||
<input type="text" class="form-control" name="company" id="company" value="<?=$preorder->company?>" placeholder="Firma" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="uid">UID</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="uid" id="uid" value="<?=$preorder->uid?>" />
|
||||
<input type="text" class="form-control" name="uid" id="uid" value="<?=$preorder->uid?>" placeholder="UID" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="firstname">Vorname *</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="firstname" id="firstname" value="<?=$preorder->firstname?>" />
|
||||
<input type="text" class="form-control" name="firstname" id="firstname" value="<?=$preorder->firstname?>" placeholder="Vorname" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="lastname">Nachname *</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="lastname" id="lastname" value="<?=$preorder->lastname?>" />
|
||||
<input type="text" class="form-control" name="lastname" id="lastname" value="<?=$preorder->lastname?>" placeholder="Nachname" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="street">Straße / Hausnummer *</label>
|
||||
<div class="col-lg-8">
|
||||
<input type="text" class="form-control" name="street" id="street" value="<?=$preorder->street?>" />
|
||||
<div class="col-lg-5">
|
||||
<input type="text" class="form-control" name="street" id="street" value="<?=$preorder->street?>" placeholder="Straße" />
|
||||
</div>
|
||||
<div class="col-lg-2">
|
||||
<input type="text" class="form-control" name="housenumber" id="housenumber" value="<?=$preorder->housenumber?>" />
|
||||
<div class="col-lg-5">
|
||||
<input type="text" class="form-control" name="housenumber" id="housenumber" value="<?=$preorder->housenumber?>" placeholder="Hausnummer" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
@@ -296,22 +387,22 @@
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="zip">PLZ / Ort *</label>
|
||||
<div class="col-lg-3">
|
||||
<input type="text" class="form-control" name="zip" id="zip" value="<?=$preorder->zip?>" />
|
||||
<input type="text" class="form-control" name="zip" id="zip" value="<?=$preorder->zip?>" placeholder="PLZ" />
|
||||
</div>
|
||||
<div class="col-lg-7">
|
||||
<input type="text" class="form-control" name="city" id="city" value="<?=$preorder->city?>" />
|
||||
<input type="text" class="form-control" name="city" id="city" value="<?=$preorder->city?>" placeholder="Ort" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="phone">Telefon</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="phone" id="phone" value="<?=$preorder->phone?>" />
|
||||
<input type="text" class="form-control" name="phone" id="phone" value="<?=$preorder->phone?>" placeholder="Telefon" />
|
||||
</div>
|
||||
</div>
|
||||
<div class="form-group row">
|
||||
<label class="col-lg-2 col-form-label" for="email">Email</label>
|
||||
<div class="col-lg-10">
|
||||
<input type="text" class="form-control" name="email" id="email" value="<?=$preorder->email?>" />
|
||||
<input type="text" class="form-control" name="email" id="email" value="<?=$preorder->email?>" placeholder="Email" />
|
||||
</div>
|
||||
</div>
|
||||
|
||||
@@ -388,6 +479,24 @@
|
||||
<?php endif; ?>
|
||||
}
|
||||
|
||||
$('#new_address_street').autoComplete({minLength: 2}).keydown(preventEnter).change(updateCustomerAddressFromNewAddress).on("autocomplete.select", updateCustomerAddressFromNewAddress);
|
||||
$('#new_address_zip').autoComplete({minLength: 1}).keydown(preventEnter).change(updateCustomerAddressFromNewAddress).on("autocomplete.select", updateCustomerAddressFromNewAddress);
|
||||
$('#new_address_city').autoComplete({minLength: 2}).keydown(preventEnter).change(updateCustomerAddressFromNewAddress).on("autocomplete.select", updateCustomerAddressFromNewAddress);
|
||||
$('#new_address_district').autoComplete({minLength: 2}).keydown(preventEnter);
|
||||
$('#new_address_housenumber').keydown(preventEnter).change(updateCustomerAddressFromNewAddress).on("autocomplete.select", updateCustomerAddressFromNewAddress);
|
||||
$('#new_address_block').keydown(preventEnter);
|
||||
$('#new_address_stiege').keydown(preventEnter);
|
||||
$('#new_address_stock').keydown(preventEnter);
|
||||
$('#new_address_tuer').keydown(preventEnter);
|
||||
|
||||
|
||||
function preventEnter() {
|
||||
if(event.keyCode == 13) {
|
||||
event.preventDefault();
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$("#product_id").select2({
|
||||
allowClear: true,
|
||||
@@ -421,7 +530,15 @@
|
||||
dataType: 'json'
|
||||
},
|
||||
minimumInputLength: 3,
|
||||
placeholder: "Suche nach Straße, Hausnummer, Ort"
|
||||
placeholder: "Suche nach Straße, Hausnummer, Ort",
|
||||
allowClear: true
|
||||
});
|
||||
|
||||
$('#adb_hausnummer_id').on('select2:close', function(e) {
|
||||
if(!$('#adb_hausnummer_id').val()) {
|
||||
$('#new-address-toggle').show();
|
||||
}
|
||||
|
||||
});
|
||||
|
||||
|
||||
@@ -429,6 +546,28 @@
|
||||
var hausnummer_id = $('#adb_hausnummer_id').val();
|
||||
if(!hausnummer_id) return;
|
||||
|
||||
$('#new-address-toggle').hide();
|
||||
$('#new-address').hide();
|
||||
|
||||
$.get('<?=self::getUrl("AddressDB", "Api")?>',
|
||||
{
|
||||
do: "getAddressByHousenumber",
|
||||
hausnummer_id: hausnummer_id
|
||||
},
|
||||
function(success) {
|
||||
if(success.status != "OK") {
|
||||
return;
|
||||
}
|
||||
var address = success.result;
|
||||
console.log(address);
|
||||
$('#new_address_street').val(address.strasse);
|
||||
$('#new_address_housenumber').val(address.hausnummer);
|
||||
$('#new_address_zip').val(address.plz);
|
||||
$('#new_address_city').val(address.ort);
|
||||
$('#new_address_district').val(address.ortschaft);
|
||||
},
|
||||
'json');
|
||||
|
||||
|
||||
$.get('<?=self::getUrl("AddressDB", "Api")?>',
|
||||
{
|
||||
@@ -487,6 +626,14 @@
|
||||
"json");
|
||||
});
|
||||
|
||||
function updateCustomerAddressFromNewAddress() {
|
||||
$('input[name=street]').val($('#new_address_street').val());
|
||||
$('input[name=housenumber]').val($('#new_address_housenumber').val());
|
||||
$('input[name=zip]').val($('#new_address_zip').val());
|
||||
$('input[name=city]').val($('#new_address_city').val());
|
||||
}
|
||||
|
||||
|
||||
$('#adb_wohneinheit_id').change(function() {
|
||||
val = $('#adb_wohneinheit_id').val();
|
||||
|
||||
@@ -611,6 +758,12 @@
|
||||
'json');
|
||||
|
||||
}
|
||||
|
||||
function toggleNewAddress() {
|
||||
$('#new-address').toggle();
|
||||
$('#wohneinheit_row').toggle();
|
||||
event.preventDefault();
|
||||
}
|
||||
</script>
|
||||
|
||||
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>
|
||||
@@ -40,7 +40,16 @@ class ADBGemeindeModel {
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Gemeinde", "*", "$where ORDER BY name,code,kennziffer LIMIT 1");
|
||||
$sql = "SELECT Gemeinde.* FROM Gemeinde
|
||||
LEFT JOIN Plz ON (Plz.gemeinde_id = Gemeinde.id)
|
||||
LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Gemeinde.id)
|
||||
LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id)
|
||||
LEFT JOIN Ortschaft ON (Ortschaft.gemeinde_id = Gemeinde.id)
|
||||
WHERE $where
|
||||
GROUP BY Gemeinde.id
|
||||
ORDER BY name,code,kennziffer
|
||||
LIMIT 1";
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new ADBGemeinde($data);
|
||||
|
||||
@@ -1,6 +1,7 @@
|
||||
<?php
|
||||
|
||||
class ADBHausnummerModel {
|
||||
public $oaid;
|
||||
public $adrcd;
|
||||
public $netzgebiet_id;
|
||||
public $extref;
|
||||
@@ -9,14 +10,17 @@ class ADBHausnummerModel {
|
||||
public $strasse_id;
|
||||
public $hausnummer;
|
||||
public $zusatz;
|
||||
public $grund_nr;
|
||||
public $unit_count;
|
||||
public $gps_lat;
|
||||
public $gps_long;
|
||||
public $rollout;
|
||||
public $rollout_info;
|
||||
public $freigabe;
|
||||
public $manual_add;
|
||||
public $manual_add_by;
|
||||
public $manual_add_info;
|
||||
|
||||
public $create_by = null;
|
||||
public $edit_by = null;
|
||||
public $create = null;
|
||||
public $edit = null;
|
||||
|
||||
@@ -153,6 +157,8 @@ class ADBHausnummerModel {
|
||||
$where .= " AND Hausnummer.netzgebiet_id=$netzgebiet_id";
|
||||
} elseif(is_array($netzgebiet_id) && count($netzgebiet_id)) {
|
||||
$where .= " AND Hausnummer.netzgebiet_id IN (". implode(",", $netzgebiet_id).")";
|
||||
} elseif($netzgebiet_id === null) {
|
||||
$where .= " AND Hausnummer.netzgebiet_id IS NULL";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -41,7 +41,16 @@ class ADBOrtschaftModel {
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Ortschaft", "*", "$where ORDER BY name,kennziffer LIMIT 1");
|
||||
$sql = "SELECT Ortschaft.* FROM Ortschaft
|
||||
LEFT JOIN Gemeinde ON (Ortschaft.gemeinde_id = Gemeinde.id)
|
||||
LEFT JOIN Plz ON (Plz.gemeinde_id = Gemeinde.id)
|
||||
LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Gemeinde.id)
|
||||
LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id)
|
||||
WHERE $where
|
||||
ORDER BY gemeinde_id,Ortschaft.name,Ortschaft.kennziffer
|
||||
LIMIT 1";
|
||||
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new ADBOrtschaft($data);
|
||||
|
||||
@@ -40,7 +40,16 @@ class ADBPlzModel {
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Plz", "*", "$where ORDER BY plz LIMIT 1");
|
||||
$sql = "SELECT Plz.* FROM Plz
|
||||
LEFT JOIN Gemeinde ON (Gemeinde.id = Plz.gemeinde_id)
|
||||
LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Plz.gemeinde_id)
|
||||
LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id)
|
||||
WHERE $where
|
||||
GROUP BY Plz.id
|
||||
ORDER BY plz
|
||||
LIMIT 1";
|
||||
mfLoghandler::singleton()->debug($sql);
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new ADBPlz($data);
|
||||
|
||||
@@ -41,7 +41,17 @@ class ADBStrasseModel {
|
||||
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
|
||||
$where = self::getSqlFilter($filter);
|
||||
$res = $db->select("Strasse", "*", "$where ORDER BY gemeinde_id,kennziffer,name LIMIT 1");
|
||||
$sql = "SELECT Strasse.* FROM Strasse
|
||||
LEFT JOIN Hausnummer ON (Hausnummer.strasse_id = Strasse.id)
|
||||
LEFT JOIN Plz ON (Plz.id = Hausnummer.plz_id)
|
||||
LEFT JOIN Gemeinde ON (Gemeinde.id = Strasse.gemeinde_id)
|
||||
LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Strasse.gemeinde_id)
|
||||
LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id)
|
||||
WHERE $where
|
||||
GROUP BY Strasse.id
|
||||
ORDER BY gemeinde_id,name,kennziffer
|
||||
LIMIT 1";
|
||||
$res = $db->query($sql);
|
||||
if($db->num_rows($res)) {
|
||||
$data = $db->fetch_object($res);
|
||||
$item = new ADBStrasse($data);
|
||||
|
||||
@@ -28,12 +28,24 @@ class AddressDBController extends mfBaseController {
|
||||
case "getFilteredBuildings":
|
||||
$return = $this->getFilteredBuildingsApi();
|
||||
break;
|
||||
case "getAddressByHousenumber":
|
||||
$return = $this->getAddressByHousenumberApi();
|
||||
break;
|
||||
case "getUnits":
|
||||
$return = $this->getUnitsApi();
|
||||
break;
|
||||
case "findStreets":
|
||||
$return = $this->findStreetsApi();
|
||||
break;
|
||||
case "findDistricts":
|
||||
$return = $this->findDistrictsApi();
|
||||
break;
|
||||
case "findCities":
|
||||
$return = $this->findCitiesApi();
|
||||
break;
|
||||
case "findZips":
|
||||
$return = $this->findZipsApi();
|
||||
break;
|
||||
case 'findBuildings':
|
||||
$return = $this->findBuildingsApi();
|
||||
break;
|
||||
@@ -189,15 +201,109 @@ class AddressDBController extends mfBaseController {
|
||||
return ['units' => $results];
|
||||
}
|
||||
|
||||
private function findCitiesApi() {
|
||||
$cities = [];
|
||||
$search = $this->request->search;
|
||||
private function getAddressByHousenumberApi() {
|
||||
$zips = [];
|
||||
$hausnummer_id = trim($this->request->hausnummer_id);
|
||||
|
||||
$ort_ids = [];
|
||||
if(!is_numeric($hausnummer_id) || $hausnummer_id < 1) {
|
||||
return false;
|
||||
}
|
||||
|
||||
$hausnummer = new ADBHausnummer($hausnummer_id);
|
||||
|
||||
$result = [
|
||||
'hausnummer_id' => $hausnummer->id,
|
||||
'strasse' => $hausnummer->strasse->name,
|
||||
'hausnummer' => $hausnummer->hausnummer,
|
||||
'plz' => $hausnummer->plz->plz,
|
||||
'ort' => $hausnummer->strasse->gemeinde->name,
|
||||
'ortschaft' => $hausnummer->ortschaft->name
|
||||
];
|
||||
|
||||
return $result;
|
||||
}
|
||||
|
||||
private function findStreetsApi() {
|
||||
$streets = [];
|
||||
$search = trim($this->request->q);
|
||||
|
||||
foreach(ADBStrasseModel::search(['name%' => $search]) as $street) {
|
||||
if(!in_array($street->name, $streets)) {
|
||||
$streets[] = $street->name;
|
||||
}
|
||||
}
|
||||
|
||||
$this->returnJson($streets);
|
||||
}
|
||||
|
||||
private function findZipsApi() {
|
||||
$zips = [];
|
||||
$search = trim($this->request->q);
|
||||
$campaign_id = trim($this->request->campaign_id);
|
||||
|
||||
$plz_search = [];
|
||||
|
||||
if($campaign_id) {
|
||||
$campaign = new Preordercampaign($campaign_id);
|
||||
if(!$campaign->id) {
|
||||
header("Content-Type: application/json");
|
||||
echo json_encode(["results" => []]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$scluster_ids = [];
|
||||
foreach($campaign->salesclusters as $scluster) {
|
||||
$scluster_ids[] = $scluster->id;
|
||||
}
|
||||
$plz_search['netzgebiet_id'] = $scluster_ids;
|
||||
}
|
||||
|
||||
$plz_search['plzstring%'] = $search;
|
||||
|
||||
|
||||
foreach(ADBPlzModel::search($plz_search) as $zip) {
|
||||
if(!in_array($zip->plz, $zips)) {
|
||||
$zips[] = $zip->plz;
|
||||
}
|
||||
}
|
||||
|
||||
$this->returnJson($zips);
|
||||
}
|
||||
|
||||
private function findDistrictsApi() {
|
||||
$districts = [];
|
||||
$search = trim($this->request->q);
|
||||
$autocomplete = $this->request->autocomplete;
|
||||
$campaign_id = trim($this->request->campaign_id);
|
||||
|
||||
$district_search = [];
|
||||
|
||||
if($campaign_id) {
|
||||
$campaign = new Preordercampaign($campaign_id);
|
||||
if(!$campaign->id) {
|
||||
header("Content-Type: application/json");
|
||||
echo json_encode(["results" => []]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$scluster_ids = [];
|
||||
foreach($campaign->salesclusters as $scluster) {
|
||||
$scluster_ids[] = $scluster->id;
|
||||
}
|
||||
$district_search['netzgebiet_id'] = $scluster_ids;
|
||||
}
|
||||
|
||||
$district_search['name%'] = "%".$search;
|
||||
|
||||
foreach(ADBOrtschaftModel::search($district_search) as $district) {
|
||||
if(!in_array($district->name, $districts)) {
|
||||
$districts[] = $district->name;
|
||||
}
|
||||
}
|
||||
/*
|
||||
if(is_numeric($search)) {
|
||||
$adb = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
|
||||
$sql = "SELECT ortschaft_id from view_wohneinheit WHERE plz like '%$search%' GROUP BY ortschaft_id";
|
||||
$sql = "SELECT ortschaft_id from view_wohneinheit WHERE ortschaft like '%$search%' GROUP BY ortschaft_id";
|
||||
$res = $adb->query($sql);
|
||||
|
||||
if($adb->num_rows($res)) {
|
||||
@@ -215,6 +321,15 @@ class AddressDBController extends mfBaseController {
|
||||
$results = ADBOrtschaftModel::search(['name%' => $search]);
|
||||
}
|
||||
|
||||
if($autocomplete) {
|
||||
foreach($results as $city) {
|
||||
if(!in_array($city->name, $cities)) {
|
||||
$cities[] = $city->name;
|
||||
}
|
||||
}
|
||||
$this->returnJson($cities);
|
||||
}
|
||||
|
||||
foreach($results as $city) {
|
||||
$gemeinde = new ADBGemeinde($city->gemeinde_id);
|
||||
|
||||
@@ -226,8 +341,43 @@ class AddressDBController extends mfBaseController {
|
||||
$data['name'] = $city->name;
|
||||
$cities[] = $data;
|
||||
}
|
||||
*/
|
||||
$this->returnJson($districts);
|
||||
//return ['cities' => $cities];
|
||||
}
|
||||
|
||||
private function findCitiesApi() {
|
||||
$cities = [];
|
||||
$search = $this->request->q;
|
||||
//$autocomplete = $this->request->autocomplete;
|
||||
$campaign_id = trim($this->request->campaign_id);
|
||||
|
||||
$city_search = [];
|
||||
|
||||
if($campaign_id) {
|
||||
$campaign = new Preordercampaign($campaign_id);
|
||||
if(!$campaign->id) {
|
||||
header("Content-Type: application/json");
|
||||
echo json_encode(["results" => []]);
|
||||
exit;
|
||||
}
|
||||
|
||||
$scluster_ids = [];
|
||||
foreach($campaign->salesclusters as $scluster) {
|
||||
$scluster_ids[] = $scluster->id;
|
||||
}
|
||||
$city_search['netzgebiet_id'] = $scluster_ids;
|
||||
}
|
||||
|
||||
$city_search['name%'] = "%".$search;
|
||||
|
||||
foreach(ADBGemeindeModel::search($city_search) as $city) {
|
||||
if(!in_array($city->name, $cities)) {
|
||||
$cities[] = $city->name;
|
||||
}
|
||||
}
|
||||
$this->returnJson($cities);
|
||||
|
||||
return ['cities' => $cities];
|
||||
}
|
||||
|
||||
private function getFilteredBuildingsApi() {
|
||||
|
||||
@@ -182,7 +182,7 @@ class PreorderController extends mfBaseController {
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
//var_dump($r);
|
||||
//var_dump($r);exit;
|
||||
|
||||
/*
|
||||
* add or edit
|
||||
@@ -302,15 +302,172 @@ class PreorderController extends mfBaseController {
|
||||
$preorder->update($data);
|
||||
}
|
||||
|
||||
/*
|
||||
* validation
|
||||
*/
|
||||
|
||||
$campaign = new Preordercampaign($preorder->preordercampaign_id);
|
||||
if(!$campaign->id) {
|
||||
$this->layout()->setFlash("Keine Kampagne ausgewählt!", "error");
|
||||
$this->redirect("Preordercampaign");
|
||||
}
|
||||
//var_dump($preorder, $r);exit;
|
||||
// handle new address creation
|
||||
if(!$preorder->adb_hausnummer_id) {
|
||||
// check if new address was submitted
|
||||
$this->log->debug("check if new address was submitted");
|
||||
if($r->new_address_street && $r->new_address_housenumber && $r->new_address_zip && $r->new_address_city && $r->new_address_district) {
|
||||
$city_search = trim($r->new_address_city);
|
||||
$district_search = trim($r->new_address_district);
|
||||
$zip_search = trim($r->new_address_zip);
|
||||
$street_search = trim($r->new_address_street);
|
||||
$housenumber_search = trim($r->new_address_housenumber);
|
||||
|
||||
$block = trim($r->new_address_block);
|
||||
$stiege = trim($r->new_address_stiege);
|
||||
$stock = trim($r->new_address_stock);
|
||||
$tuer = trim($r->new_address_tuer);
|
||||
|
||||
$preorder->new_address_city = $city_search;
|
||||
$preorder->new_address_district = $district_search;
|
||||
$preorder->new_address_zip = $zip_search;
|
||||
$preorder->new_address_street = $street_search;
|
||||
$preorder->new_address_housenumber = $housenumber_search;
|
||||
|
||||
|
||||
$netzgebiet_ids = [];
|
||||
foreach($campaign->salesclusters as $scluster) {
|
||||
$netzgebiet_ids[] = $scluster->id;
|
||||
}
|
||||
$netzgebiet_id = $netzgebiet_ids[0];
|
||||
if(!$netzgebiet_id) {
|
||||
$this->layout()->setFlash("Kann Adresse nicht updaten: Kampagne hat kein Netzgebiet", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
$netzgebiet = new ADBNetzgebiet($netzgebiet_id);
|
||||
if(!$netzgebiet->id) {
|
||||
$this->layout()->setFlash("Neztgebiet nicht gefunden", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
$city = ADBGemeindeModel::getFirst(['name' => $city_search, 'netzgebiet_id' => $netzgebiet_id]);
|
||||
if(!$city) {
|
||||
$this->layout()->setFlash("Gemeinde nicht Adress-DB gefunden", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
$district = ADBOrtschaftModel::getFirst(['name' => $district_search, 'netzgebiet_id' => $netzgebiet_id]);
|
||||
if(!$district) {
|
||||
$this->layout()->setFlash("Ortsteil nicht Adress-DB gefunden", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
$zip = ADBPlzModel::getFirst(['plz' => $zip_search, 'gemeinde_id' => $city->id]);
|
||||
if(!$zip) {
|
||||
$this->layout()->setFlash("PLZ nicht Adress-DB gefunden", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
$street = ADBStrasseModel::getFirst(['name' => $street_search, 'ortschaft_id' => $district->id, 'gemeinde_id' => $city->id]);
|
||||
if(!$street) {
|
||||
$this->log->debug("create street");
|
||||
$street = ADBStrasseModel::create([
|
||||
'ortschaft_id' => $district->id,
|
||||
'gemeinde_id' => $city->id,
|
||||
'name' => $street_search
|
||||
]);
|
||||
|
||||
if(!$street->save()) {
|
||||
$this->layout()->setFlash("Fehler beim Speichern der neuen Straße", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$this->log->debug("search hausnummer");
|
||||
$hausnummer = ADBHausnummerModel::getFirst(['netzgebiet_id' => $netzgebiet_ids, 'ortschaft_id' => $district_search, 'gemeinde_id' => $city->id, 'plz_id' => $zip->id, 'strasse_id' => $street->id, 'hausnummer' => $housenumber_search]);
|
||||
if($hausnummer) {
|
||||
// hausnummer gibts scho!
|
||||
$this->layout()->setFlash("Adresse war schon vorhanden!", "warn");
|
||||
$preorder->adb_hausnummer_id = $hausnummer->id;
|
||||
} else {
|
||||
// try with empty netzgebiet
|
||||
$this->log->debug("search hausnummer mit empty netzgebiet");
|
||||
$hausnummer = ADBHausnummerModel::getFirst(['netzgebiet_id' => null, 'ortschaft_id' => $district_search, 'gemeinde_id' => $city->id, 'plz_id' => $zip->id, 'strasse_id' => $street->id, 'hausnummer' => $housenumber_search]);
|
||||
if($hausnummer) {
|
||||
// Hausnummer ohne Netzgebiet gefunden -> update netzgebiet_id
|
||||
$this->log->debug("hausnummer id: updated netzgebiet from NULL to ".$netzgebiet_ids);
|
||||
$hausnummer->netzgebiet_id = $netzgebiet_id;
|
||||
$hausnummer->save();
|
||||
$preorder->adb_hausnummer_id = $hausnummer->id;
|
||||
} else {
|
||||
// try with any netzgebiet
|
||||
$this->log->debug("search hausnummer with ohne netzgebiet");
|
||||
$hausnummer = ADBHausnummerModel::getFirst(['ortschaft_id' => $district_search, 'gemeinde_id' => $city->id, 'plz_id' => $zip->id, 'strasse_id' => $street->id, 'hausnummer' => $housenumber_search]);
|
||||
if($hausnummer) {
|
||||
$this->log->debug("Hausnummer ".$hausnummer->id." in Netzgebiet (".implode(",", $netzgebiet_ids)." gesucht, aber in ".$hausnummer->netzgebiet_id)." gefunden";
|
||||
$this->layout()->setFlash("Neue Adresse ist bereits im Netzgebiet ".$hausnummer->netzgebiet->name." vorhanden", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
} else {
|
||||
// hausnummer anlegen
|
||||
$hausnummer = ADBHausnummerModel::create([
|
||||
'netzgebiet_id' => $netzgebiet_id,
|
||||
'ortschaft_id' => $district->id,
|
||||
'plz_id' => $zip->id,
|
||||
'strasse_id' => $street->id,
|
||||
'hausnummer' => $housenumber_search,
|
||||
'freigabe' => $netzgebiet->freigabe,
|
||||
'manual_add' => date('U'),
|
||||
'manual_add_by' => $this->me->id,
|
||||
'manual_add_info' => "thetool user ".$this->me->username
|
||||
]);
|
||||
|
||||
if(!$hausnummer->save()) {
|
||||
$this->layout()->setFlash("Fehler beim Speichern der neuen Adresse", "error");
|
||||
$this->layout()->set("preorder", $preorder);
|
||||
$this->layout()->set("campaign", $campaign);
|
||||
return $this->addAction();
|
||||
}
|
||||
$preorder->adb_hausnummer_id = $hausnummer->id;
|
||||
$preorder->address_created = date('U');
|
||||
$preorder->address_created_by = $this->me->id;
|
||||
$preorder->adb_wohneinheit_id = null;
|
||||
|
||||
// create wohneinheit
|
||||
$wohneinheit = ADBWohneinheitModel::create([
|
||||
'hausnummer_id' => $hausnummer->id,
|
||||
'num' => 1,
|
||||
'block' => ($block) ? $block : null,
|
||||
'stiege' => ($stiege) ? $stiege : null,
|
||||
'stock' => ($stock) ? $stock : null,
|
||||
'tuer' => ($tuer) ? $tuer : null
|
||||
]);
|
||||
if($wohneinheit->save()) {
|
||||
$preorder->adb_wohneinheit_id = $wohneinheit->id;
|
||||
} else {
|
||||
$this->layout()->setFlash("Konnte Wohneinheit nicht speichern", "warn");
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* validation
|
||||
*/
|
||||
|
||||
if(!array_key_exists($data['type'], $campaign->types)) {
|
||||
$this->layout()->setFlash("Bitte Vorbestelltyp auswählen!", "error");
|
||||
@@ -362,6 +519,12 @@ class PreorderController extends mfBaseController {
|
||||
|
||||
//var_dump($preorder);exit;
|
||||
|
||||
// unset temporary properties
|
||||
unset($preorder->new_address_city);
|
||||
unset($preorder->new_address_district);
|
||||
unset($preorder->new_address_zip);
|
||||
unset($preorder->new_address_street);
|
||||
unset($preorder->new_address_housenumber);
|
||||
|
||||
/*
|
||||
* generate ucode and save
|
||||
@@ -375,7 +538,7 @@ class PreorderController extends mfBaseController {
|
||||
}
|
||||
|
||||
|
||||
$qs = ['filter' => ['campaign_id' => $preorder->preordercampaign_id]];
|
||||
$qs = ['filter' => ['preordercampaign_id' => $preorder->preordercampaign_id, 'ucode' => $preorder->ucode]];
|
||||
$qs = http_build_query($qs);
|
||||
|
||||
$this->layout()->setFlash("Vorbestellung erfolgreich gespeichert!", "success");
|
||||
|
||||
Reference in New Issue
Block a user