Added filters to Preordercampaign

This commit is contained in:
Frank Schubert
2022-11-22 18:13:03 +01:00
parent 520e68b44b
commit 0779c29830
4 changed files with 104 additions and 16 deletions

View File

@@ -36,6 +36,18 @@
</select>
</div>
<?php if($me->is("Admin")): ?>
<div class="col-2">
<label class="form-label" for="filter_netowner">Netzbesitzer</label>
<select name="filter[netowner]" id="filter_netowner" class="form-control">
<option></option>
<?php foreach($netowners as $owner): ?>
<option value="<?=$owner->id?>" <?=($filter['netowner'] == $owner->id) ? "selected='selected'" : ""?>><?=$owner->getCompanyOrName()?></option>
<?php endforeach; ?>
</select>
</div>
<?php endif; ?>
<div class="col-1">
<label class="form-label" for="filter_name">Name</label>
<input type="text" class="form-control" name="filter[name]" id="filter_name" value="<?=$filter['name']?>" />

View File

@@ -115,9 +115,11 @@ class NetworkModel {
}
if(array_key_exists("owner_id", $filter)) {
$ownerid= $filter['owner_id'];
if(is_numeric($ownerid)) {
$where .= " AND owner_id=$ownerid";
$owner_id = $filter['owner_id'];
if(is_numeric($owner_id)) {
$where .= " AND owner_id=$owner_id";
} elseif(is_array($owner_id) && count($owner_id)) {
$where .= " AND owner_id IN (". implode(",", $owner_id).")";
}
}

View File

@@ -19,6 +19,7 @@ class PreordercampaignController extends mfBaseController {
$this->layout->set("filter", $this->request->filter);
$filter = [];
if($this->request->filter) {
$filter = $this->getPreparedFilter($this->request->filter);
}
@@ -34,14 +35,18 @@ class PreordercampaignController extends mfBaseController {
}
$my_networks = [];
//var_dump($filter);exit;
if($this->me->is("Admin")) {
if($filter['network_id']) {
if(!is_array($filter['network_id']) && $filter['network_id']) {
$my_networks[] = new Network($filter['network_id']);
} else {
$my_networks = NetworkModel::getAll();
}
$this->layout()->set("mynetworks", NetworkModel::getAll());
$netowners = $this->getNetworkOwners($my_network_ids);
$this->layout()->set("netowners", $netowners);
} else {
$use_filter_network = false;
$my_networks = $this->me->myNetworks(["netowner", "salespartner"]);
@@ -53,31 +58,52 @@ class PreordercampaignController extends mfBaseController {
}
}
$this->layout()->set("mynetworks", $my_networks);
if($use_filter_network) {
$my_networks = [];
$my_networks[] = new Network($filter['network_id']);
}
$this->layout()->set("mynetworks", $this->me->my_networks);
}
unset($filter['network_id']);
//var_dump($this->me->my_networks);exit;
$my_network_ids = [];
foreach($my_networks as $network) {
$my_network_ids[] = $network->id;
$my_network_ids = [];
foreach($my_networks as $network) {
$my_network_ids[] = $network->id;
}
$filter['network_id'] = $my_network_ids;
}
$campaigns = PreordercampaignModel::search(['network_id' => $my_network_ids]);
$campaigns = PreordercampaignModel::search($filter);
$this->layout()->set("campaigns", $campaigns);
}
private function getPreparedFilter($filter) {
$new_filter = [];
if(array_key_exists("netowner", $filter) && $filter['netowner']) {
if($this->me->is("Admin")) {
$owner_id = $filter['netowner'];
foreach(NetworkModel::search(['owner_id' => $owner_id]) as $network) {
$new_filter['network_id'][] = $network->id;
}
unset($filter['network_id']);
} else {
unset($filter['netowner']);
}
}
if(array_key_exists("name", $filter) && $filter['name']) {
$new_filter['name%'] = "%".$filter['name'];
unset($filter['name']);
}
if(array_key_exists("area", $filter) && $filter['area']) {
$new_filter['area%'] = "%".$filter['area'];
unset($filter['area']);
}
foreach($filter as $name => $value) {
$new_filter[$name] = $value;
}
@@ -85,6 +111,25 @@ class PreordercampaignController extends mfBaseController {
return $new_filter;
}
private function getNetworkOwners() {
$owners = [];
$sql = "SELECT Address.* FROM Preordercampaign
LEFT JOIN Network ON (Preordercampaign.network_id = Network.id)
LEFT JOIN Address ON (Network.owner_id = Address.id)
GROUP BY Address.id
ORDER BY Address.company, Address.lastname, Address.firstname
";
$res = $this->db()->query($sql);
if($this->db()->num_rows($reso)) {
while($data = $this->db()->fetch_object($res)) {
$owners[] = new Address($data->id);
}
}
return $owners;
}
protected function addAction() {
if(!$this->me->is("Admin")) {
$this->redirect("Preordercampaign");

View File

@@ -83,6 +83,12 @@ class PreordercampaignModel {
$db = FronkDB::singleton();
$where = self::getSqlFilter($filter);
$sql = "SELECT Preordercampaign.* FROM Preordercampaign
LEFT JOIN Network on (Preordercampaign.network_id = Network.id)
WHERE $where ORDER BY name,`create`
";
mfLoghandler::singleton()->debug($sql);
$res = $db->select("Preordercampaign", "*", "$where ORDER BY name,`create`");
if($db->num_rows($res)) {
while($data = $db->fetch_object($res)) {
@@ -105,6 +111,15 @@ class PreordercampaignModel {
}
}
if(array_key_exists("owner_id", $filter)) {
$owner_id = $filter['owner_id'];
if(is_numeric($owner_id)) {
$where .= " AND Network.owner_id=$owner_id";
} elseif(is_array($owner_id) && count($owner_id)) {
$where .= " AND Network.owner_id IN (". implode(",", $owner_id).")";
}
}
if(array_key_exists("name", $filter)) {
$name = FronkDB::singleton()->escape($filter['name']);
if($name) {
@@ -119,6 +134,20 @@ class PreordercampaignModel {
}
}
if(array_key_exists("area", $filter)) {
$area = FronkDB::singleton()->escape($filter['area']);
if($area) {
$where .= " AND `area` = '$area'";
}
}
if(array_key_exists("area%", $filter)) {
$area = FronkDB::singleton()->escape($filter['area%']);
if($area) {
$where .= " AND `area` LIKE '$area%'";
}
}
//var_dump($filter, $where);exit;
return $where;
}