Can now add to AddressDB via Preorder/Form
This commit is contained in:
@@ -182,7 +182,7 @@ class PreorderController extends mfBaseController {
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
//var_dump($r);
|
||||
//var_dump($r);exit;
|
||||
|
||||
/*
|
||||
* add or edit
|
||||
@@ -301,16 +301,173 @@ class PreorderController extends mfBaseController {
|
||||
} else {
|
||||
$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