Merge branch 'fronkdev' into 'master'

Create Workorder button in Preorder/Index now always visible for admins

See merge request fronk/thetool!751
This commit is contained in:
Frank Schubert
2024-11-19 14:29:34 +00:00
8 changed files with 185 additions and 10 deletions

View File

@@ -430,7 +430,7 @@
</table>
<?php endforeach; ?>
<?php elseif($preorder->adb_wohneinheit_id && $preorder->type == "legacytransfer"): ?>
<?php elseif($preorder->adb_wohneinheit_id && $me->is("Admin")): ?>
<button type="button" class="btn btn-outline-primary create-workorder" onclick="createWorkorder(<?=$preorder->id?>)"><i class="fas fa-fw fa-plus"></i> <i class="fas fa-r"></i><i class="fas fa-fw fa-gears"></i> Wokorder erstellen</button>
<?php endif; ?>

View File

@@ -46,8 +46,15 @@ class ADBHausnummerStatusflagValue extends mfBaseModel {
if($name == "flag") {
if(!$this->flag_id) return null;
$flag = new ADBStatusflag($this->flag_id);
if($flag->id) {
$flag = mfValuecache::singleton()->get("mfObjectmodel-ADBStatusflag-".$this->flag_id);
if(!$flag) {
$flag = new ADBStatusflag($this->flag_id);
if ($flag->id) {
$this->flag = $flag;
mfValuecache::singleton()->set("mfObjectmodel-ADBStatusflag-" . $flag->id, $flag);
}
} else {
$this->flag = $flag;
}
return $this->flag;

View File

@@ -6,4 +6,17 @@ class ADBStatus extends mfBaseModel {
$this->db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$this->table = "Status";
}
public function getApiArray() {
if(!$this->id) {
return false;
}
$a = [];
$a['code'] = (int)$this->code;
$a['text'] = $this->name;
$a['flags'] = [];
return $a;
}
}

View File

@@ -839,9 +839,9 @@ class AddressdbApicontroller extends mfBaseApicontroller {
}
protected function exportAddresses() {
if($this->me->username != 'r.eschner@rmlinfrastruktur.at') {
return mfResponse::Forbidden();
}
//if($this->me->username != 'r.eschner@rmlinfrastruktur.at') {
// return mfResponse::Forbidden();
//}
if($this->me->is("Admin")) {
$my_networks = NetworkModel::getAll();

View File

@@ -0,0 +1,150 @@
<?php
class PreorderconstructionApicontroller extends mfBaseApicontroller {
public function init() {
$this->addRoute("/preorderconstruction/address", "getAddresses", "GET");
$this->addRoute("/preorderconstruction/preorder", "getPreorders", "GET");
}
protected function authenticated() {
if($this->me->username != "fronk") {
return \mfResponse::Forbidden();
}
}
protected function getAddresses() {
$db = $this->db(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
/*if($this->me->username != 'r.eschner@rmlinfrastruktur.at') {
return mfResponse::Forbidden();
}*/
if($this->me->is("Admin")) {
$my_networks = NetworkModel::getAll();
} else {
$my_networks = $this->me->myNetworks(["netowner", "salespartner"]);
}
$netzgebiet_ids = [];
$adb_network_ids = [];
foreach($my_networks as $network) {
if($network->adb_netzgebiet_id && !in_array($network->adb_netzgebiet_id, $netzgebiet_ids)) {
$netzgebiet_ids[] = $network->id;
$adb_network_ids[] = $network->adb_netzgebiet_id;
}
}
$sd_terms = [];
$md_terms = [];
foreach(TT_ADB_GDA_TYPES as $term => $type) {
if($type == "sd") $sd_terms[] = $term;
if($type == "md") $md_terms[] = $term;
}
//var_dump($adb_network_ids);exit;
$sql = "SELECT Hausnummer.*, COUNT(Wohneinheit.id) as unit_count FROM Hausnummer
LEFT JOIN Wohneinheit ON (Wohneinheit.hausnummer_id = Hausnummer.id)
WHERE netzgebiet_id IN (".implode(",", $adb_network_ids).")
AND (rimo_type IN ('".implode("', '" ,$md_terms)."')
OR ((rimo_type IS NULL OR rimo_type='') AND gdaeigenschaft IN ('".implode("', '" ,$md_terms)."')))
GROUP BY Hausnummer.id,Wohneinheit.id";
//echo "$sql\n";exit;
$res = $db->query($sql);
$stati = [];
$netzgebiete = [];
$ortschaften = [];
$gemeinden = [];
$strassen = [];
$plzs = [];
$addresses = [];
while($data = $db->fetch_object($res)) {
if(!array_key_exists($data->netzgebiet_id, $netzgebiete)) {
$netzgebiete[$data->netzgebiet_id] = new ADBNetzgebiet($data->netzgebiet_id);
}
$netzgebiet = $netzgebiete[$data->netzgebiet_id];
if(!array_key_exists($data->ortschaft_id, $ortschaften)) {
$ortschaften[$data->ortschaft_id] = new ADBOrtschaft($data->ortschaft_id);
}
$ortschaft = $ortschaften[$data->ortschaft_id];
if(!array_key_exists($data->strasse_id, $strassen)) {
$strassen[$data->strasse_id] = new ADBStrasse($data->strasse_id);
}
$strasse = $strassen[$data->strasse_id];
if(!array_key_exists($strassen[$data->strasse_id]->gemeinde_id, $gemeinden)) {
$gemeinden[$strasse->gemeinde_id] = new ADBGemeinde($strasse->gemeinde_id);
}
$gemeinde = $gemeinden[$strasse->gemeinde_id];
if(!array_key_exists($data->plz_id, $plzs)) {
$plzs[$data->plz_id] = new ADBPlz($data->plz_id);
}
$plz = $plzs[$data->plz_id];
if(!array_key_exists($data->status_id, $stati)) {
$stati[$data->status_id] = new ADBStatus($data->status_id);
}
$status = $stati[$data->status_id]->getApiArray();
//$status->flags = [];
foreach(ADBHausnummerStatusflagValueModel::search(["hausnummer_id" => $data->id]) as $sflag) {
$status["flags"][] = [
"code" => (int)$sflag->flag->code,
"text" => $sflag->flag->name,
"value" => ($sflag->value == 1)
];
}
$address = [];
$address["id"] = (int)$data->id;
$address["extref"] = $data->extref;
$address["adrcd"] = $data->adrcd;
$address["oaid"] = $data->oaid;
$address["status"] = $status;
$address["netzgebiet_extref"] = $netzgebiet->extref;
$address["netzgebiet_name"] = $netzgebiet->name;
$address["rimo_external_id"] = $data->rimo_id;
$address["skz"] = (int)$strasse->kennziffer;
$address["strasse"] = $strasse->name;
$address["hausnummer"] = $data->hausnummer;
$address["plz"] = $plz->plz;
$address["okz"] = (int)$ortschaft->kennziffer;
$address["ortschaft"] = $ortschaft->name;
$address["gkz"] = (int)$gemeinde->kennziffer;
$address["gemeinde"] = $gemeinde->name;
$address["grundstueck"] = $data->grund_nr;
$address["gps"] = [
"lat" => $data->gps_lat,
"long" => $data->gps_long,
];
$address["rollout"] = $data->rollout;
$address["rollout_info"] = $data->rollout_info;
$address["freigabe"] = ($data->freigabe) ? json_decode($data->freigabe) : null;
$address["nutzungseinheiten"] = (int)$data->unit_count;
$address["gdaeigenschaft"] = $data->gdaeigenschaft;
$address["meridian"] = $data->meridian;
$address["rw"] = $data->rw;
$address["hw"] = $data->hw;
$address["order_api_visibility"] = $data->visibility;
$address['created'] = date("c", $data->create);
$address['created_ts'] = (int)$data->create;
$address['updated'] = date("c", $data->edit);
$address['updated_ts'] = (int)$data->edit;
$addresses[] = $address;
}
return mfResponse::Ok(["addresses" => $addresses]);
}
protected function getPreorders() {
}
}

View File

@@ -101,8 +101,10 @@ class Preorder extends mfBaseModel {
}
}
foreach($this->getProperty("adb_wohneinheit")->rimo_workorders as $workorder) {
Rimoapi::updateWorkorder($workorder->rimo_id, $update);
if($this->adb_wohneinheit_id && is_array($this->getProperty("adb_wohneinheit")->rimo_workorders)) {
foreach($this->getProperty("adb_wohneinheit")->rimo_workorders as $workorder) {
Rimoapi::updateWorkorder($workorder->rimo_id, $update);
}
}
return true;

View File

@@ -1289,7 +1289,10 @@ class PreorderController extends mfBaseController {
return false;
}
if($preorder->type != "legacytransfer") {
/*if($preorder->type != "legacytransfer") {
return false;
}*/
if(!$this->me->is("Admin")) {
return false;
}

View File

@@ -71,7 +71,7 @@ class AddressHelper
if (array_key_exists(3, $m)) {
$addresszusatz = trim($m[3]);
}
} elseif (preg_match('/^(\D+)\s+(\d+[a-z0-9\/&#._-]*)(?:\s+((?:gesch(?:ae|ä)ft|werkstatt|betrieb und wohnungen|stg|paketlogistik|cafe|pavillon|pfarrheim|[^ ]*haus|[^ ]*geb(?:ae|ä)ude|[^ ]*halle|[^ ]*schule|Öhlmühle)(?:\s+[a-z0-9]+)?))?/i', $strasse_hausnummer, $m)) {
} elseif (preg_match('/^(\D+)\s+(\d+[a-z0-9\/&#._-]*)(?:\s+((?:gesch(?:ae|ä)ft|werkstatt|schmiede|betrieb und wohnungen|stg|paketlogistik|cafe|pavillon|pfarrheim|[^ ]*haus|[^ ]*geb(?:ae|ä)ude|[^ ]*halle|[^ ]*schule|Öhlmühle)(?:\s+[a-z0-9]+)?))?/i', $strasse_hausnummer, $m)) {
$strasse_name = trim($m[1]);
$hausnummer_name = trim($m[2]);
if (array_key_exists(3, $m)) {