Added AddressDB layouts

This commit is contained in:
Frank Schubert
2023-01-03 15:21:39 +01:00
parent 7af6a3a24d
commit 6ff01cf0d9
9 changed files with 644 additions and 8 deletions

View File

@@ -0,0 +1,107 @@
<?php
$urlfilter = [];
if($s) {
$urlfilter['s'] = $s;
}
if(is_array($filter) && count($filter)) {
$urlfilter["filter"] = $filter;
}
$posturl = self::getUrl("AddressDB", "save", $urlfilter);
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item"><a href="<?=self::getUrl("AddressDB")?>">AddressDB</a></li>
<li class="breadcrumb-item active"><?=($address->id) ? "bearbeiten" : "Neu" ?></li>
</ol>
</div>
<h4 class="page-title">Adresse</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body">
<h4 class="header-title mb-2"><?=($address->id) ? "Adresse bearbeiten" : "Neue Adresse"?></h4>
<form class="form-horizontal" method="post" action="<?=$posturl?>">
<div class="card">
<div class="card-body">
<input type="hidden" name="id" value="<?=$addresse->id?>" />
<input type="hidden" name="f" value="<?=$f?>" />
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="netzgebiet_id">Netzgebiet</label>
<div class="col-lg-10">
<select class="form-control" name="netzgebiet_id" id="netzgebiet_id">
<?php foreach($netzgebiete as $netzgebiet): ?>
<option value="<?=$netzgebiet->id?>"><?=$netzgebiet->name?></option>
<?php endforeach; ?>
</select>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="matchcode">Matchcode</label>
<div class="col-lg-10">
<input type="text" class="form-control" name="matchcode" id="matchcode" value="<?=$address->matchcode?>">
<small class="font-italic">Eindeutige Identifizierung das Produkts. Z.B. Anschlussadresse, Domainname usw.</small>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="billing_period">Verrechnungsperiode</label>
<div class="col-lg-10">
<select class="form-control" name="billing_period" id="billing_period" placeholder="Verrechnungsperiode">
<option value="1" <?=($product->billing_period == 1) ? "selected='selected'" : ""?>>Monatlich</option>
<option value="12" <?=($product->billing_period == 12) ? "selected='selected'" : ""?>>Jährlich</option>
</select>
</div>
</div>
</div>
</div>
<div class="card">
<div class="card-body">
<div class="form-group row">
<label class="col-lg-2 col-form-label" for="note">Interne Notiz</label>
<div class="col-lg-10">
<textarea id="note" class="form-control" name="note" rows="5"><?=$building->note?></textarea>
</div>
</div>
</div>
</div>
<div class="form-group row">
<label class="col-lg-2"></label>
<div class="col-lg-10">
<button type="submit" class="btn btn-primary">Speichern</button>
</div>
</div>
</form>
</div>
</div>
</div>
</div>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -0,0 +1,220 @@
<?php
$pagination_baseurl = $this->getUrl($Mod,"Index");
$pagination_baseurl_params = ["filter" => $filter];
$pagination_entity_name = "Adressen";
?>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
<!-- start page title -->
<div class="row">
<div class="col-12">
<div class="page-title-box">
<div class="page-title-right">
<ol class="breadcrumb m-0">
<li class="breadcrumb-item"><a href="<?=self::getUrl("Dashboard")?>"><?=MFAPPNAME_SLUG?></a></li>
<li class="breadcrumb-item active">GWR / AddressDB</li>
</ol>
</div>
<h4 class="page-title">GWR / AddressDB</h4>
</div>
</div>
</div>
<!-- end page title -->
<div class="row">
<div class="col-lg-12">
<div class="card">
<div class="card-body mb-3">
<h4 class="header-title mb-3">Filter</h4>
<form method="get" action="<?=self::getUrl("AddressDB")?>">
<div class="row">
<div class="col-2">
<label class="form-label" for="filter_network_id">Netzgebiet</label>
<select name="filter[network_id]" id="filter_network_id" class="form-control">
<option></option>
<?php foreach($my_adb_networks as $fnet): ?>
<option value="<?=$fnet->id?>" <?=($filter['network_id'] == $fnet->id) ? "selected='selected'" : ""?>><?=$fnet->name?></option>
<?php endforeach; ?>
<?php if($me->isAdmin()):?><option value="null" <?=($filter['network_id'] === "null") ? 'selected="selected"' : ""?>>-- Kein Netzgebiet --</option><?php endif; ?>
</select>
</div>
<div class="col-1">
<label class="form-label" for="filter_zip">PLZ</label>
<input type="text" class="form-control" name="filter[zip]" id="filter_zip" value="<?=$filter['zip']?>" />
</div>
<div class="col-2">
<div class="<?=(array_key_exists("network_id", $filter) && $filter['network_id'] === "null") ? "hidden" : ""?>" id="filter-gemeinde-id">
<label class="form-label" for="filter_gemeinde_id">Gemeinde</label>
<select name="filter[gemeinde_id]" id="filter_gemeinde_id" class="form-control">
<option></option>
<?php foreach($gemeinden as $gemeinde): ?>
<option value="<?=$gemeinde->id?>" <?=($filter['gemeinde_id'] == $gemeinde->id) ? "selected='selected'" : ""?>><?=$gemeinde->name?></option>
<?php endforeach; ?>
</select>
</div>
<div class="<?=(!array_key_exists("network_id", $filter) || $filter['network_id'] !== "null") ? "hidden" : ""?>" id="filter-gemeinde-text">
<label class="form-label" for="filter_gemeinde">Gemeinde</label>
<input type="text" class="form-control" name="filter[gemeinde]" id="filter_gemeinde" value="<?=$filter['gemeinde']?>" />
</div>
</div>
<div class="col-2">
<div class="<?=(array_key_exists("network_id", $filter) && $filter['network_id'] == "null") ? "hidden" : ""?>" id="filter-ortschaft-id">
<label class="form-label" for="filter_ortschaft_id">Ortsteil</label>
<select name="filter[ortschaft_id]" id="filter_ortschaft_id" class="form-control">
<option></option>
<?php foreach($ortschaften as $ortschaft): ?>
<option value="<?=$ortschaft->id?>" <?=($filter['ortschaft_id'] == $ortschaft->id) ? "selected='selected'" : ""?>><?=$ortschaft->name?></option>
<?php endforeach; ?>
</select>
</div>
<div class="<?=(!array_key_exists("network_id", $filter) || $filter['network_id'] !== "null") ? "hidden" : ""?>" id="filter-ortschaft-text">
<label class="form-label" for="filter_ortschaft">Ortsteil</label>
<input type="text" class="form-control" name="filter[ortschaft]" id="filter_ortschaft" value="<?=$filter['ortschaft']?>" />
</div>
</div>
<div class="col-2">
<label class="form-label" for="filter_street">Strasse</label>
<input type="text" class="form-control" name="filter[street]" id="filter_street" value="<?=$filter['street']?>" />
</div>
</div>
<div class="row mt-2">
<div class="col-2">
<label class="form-label" for="filter_oaid">OAID</label>
<input type="text" class="form-control" name="filter[oaid]" id="filter_oaid" value="<?=$filter['oaid']?>" />
</div>
<div class="col-1">
<label class="form-label" for="filter_adrcd">Adrcd (GWR)</label>
<input type="text" class="form-control" name="filter[adrcd]" id="filter_adrcd" value="<?=$filter['adrcd']?>" />
</div>
<div class="col-2">
<label class="form-label" for="filter_extref">extref</label>
<input type="text" class="form-control" name="filter[extref]" id="filter_extref" value="<?=$filter['extref']?>" />
</div>
<div class="col-1">
<label class="form-label" for="filter_rollout">Rollout Jahr</label>
<input type="text" class="form-control" name="filter[rollout]" id="filter_rollout" value="<?=$filter['rollout']?>" />
</div>
<div class="col-2">
<label class="form-label" for="filter_rollout_info">Rollout Info</label>
<input type="text" class="form-control" name="filter[rollout_info]" id="filter_rollout_info" value="<?=$filter['rollout_info']?>" />
</div>
</div>
<div class="row mt-2">
<div class="col">
<button type="submit" class="btn btn-primary">Filter anwenden</button>
<a class="btn btn-secondary" href="<?=self::getUrl("AddressDB")?>">Filter zurücksetzen</a>
</div>
</div>
</form>
</div>
</div>
<div class="card">
<div class="card-body mb-3">
<div class="float-left">
<h4 class="header-title">Liste aller GWR-Adressen</h4>
</div>
<div class="float-right">
<a class="btn btn-primary mb-2" href="<?=self::getUrl("AddressDB", "add")?>"><i class="fas fa-plus"></i> Neue Adresse anlegen</a>
<a class="btn btn-outline-violett mb-2" href="<?=self::getUrl("AddressDB", "add")?>"><i class="fas fa-marker"></i> Bulk update</a>
</div>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<table class="table table-striped table-hover">
<tr>
<th>Netzgebiet</th>
<th>Adrcd</th>
<th>OAID</th>
<th>extref</th>
<th>PLZ</th>
<th>Gemeinde</th>
<th>Ortsteil</th>
<th>Straße</th>
<th>Hausnummer</th>
<th>Rollout Jahr</th>
<th>Rollout Info</th>
<th></th>
<th></th>
<th></th>
<th></th>
</tr>
<?php foreach($addresses as $address): ?>
<tr>
<td><?=$address->netzgebiet->name?></td>
<td><?=$address->adrcd?></td>
<td><?=$address->oaid?></td>
<td><?=$address->extref?></td>
<td><?=$address->plz->plz?></td>
<td><?=$address->ortschaft->gemeinde->name?></td>
<td><?=$address->ortschaft->name?></td>
<td><?=$address->strasse->name?></td>
<td><?=$address->hausnummer?></td>
<td><?=$address->rollout?></td>
<td><?=$address->rollout_info?></td>
<td></td>
<td></td>
<td></td>
<td style="text-align: left; letter-spacing: 4px; font-size: 1.1em;">
<?php if($me->is("Admin")): ?>
<a href="<?=self::getUrl("AddressDB", "edit", ["id" => $address->id])?>"><i class="far fa-edit" title="Adresse Bearbeiten"></i></a>
<?php endif; ?>
</td>
</tr>
<?php endforeach; ?>
</table>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination-summary.php"); ?>
<?php include(realpath(dirname(__FILE__)."/../")."/tpl/pagination.php"); ?>
</div>
</div>
</div>
</div>
<script>
$('#filter_network_id').change(function() {
if($('#filter_network_id').val() === "null") {
$('#filter-gemeinde-id').hide();
$('#filter-gemeinde-text').show();
$('#filter-ortschaft-id').hide();
$('#filter-ortschaft-text').show();
$('#filter-gemeinde-id option:first').prop("selected", "selected");
$('#filter-ortschaft-id option:first').prop("selected", "selected");
} else {
$('#filter-gemeinde-text').hide();
$('#filter-gemeinde-id').show();
$('#filter-ortschaft-text').hide();
$('#filter-ortschaft-id').show();
}
$('#filter_gemeinde').val("");
$('#filter_ortschaft').val("");
});
</script>
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/footer.php"); ?>

