Finished create/update AddressDB records
This commit is contained in:
@@ -70,4 +70,182 @@ class AddressDB {
|
||||
}
|
||||
}
|
||||
|
||||
/*
|
||||
* methods to create or update an Address from strings
|
||||
*/
|
||||
|
||||
public function createUpdateHausnummer($data) {
|
||||
$netzgebiet = null;
|
||||
$gemeinde = null;
|
||||
$ortschaft = null;
|
||||
$strasse = null;
|
||||
$plz = null;
|
||||
$hausnummer = null;
|
||||
|
||||
//var_dump($data);exit;
|
||||
|
||||
if(!array_key_exists("netzgebiet_id", $data)) {
|
||||
return false;
|
||||
}
|
||||
|
||||
foreach(["gemeinde", "ortschaft", "strasse", "plz"] as $field) {
|
||||
$classname = "ADB".ucfirst($field);
|
||||
$idfield = $field."_id";
|
||||
if(!array_key_exists($field."_id", $data)) continue;
|
||||
$$field = new $classname($data[$idfield]);
|
||||
if(!${$field}->id) {
|
||||
$$field = null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
$netzgebiet = new ADBNetzgebiet($data['netzgebiet_id']);
|
||||
if(!$netzgebiet->id) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Missing netzgebiet_id");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!$gemeinde) {
|
||||
// dont allow creating Gemeinden
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Missing Gemeinde");
|
||||
return false;
|
||||
}
|
||||
|
||||
if(!$ortschaft) {
|
||||
// search by kennziffer
|
||||
if(array_key_exists("ortschaft_kennziffer", $data) && $data['ortschaft_kennziffer']) {
|
||||
$ortschaft = ADBOrtschaftModel::getFirst(['kennziffer' => $data['ortschaft_kennziffer']]);
|
||||
}
|
||||
|
||||
if(!$ortschaft) {
|
||||
// search by name
|
||||
if(!array_key_exists("ortschaft", $data) || !$data['ortschaft']) return false;
|
||||
$ortschaft = ADBOrtschaftModel::getFirst(['gemeinde_id' => $gemeinde->id, 'name' => $data['ortschaft']]);
|
||||
}
|
||||
|
||||
if(!$ortschaft) {
|
||||
// create Ortschaft
|
||||
$ortschaft = ADBOrtschaftModel::create([
|
||||
'gemeinde_id' => $gemeinde->id,
|
||||
'kennziffer' => ($data['ortschaft_kennziffer']) ? $data['ortschaft_kennziffer'] : null,
|
||||
'name' => $data['ortschaft']
|
||||
]);
|
||||
if(!$ortschaft->save()) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Cannot save Ortschaft");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$strasse) {
|
||||
// search by kennziffer
|
||||
if(array_key_exists("strasse_kennziffer", $data) && $data['strasse_kennziffer']) {
|
||||
$strasse = ADBStrasseModel::getFirst(['kennziffer' => $data['strasse_kennziffer']]);
|
||||
}
|
||||
|
||||
if(!$strasse) {
|
||||
// search by name
|
||||
if(!array_key_exists("strasse", $data) || !$data['strasse']) return false;
|
||||
$strasse = ADBStrasseModel::getFirst(['gemeinde_id' => $gemeinde->id, 'name' => $data['strasse']]);
|
||||
}
|
||||
|
||||
if(!$strasse) {
|
||||
// create Strasse
|
||||
if(!array_key_exists("strasse", $data) || !$data['strasse']) return false;
|
||||
$strasse = ADBStrasseModel::create([
|
||||
'gemeinde_id' => $gemeinde->id,
|
||||
'kennziffer' => ($data['strasse_kennziffer']) ? $data['strasse_kennziffer'] : null,
|
||||
'name' => $data['strasse']
|
||||
]);
|
||||
if(!$strasse->save()) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Cannot save Strasse");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(!$plz) {
|
||||
// search by plz
|
||||
if(!array_key_exists("plz", $data) || !$data['plz']) return false;
|
||||
$plz = ADBPlzModel::getFirst(['gemeinde_id' => $gemeinde->id, 'plz' => $data['plz']]);
|
||||
if(!$plz) {
|
||||
// create PLZ
|
||||
$plz = ADBPlzModel::create([
|
||||
'gemeinde_id' => $gemeinde->id,
|
||||
'plz' => $data['plz'],
|
||||
'plzstring' => $data['plz']
|
||||
]);
|
||||
if(!$plz->save()) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Cannot save PLZ");
|
||||
return false;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
if(array_key_exists("hausnummer_id", $data)) {
|
||||
// if hausnummer_id is set but empty => fail
|
||||
if(!$data['hausnummer_id']) return false;
|
||||
$hausnummer = new ADBHausnummer($data['hausnummer_id']);
|
||||
if(!$hausnummer->id) {
|
||||
return false;
|
||||
}
|
||||
}
|
||||
|
||||
$me = new User();
|
||||
$me->loadMe();
|
||||
|
||||
// build hausnummer data
|
||||
//$hausnummer_data['oaid'] = (array_key_exists("oaid", $data) && $data['oaid']) ? $data['oaid'] : null;
|
||||
$hausnummer_data['adrcd'] = ($data['adrcd']) ? $data['adrcd'] : null;
|
||||
$hausnummer_data['extref'] = ($data['extref']) ? $data['extref'] : null;
|
||||
$hausnummer_data['netzgebiet_id'] = $netzgebiet->id;
|
||||
$hausnummer_data['ortschaft_id'] = $ortschaft->id;
|
||||
$hausnummer_data['plz_id'] = $plz->id;
|
||||
$hausnummer_data['strasse_id'] = $strasse->id;
|
||||
$hausnummer_data['hausnummer'] = $data['hausnummer'];
|
||||
$hausnummer_data['grund_nr'] = $data['grund_nr'];
|
||||
$hausnummer_data['gps_lat'] = ($data['gps_lat']) ? str_replace(",", ".", $data['gps_lat']) : null;
|
||||
$hausnummer_data['gps_long'] = ($data['gps_long']) ? str_replace(",", ".", $data['gps_long']) : null;
|
||||
$hausnummer_data['rollout'] = (trim($data['rollout'])) ? trim($data['rollout']) : null;
|
||||
$hausnummer_data['rollout_info'] = (trim($data['rollout_info'])) ? trim($data['rollout_info']) : null;
|
||||
$hausnummer_data['freigabe'] = json_encode($data['freigabe']);
|
||||
$hausnummer_data['manual_add'] = date('U');
|
||||
$hausnummer_data['manual_add_by'] = $me->id;
|
||||
$hausnummer_data['manual_add_info'] = "thetool user ".$me->username." via AddressDB";
|
||||
$hausnummer_data['manual_update'] = date('U');
|
||||
$hausnummer_data['manual_update_by'] = $me->id;
|
||||
$hausnummer_data['manual_update_info'] = "thetool user ".$me->username." via AddressDB";
|
||||
|
||||
//var_dump($hausnummer_data, $hausnummer);exit;
|
||||
|
||||
if(!$hausnummer) {
|
||||
// create hausnummer
|
||||
$hausnummer = ADBHausnummerModel::create($hausnummer_data);
|
||||
} else {
|
||||
// update hausnummer
|
||||
$hausnummer->update($hausnummer_data);
|
||||
}
|
||||
|
||||
$hausnummer_id = $hausnummer->save();
|
||||
if(!$hausnummer_id) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Cannot save Hausnummer");
|
||||
return false;
|
||||
}
|
||||
|
||||
// create OAID
|
||||
if(!$hausnummer->oaid) {
|
||||
$hausnummer->oaid = $hausnummer->getNewOAID();
|
||||
if(!$hausnummer->save()) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Cannot save Hausnummer OAID");
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
return $hausnummer_id;
|
||||
}
|
||||
|
||||
public function updateHausnummer($hausnummer_id, $data) {
|
||||
|
||||
}
|
||||
|
||||
}
|
||||
@@ -162,12 +162,169 @@ class AddressDBController extends mfBaseController {
|
||||
protected function addAction() {
|
||||
$this->layout()->setTemplate("AddressDB/Form");
|
||||
|
||||
if($this->me->is("Admin")) {
|
||||
$my_networks = NetworkModel::getAll();
|
||||
} else {
|
||||
$my_networks = $this->me->myNetworks(["netowner", "salespartner"]);
|
||||
}
|
||||
|
||||
$netzgebiet_ids = [];
|
||||
$my_adb_networks = [];
|
||||
foreach($my_networks as $network) {
|
||||
if($network->adb_netzgebiet_id && !in_array($network->adb_netzgebiet_id, $netzgebiet_ids)) {
|
||||
$netzgebiet_ids[] = $network->adb_netzgebiet_id;
|
||||
$my_adb_networks[$network->adb_netzgebiet_id] = new ADBNetzgebiet($network->adb_netzgebiet_id);
|
||||
}
|
||||
}
|
||||
$this->layout()->set("my_adb_networks", $my_adb_networks);
|
||||
|
||||
|
||||
$save_data = [];
|
||||
foreach($this->request->get() as $key => $value) {
|
||||
$save_data[$key] = $value;
|
||||
}
|
||||
//var_dump($save_data);exit;
|
||||
$this->layout()->set("save_data", $save_data);
|
||||
|
||||
}
|
||||
|
||||
protected function editAction() {
|
||||
|
||||
$id = $this->request->id;
|
||||
if(!is_numeric($id) || $id < 1) {
|
||||
$this->layout()->setFlash("Adresse nicht gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
$hausnummer = new ADBHausnummer($id);
|
||||
if(!$hausnummer->id) {
|
||||
$this->layout()->setFlash("Adresse nicht gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
/*if(!in_array($hausnummer->netzgebiet_id, $my_adb_networks)) {
|
||||
$this->layout()->setFlash("Adresse nicht gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}*/
|
||||
|
||||
$this->layout()->set("address", $hausnummer);
|
||||
|
||||
return $this->addAction();
|
||||
}
|
||||
|
||||
protected function saveAction() {
|
||||
$r = $this->request;
|
||||
$id = $r->id;
|
||||
//var_dump($r->get());exit;
|
||||
|
||||
$address_data = [];
|
||||
|
||||
if(is_numeric($id) && $id > 0) {
|
||||
$mode = "edit";
|
||||
$hausnummer = new ADBHausnummer($id);
|
||||
if(!$hausnummer->id) {
|
||||
$this->layout()->setFlash("Addresse nicht gefunden", "error");
|
||||
$this->redirect("AddressDB");
|
||||
}
|
||||
$address_data['hausnummer_id'] = $hausnummer->id;
|
||||
} else {
|
||||
$mode = "add";
|
||||
}
|
||||
|
||||
$required = ['netzgebiet_id','strasse','hausnummer','plz','ortschaft','gemeinde'];
|
||||
foreach(['adrcd','extref','netzgebiet_id','strasse','hausnummer','plz','ortschaft','gemeinde','grund_nr','gps_lat','gps_long','unit_count'] as $field) {
|
||||
if(in_array($field, $required)) {
|
||||
if(!trim($r->$field)) {
|
||||
$this->layout()->setFlash("'".ucfirst($field)."' darf nicht leer sein!", "error");
|
||||
return $this->addAction();
|
||||
//$this->redirect("AddressDB", $mode, ['id' => $id]);
|
||||
}
|
||||
}
|
||||
$address_data[$field] = $this->db()->escape(trim($r->$field));
|
||||
}
|
||||
|
||||
$gemeinde = ADBGemeindeModel::getFirst(['name' => $address_data['gemeinde']]);
|
||||
if(!$gemeinde->id) {
|
||||
$this->layout()->setFlash("Gemeinde nicht gefunden", "error");
|
||||
return $this->addAction();
|
||||
//$this->redirect("AddressDB", $mode, ['id' => $id]);
|
||||
}
|
||||
|
||||
$address_data['gemeinde_id'] = $gemeinde->id;
|
||||
|
||||
$freigabe = [];
|
||||
if(is_array($r->freigabe) && count($r->freigabe)) {
|
||||
if(in_array("interest", $r->freigabe)) {
|
||||
$freigabe[] = "interest";
|
||||
}
|
||||
if(in_array("provision", $r->freigabe)) {
|
||||
$freigabe[] = "provision";
|
||||
}
|
||||
if(in_array("order", $r->freigabe)) {
|
||||
$freigabe[] = "order";
|
||||
}
|
||||
if(in_array("reorder", $r->freigabe)) {
|
||||
$freigabe[] = "reorder";
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
$address_data['freigabe'] = $freigabe;
|
||||
|
||||
$rollout = null;
|
||||
$rollout_info = null;
|
||||
if(trim($r->rollout)) {
|
||||
$rollout = intval(trim($r->rollout));
|
||||
}
|
||||
if(trim($r->rollout_info)) {
|
||||
$rollout_info = trim($r->rollout_info);
|
||||
}
|
||||
if(!$rollout_info) {
|
||||
$rollout_info = "unscheduled";
|
||||
}
|
||||
|
||||
$address_data['rollout'] = $rollout;
|
||||
$address_data['rollout_info'] = $rollout_info;
|
||||
|
||||
//var_dump($address_data);exit;
|
||||
|
||||
$adb = new AddressDB();
|
||||
$hausnummer_id = $adb->createUpdateHausnummer($address_data);
|
||||
if(!$hausnummer_id) {
|
||||
$this->layout()->setFlash("Fehler beim Erstellen der Adresse!", "error");
|
||||
return $this->addAction();
|
||||
//$this->redirect("AddressDB");
|
||||
}
|
||||
|
||||
if($mode == "add") {
|
||||
$hausnummer = new ADBHausnummer($hausnummer_id);
|
||||
|
||||
/*
|
||||
* Wohneinheiten erstellen
|
||||
*/
|
||||
if($r->unit_count > 0) {
|
||||
for($i = 1; $i <= $r->unit_count; $i++) {
|
||||
$unit = ADBWohneinheitModel::create([
|
||||
'hausnummer_id' => $hausnummer_id,
|
||||
'num' => $i,
|
||||
]);
|
||||
$unit_id = $unit->save();
|
||||
if(!$unit_id) {
|
||||
$this->log->debug(__CLASS__."::".__METHOD__.": Cannot save Woneinheit");
|
||||
continue;
|
||||
}
|
||||
$unit->oaid = $unit->getNewOAID();
|
||||
$unit->save();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
$qs = http_build_query(['filter' => ['oaid' => $hausnummer->oaid]]);
|
||||
//var_dump($qs);exit;
|
||||
$this->layout()->setFlash("Adresse erfolgreich gespeichert", "success");
|
||||
$this->redirect("AddressDB", "Index", $qs);
|
||||
|
||||
}
|
||||
|
||||
protected function apiAction() {
|
||||
if(!$this->me->is(["Admin","netowner"])) {
|
||||
|
||||
Reference in New Issue
Block a user