diff --git a/Layout/default/Preorder/Index.php b/Layout/default/Preorder/Index.php index aa3488ba6..9fe9a7a8d 100644 --- a/Layout/default/Preorder/Index.php +++ b/Layout/default/Preorder/Index.php @@ -1370,6 +1370,7 @@ $pagination_entity_name = "Vorbestellungen"; var preorderMap; var preorders = []; + var fttxlocations = []; var markers = []; var markerState = true; var mapCenterPos = [, ]; @@ -1536,6 +1537,7 @@ $pagination_entity_name = "Vorbestellungen"; //fetch fcps and show on map getFCPs(preorderMap); + addFttxLocations(preorderMap); // calculate center position mapCenterPos = GetCenterFromDegrees(all_coords); @@ -1614,6 +1616,29 @@ $pagination_entity_name = "Vorbestellungen"; }); } + function addFttxLocations(preorderMap) { + fttx_c = { + "gross planning": "grey", + "detailed planning": "yellow", + "plan released": "deeppink", + "assigend": "aqua", + "executed": "darkblue", + "documented": "lime", + "canceled": "darkred", + }; + + fttxlocations.forEach(loc => { + if(!loc.gps_lat || !loc.gps_long || !loc.ex_state) return; + + var circle = L.circleMarker([loc.gps_lat, loc.gps_long], { + color: fttx_c[loc.ex_state.toLowerCase()], + fillColor: fttx_c[loc.ex_state.toLowerCase()], + fillOpacity: .8, + radius: 6 + }).bindTooltip(loc.street + "
" + loc.zip + " " + loc.city + "