View File

@@ -56,7 +56,7 @@
<input type="text" class="form-control" name="filter[product_name]" id="filter_product_name" value="<?=$filter['product_name']?>" />
</div>
<div class="col-1">
<div class="col-2">
<label class="form-label" for="filter_show_canceled">Gekündigte Produkte</label>
<select class="form-control" name="filter[show_canceled]" id="filter_show_canceled">
<option value="0" <?=($filter['show_canceled'] == 0) ? "selected='selected'" : ""?>>Ausblenden</option>
@@ -110,7 +110,7 @@
<tr>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->id?></a></td>
<td><a href="<?=self::getUrl("Address", "View", ["id" => $contract->owner_id])?>" target="_blank"><i class="far fa-eyes" title="Kunde in neuem Tab anzeigen"></i></a> <?=$contract->owner->getCompanyOrName()?></td>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->product->name?></a></td>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->product_name?></a></td>
<td><a href="<?=self::getUrl("Contract", "view", ["id" => $contract->id])?>"><?=$contract->matchcode?></a></td>
<!--<td>
<?php if($contract->termination_id): ?>

View File

@@ -33,6 +33,7 @@
<li class="has-sub-submenu"><a href="<?=self::getUrl("User")?>"><i class="fad fa-users text-info"></i> Benutzer</a></li>
<li class="has-sub-submenu font-weight-bold mt-1"><a>Grundstammdaten</a></li>
<li><a href="<?=self::getUrl("AddressDB")?>"><i class="fas fa-city text-info"></i> GWR / AddressDB</a></li>
<li><a href="<?=self::getUrl("Producttech")?>"><i class="fad fa-microchip text-info"></i> Technologien</a></li>
<!--<li><a href="<?=self::getUrl("Contractconfig")?>"><i class="fad fa-gear text-info"></i> ContractConfig</a></li>-->

