Finished create/update AddressDB records

This commit is contained in:
Frank Schubert
2023-01-16 14:11:01 +01:00
parent 25236493ee
commit 1cec6cec15
8 changed files with 558 additions and 28 deletions

View File

@@ -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"])) {