Execution State: " + loc.ex_state).addTo(preorderMap); + }) + } + function centerMap() { preorderMap.setView(mapCenterPos, 12); } @@ -1624,19 +1649,25 @@ $pagination_entity_name = "Vorbestellungen"; $.post('', { 'do': "getFilteredPreorders", - filter: filter + filter: filter, },function(success) { if(success.status == "OK") { - + changes = false; if(Array.isArray(success.result.preorders)) { preorders = success.result.preorders; + changes = true; + } + if(Array.isArray(success.result.fttxlocations)) + fttxlocations = success.result.fttxlocations; + changes = true; + } + + if(changes) { renderMap(); } - } - }, + }, 'json' ); - } function getFilter() { diff --git a/application/Preorder/PreorderController.php b/application/Preorder/PreorderController.php index be1895d7b..7486a2772 100644 --- a/application/Preorder/PreorderController.php +++ b/application/Preorder/PreorderController.php @@ -1490,10 +1490,19 @@ class PreorderController extends mfBaseController { private function getFilteredPreordersApi() { $preorders = []; + $fttxlocations = []; + $filter = []; + $type = ["preorders", "fttx"]; if(is_array($this->request->filter)) { $filter = $this->request->filter; } + if($this->request->type == "preorders") { + $type = ["preorders"]; + } + if($this->request->type == "fttxlocations") { + $type = ["fttx"]; + } $filter = $this->getPreparedFilter($filter); @@ -1558,40 +1567,104 @@ class PreorderController extends mfBaseController { if(!$filter['preordercampaign_id']) $filter['preordercampaign_id'] = 0; - //var_dump($filter);exit; - $results = PreorderModel::searchActive($filter); - foreach($results as $preorder) { - //$this->log->debug("building status: ".print_r($building->status,true)); - $data = clone($preorder->data); - unset($data->workorder_export_data); - unset($data->submit_request); - unset($data->addon_services); - $data->id = $preorder->id; - $data->status_code = $preorder->status->code; - $data->adrcd = $preorder->adb_hausnummer->adrcd; - $data->extref = $preorder->adb_hausnummer->extref; - $data->adb_strasse = $preorder->adb_hausnummer->strasse->name; - $data->adb_hausnummer = $preorder->adb_hausnummer->hausnummer; - $data->adb_plz = $preorder->adb_hausnummer->plz->plz; - $data->adb_ort = $preorder->adb_hausnummer->ortschaft->name; - $data->adb_gemeinde = $preorder->adb_hausnummer->strasse->gemeinde->name; - $data->gps_lat = $preorder->adb_hausnummer->gps_lat; - $data->gps_long = $preorder->adb_hausnummer->gps_long; - if($this->me->is("Admin")) { - $data->borderpoint_lat = ($preorder->adb_hausnummer->borderpoint_lat) ? json_decode($preorder->adb_hausnummer->borderpoint_lat) : null; - $data->borderpoint_long = ($preorder->adb_hausnummer->borderpoint_long) ? json_decode($preorder->adb_hausnummer->borderpoint_long) : null; - //$data->trenches = ($preorder->adb_hausnummer->trenches) ? json_decode($preorder->adb_hausnummer->trenches) : null; - $data->home_trench = ($preorder->adb_hausnummer->home_trench) ? json_decode($preorder->adb_hausnummer->home_trench) : null; + + if(in_array("preorders", $type)) { + $this->log->debug(__METHOD__.": requested preorders"); + //var_dump($filter);exit; + $results = PreorderModel::searchActive($filter); + foreach($results as $preorder) { + //$this->log->debug("building status: ".print_r($building->status,true)); + $data = clone($preorder->data); + unset($data->workorder_export_data); + unset($data->submit_request); + unset($data->addon_services); + $data->id = $preorder->id; + $data->status_code = $preorder->status->code; + $data->adrcd = $preorder->adb_hausnummer->adrcd; + $data->extref = $preorder->adb_hausnummer->extref; + $data->adb_strasse = $preorder->adb_hausnummer->strasse->name; + $data->adb_hausnummer = $preorder->adb_hausnummer->hausnummer; + $data->adb_plz = $preorder->adb_hausnummer->plz->plz; + $data->adb_ort = $preorder->adb_hausnummer->ortschaft->name; + $data->adb_gemeinde = $preorder->adb_hausnummer->strasse->gemeinde->name; + $data->gps_lat = $preorder->adb_hausnummer->gps_lat; + $data->gps_long = $preorder->adb_hausnummer->gps_long; + + if($this->me->is("Admin")) { + $data->borderpoint_lat = ($preorder->adb_hausnummer->borderpoint_lat) ? json_decode($preorder->adb_hausnummer->borderpoint_lat) : null; + $data->borderpoint_long = ($preorder->adb_hausnummer->borderpoint_long) ? json_decode($preorder->adb_hausnummer->borderpoint_long) : null; + //$data->trenches = ($preorder->adb_hausnummer->trenches) ? json_decode($preorder->adb_hausnummer->trenches) : null; + $data->home_trench = ($preorder->adb_hausnummer->home_trench) ? json_decode($preorder->adb_hausnummer->home_trench) : null; + } + + $data->type_label = __($data->type, "preorder"); + $data->connection_type_label = __($data->connection_type, "preorder"); + + $preorders[] = $data; } - - $data->type_label = __($data->type, "preorder"); - $data->connection_type_label = __($data->connection_type, "preorder"); - - $preorders[] = $data; } - return ["preorders" => $preorders]; + if(in_array("fttx", $type)) { + $this->log->debug(__METHOD__.": requested fttxlocations"); + // get all fttp locations in current campaign network with status + + if($filter["preordercampaign_id"]) { + $my_adb_networks = []; + + $campaign = new Preordercampaign($filter["preordercampaign_id"]); + if($campaign->id) { + $salesclusters = $campaign->salesclusters; + if(is_array($salesclusters) && count($salesclusters)) { + foreach($salesclusters as $sc) { + $my_adb_networks[] = new ADBNetzgebiet($sc->id); + } + } else { + $my_adb_networks[] = $campaign->adb_netzgebiet; + } + } + + foreach($my_adb_networks as $adb_network) { + if(!$adb_network->isLoaded()) continue; + + /*foreach(ADBHausnummerModel::search(['netzgebiet_id' => $adb_network->id]) as $hausnummer) { + $loc = []; + $loc["street"] = $hausnummer->strasse->name . " " . $hausnummer->hausnummer; + $loc["zip"] = $hausnummer->plz->plz; + $loc["city"] = $hausnummer->strasse->gemeinde->name; + + $loc["gps_lat"] = $hausnummer->gps_lat; + $loc["gps_long"] = $hausnummer->gps_long; + $loc["ex_state"] = $hausnummer->rimo_ex_state; + $loc["op_state"] = $hausnummer->rimo_op_state; + + $fttxlocations[] = $loc; + }*/ + + $adb = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME); + $sql = "SELECT * FROM view_hausnummer WHERE netzgebiet_id=".$adb_network->id; + $res = $adb->query($sql); + while($data = $adb->fetch_object($res)) { + $loc = []; + $loc["street"] = $data->strasse . " " . $data->hausnummer; + $loc["zip"] = $data->plz; + $loc["city"] = $data->gemeinde; + + $loc["gps_lat"] = $data->gps_lat; + $loc["gps_long"] = $data->gps_long; + $loc["ex_state"] = $data->rimo_ex_state; + $loc["op_state"] = $data->rimo_op_state; + + $fttxlocations[] = $loc; + } + } + } + } + + return [ + "preorders" => $preorders, + "fttxlocations" => $fttxlocations + ]; } private function saveAttributeApi() {