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 = [=TT_PLACEHOLDER_GPS_LAT?>, =TT_PLACEHOLDER_GPS_LONG?>];
@@ -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('=self::getUrl("Preorder", "Api")?>', {
'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() {