Added filters to Preordercampaign
This commit is contained in:
@@ -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']?>" />
|
||||
|
||||
@@ -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).")";
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
@@ -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");
|
||||
|
||||
@@ -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;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user