View File

@@ -53,7 +53,7 @@ if($mfPagination_pagecount < 12) {
$mfPagination_baseurl_params['s'] = $i * $pagination['count'];
if(($i == 0 || $i == $mfPagination_pagecount) || ($i >= $show_from && $i <= $show_to)) {
$log->debug("show_from: $show_from, show_to: $show_to");
//$log->debug("show_from: $show_from, show_to: $show_to");
$page = [
's' => $i * $pagination['count'],

View File

@@ -136,6 +136,8 @@ class ADBGemeindeModel {
$where .= " AND Netzgebiet.id=$netzgebiet_id";
} elseif(is_array($netzgebiet_id) && count($netzgebiet_id)) {
$where .= " AND Netzgebiet.id IN (". implode(",", $netzgebiet_id).")";
} elseif($netzgebiet_id === null) {
$where .= " AND Netzgebiet.id IS NULL";
}
}

View File

@@ -54,6 +54,16 @@ class ADBHausnummerModel {
$db = FronkDB::singleton(ADDRESSDB_DBHOST, ADDRESSDB_DBUSER, ADDRESSDB_DBPASS, ADDRESSDB_DBNAME);
$where = self::getSqlFilter($filter);
$sql = "SELECT Hausnummer.* FROM Hausnummer
LEFT JOIN Ortschaft ON (Ortschaft.id = Hausnummer.ortschaft_id)
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
WHERE $where
ORDER BY strasse_id,LENGTH(hausnummer), hausnummer
LIMIT 1";
//mfLoghandler::singleton()->debug($where);
$res = $db->select("Hausnummer", "*", "$where ORDER BY strasse_id,hausnummer LIMIT 1");
if($db->num_rows($res)) {
@@ -89,8 +99,13 @@ class ADBHausnummerModel {
$where = self::getSqlFilter($filter);
$sql = "SELECT COUNT(*) as cnt FROM Hausnummer
LEFT JOIN Ortschaft ON (Ortschaft.id = Hausnummer.ortschaft_id)
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
WHERE $where
";
";
$res = $db->query($sql);
if($db->num_rows($res)) {
@@ -106,10 +121,14 @@ class ADBHausnummerModel {
$where = self::getSqlFilter($filter);
$sql = "SELECT Hausnummer.* FROM Hausnummer
LEFT JOIN Ortschaft ON (Ortschaft.id = Hausnummer.ortschaft_id)
LEFT JOIN Gemeinde ON (Gemeinde.id = Ortschaft.gemeinde_id)
LEFT JOIN Strasse ON (Hausnummer.strasse_id = Strasse.id)
LEFT JOIN Plz ON (Hausnummer.plz_id = Plz.id)
WHERE $where
ORDER BY strasse_id,hausnummer";
ORDER BY strasse_id,LENGTH(hausnummer), hausnummer";
//mfLoghandler::singleton()->debug($sql);
mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
if(is_numeric($limit['start']) && is_numeric($limit['count'])) {
$sql .= " LIMIT ".$limit['start'].", ".$limit['count'];
@@ -118,6 +137,8 @@ class ADBHausnummerModel {
}
}
mfLoghandler::singleton()->debug($sql);
$res = $db->query($sql);
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
@@ -137,6 +158,14 @@ class ADBHausnummerModel {
}
}
if(array_key_exists("adrcd%", $filter)) {
$adrcd = FronkDB::singleton()->escape($filter['adrcd%']);
if($adrcd) {
$where .= " AND Hausnummer.`adrcd` like '$adrcd%'";
}
}
if(array_key_exists("oaid", $filter)) {
$oaid = FronkDB::singleton()->escape($filter['oaid']);
if($oaid) {
@@ -144,6 +173,14 @@ class ADBHausnummerModel {
}
}
if(array_key_exists("oaid%", $filter)) {
$oaid = FronkDB::singleton()->escape($filter['oaid%']);
if($oaid) {
$where .= " AND Hausnummer.`oaid` like '$oaid%'";
}
}
if(array_key_exists("extref", $filter)) {
$extref = FronkDB::singleton()->escape($filter['extref']);
if($extref) {
@@ -151,6 +188,29 @@ class ADBHausnummerModel {
}
}
if(array_key_exists("extref%", $filter)) {
$extref = FronkDB::singleton()->escape($filter['extref%']);
if($extref) {
$where .= " AND Hausnummer.`extref` like '$extref%'";
}
}
if(array_key_exists("plz", $filter)) {
$plz = FronkDB::singleton()->escape($filter['plz']);
if($plz) {
$where .= " AND Plz.plz = '$plz'";
}
}
if(array_key_exists("plz%", $filter)) {
$plz = FronkDB::singleton()->escape($filter['plz%']);
if($plz) {
$where .= " AND Plz.plz like '$plz%'";
}
}
if(array_key_exists("netzgebiet_id", $filter)) {
$netzgebiet_id = $filter['netzgebiet_id'];
if(is_numeric($netzgebiet_id)) {
@@ -180,6 +240,52 @@ class ADBHausnummerModel {
}
}
if(array_key_exists("gemeinde_id", $filter)) {
$gemeinde_id = $filter['gemeinde_id'];
if(is_numeric($gemeinde_id)) {
$where .= " AND Ortschaft.gemeinde_id=$gemeinde_id";
} elseif(is_array($gemeinde_id) && count($gemeinde_id)) {
$where .= " AND Ortschaft.gemeinde_id IN (". implode(",", $gemeinde_id).")";
}
}
if(array_key_exists("gemeinde", $filter)) {
$gemeinde = FronkDB::singleton()->escape($filter['gemeinde']);
if($gemeinde) {
$where .= " AND Gemeinde.name = '$gemeinde'";
}
}
if(array_key_exists("gemeinde%", $filter)) {
$gemeinde = FronkDB::singleton()->escape($filter['gemeinde%']);
if($gemeinde) {
$where .= " AND Gemeinde.name like '$gemeinde%'";
}
}
if(array_key_exists("ortschaft", $filter)) {
$ortschaft = FronkDB::singleton()->escape($filter['ortschaft']);
if($ortschaft) {
$where .= " AND Ortschaft.name = '$ortschaft'";
}
}
if(array_key_exists("ortschaft%", $filter)) {
$ortschaft = FronkDB::singleton()->escape($filter['ortschaft%']);
if($ortschaft) {
$where .= " AND Ortschaft.name like '$ortschaft%'";
}
}
if(array_key_exists("ortschaft_id", $filter)) {
$ortschaft_id = $filter['ortschaft_id'];
if(is_numeric($ortschaft_id)) {
$where .= " AND Hausnummer.ortschaft_id=$ortschaft_id";
} elseif(is_array($ortschaft_id) && count($ortschaft_id)) {
$where .= " AND Hausnummer.ortschaft_id IN (". implode(",", $ortschaft_id).")";
}
}
if(array_key_exists("hausnummer", $filter)) {
if(is_array($filter['hausnummer'])) {
$hausnummer = $filter['hausnummer'];
@@ -199,6 +305,48 @@ class ADBHausnummerModel {
}
}
if(array_key_exists("strasse", $filter)) {
$strasse = FronkDB::singleton()->escape($filter['strasse']);
if($strasse) {
$where .= " AND Strasse.name = '$strasse'";
}
}
if(array_key_exists("strasse%", $filter)) {
$strasse = FronkDB::singleton()->escape($filter['strasse%']);
if($strasse) {
$where .= " AND Strasse.name like '%$strasse%'";
}
}
if(array_key_exists("rollout", $filter)) {
$rollout = FronkDB::singleton()->escape($filter['rollout']);
if($rollout) {
$where .= " AND Hausnummer.rollout = '$rollout'";
}
}
if(array_key_exists("rollout%", $filter)) {
$rollout = FronkDB::singleton()->escape($filter['rollout%']);
if($rollout) {
$where .= " AND Hausnummer.rollout like '%$rollout%'";
}
}
if(array_key_exists("rollout_info", $filter)) {
$rollout_info = FronkDB::singleton()->escape($filter['rollout_info']);
if($rollout_info) {
$where .= " AND Hausnummer.rollout_info = '$rollout_info'";
}
}
if(array_key_exists("rollout_info%", $filter)) {
$rollout_info = FronkDB::singleton()->escape($filter['rollout_info%']);
if($rollout_info) {
$where .= " AND Hausnummer.rollout_info like '%$rollout_info%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}

View File

@@ -106,7 +106,8 @@ class ADBOrtschaftModel {
LEFT JOIN GemeindeNetzgebiet ON (GemeindeNetzgebiet.gemeinde_id = Gemeinde.id)
LEFT JOIN Netzgebiet ON (GemeindeNetzgebiet.netzgebiet_id = Netzgebiet.id)
WHERE $where
ORDER BY gemeinde_id,Ortschaft.name,Ortschaft.kennziffer";
GROUP BY Ortschaft.id
ORDER BY Ortschaft.name,Ortschaft.kennziffer,gemeinde_id";
mfLoghandler::singleton()->debug($sql);
if(is_array($limit) && count($limit)) {
@@ -135,6 +136,8 @@ class ADBOrtschaftModel {
$where .= " AND Netzgebiet.id=$netzgebiet_id";
} elseif(is_array($netzgebiet_id) && count($netzgebiet_id)) {
$where .= " AND Netzgebiet.id IN (". implode(",", $netzgebiet_id).")";
} elseif($netzgebiet_id === null) {
$where .= " AND Netzgebiet.id IS NULL";
}
}

View File

@@ -9,11 +9,166 @@ class AddressDBController extends mfBaseController {
$this->me = $me;
$this->layout()->set("me",$me);
if(!$me->is(["Admin", "netowner", "pipeplanner"])) {
if(!$me->is(["Admin", "netowner"])) {
$this->redirect("Dashboard");
}
}
protected function indexAction() {
$this->layout()->setTemplate("AddressDB/Index");
$rfilter = $this->request->filter;
iF(!is_array($rfilter)) {
$rfilter = [];
}
$this->layout->set("filter", $rfilter);
$where = "";
$filter = $this->getPreparedFilter($rfilter);
// pagination defaults
$pagination = [];
$pagination['start'] = 0;
$pagination['count'] = 25;
$pagination['maxItems'] = 0;
if(is_numeric($this->request->s)) {
$pagination['start'] = intval($this->request->s);
}
if($this->me->is("Admin")) {
$my_networks = NetworkModel::getAll();
if($filter['network_id']) {
$filter['netzgebiet_id'] = $filter['network_id'];
}
} 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);
}
}
//var_dump($filter, $my_adb_networks);
if(!$this->me->is("Admin") && array_key_exists("network_id", $filter)) {
if(array_key_exists($filter['network_id'], $my_adb_networks)) {
$filter['netzgebiet_id'] = $filter['network_id'];
} else {
unset($filter['network_id']);
}
}
$addressdb_filter = $filter;
if(!array_key_exists("netzgebiet_id", $addressdb_filter)) {
$addressdb_filter['netzgebiet_id'] = $netzgebiet_ids;
}
$this->layout()->set("my_networks", ADBNetzgebietModel::getAll());
$this->layout()->set("my_adb_networks", $my_adb_networks);
//var_dump($addressdb_filter);exit;
if($filter['netzgebiet_id'] === "null") {
$addressdb_filter['netzgebiet_id'] = 0;
$pagination['maxItems'] = ADBHausnummerModel::count($addressdb_filter);
$addresses = ADBHausnummerModel::search($addressdb_filter, $pagination);
} else if(count($my_adb_networks)) {
$pagination['maxItems'] = ADBHausnummerModel::count($addressdb_filter);
$addresses = ADBHausnummerModel::search($addressdb_filter, $pagination);
}
$this->layout()->set("pagination", $pagination);
$this->layout()->set("addresses", $addresses);
// get filter lists
$filter_filter = [];
if(array_key_exists("netzgebiet_id", $addressdb_filter)) {
$filter_filter["netzgebiet_id"] = $netzgebiet_ids;
$this->layout()->set("gemeinden", ADBGemeindeModel::search($filter_filter));
if(array_key_exists("gemeinde_id", $addressdb_filter)) {
$filter_filter['gemeinde_id'] = $addressdb_filter['gemeinde_id'];
}
$this->layout()->set("ortschaften", ADBOrtschaftModel::search($filter_filter));
}
}
protected function getPreparedFilter($filter) {
$new_filter = [];
if(array_key_exists("street", $filter) && $filter['street']) {
$new_filter['strasse%'] = "%".$filter['street'];
unset($filter['street']);
}
if(array_key_exists("adrcd", $filter) && $filter['adrcd']) {
$new_filter['adrcd%'] = $filter['adrcd'];
unset($filter['adrcd']);
}
if(array_key_exists("oaid", $filter) && $filter['oaid']) {
$new_filter['oaid%'] = $filter['oaid'];
unset($filter['oaid']);
}
if(array_key_exists("extref", $filter) && $filter['extref']) {
$new_filter['extref%'] = "%".$filter['extref'];
unset($filter['extref']);
}
if(array_key_exists("zip", $filter) && $filter['zip']) {
$new_filter['plz%'] = $filter['zip'];
unset($filter['zip']);
}
if(array_key_exists("rollout", $filter) && $filter['rollout']) {
$new_filter['rollout%'] = $filter['rollout'];
unset($filter['rollout']);
}
if(array_key_exists("rollout_info", $filter) && $filter['rollout_info']) {
$new_filter['rollout_info%'] = $filter['rollout_info'];
unset($filter['rollout_info']);
}
if(array_key_exists("gemeinde", $filter) && $filter['gemeinde']) {
$new_filter['gemeinde%'] = $filter['gemeinde'];
unset($filter['gemeinde']);
unset($filter['gemeinde_id']);
}
if(array_key_exists("ortschaft", $filter) && $filter['ortschaft']) {
$new_filter['ortschaft%'] = $filter['ortschaft'];
unset($filter['ortschaft']);
unset($filter['ortschaft_id']);
}
if(is_array($filter) && count($filter)) {
foreach($filter as $name => $value) {
$new_filter[$name] = $value;
}
}
return $new_filter;
}
protected function addAction() {
$this->layout()->setTemplate("AddressDB/Form");
}
protected function editAction() {
return $this->addAction();
}
protected function apiAction() {
if(!$this->me->is(["Admin","netowner"])) {
$this->redirect("Dashboard");