Added new "Netzbesitzer" Filter inside Preorder

This commit is contained in:
Luca Haid
2025-01-08 08:46:12 +01:00
parent 88267b72bd
commit ff0ec543b3
2 changed files with 60 additions and 6 deletions

View File

@@ -137,13 +137,48 @@
<div class="col-sm-12 col-md-2">
<label class="form-label" for="filter_preordercampaign_id">Kampagne</label>
<select name="filter[preordercampaign_id]" id="filter_preordercampaign_id" class="form-control">
<option value="">Alle</option>
<label class="form-label" for="filter_preordercampaign_id" style="display: flex">Kampagne
<?php if(isset($netowner_campaign_ids) && is_array($netowner_campaign_ids) && count($netowner_campaign_ids)): ?>
<div class="dropdown ml-1" style="cursor: pointer">
<span id="netowner-campaigns-dropdown" data-toggle="dropdown" aria-haspopup="true" aria-expanded="false" class="dropdown-toggle">(Netzbesitzer&nbsp;<i class="fas fa-caret-down"></i>)</span>
<div class="dropdown-menu" aria-labelledby="netowner-campaigns-dropdown">
<?php foreach($netowner_campaign_ids as $netowner => $campaigns): ?>
<a class="dropdown-item" href="#" onclick="selectNetOwnerCampaign(<?= htmlspecialchars(json_encode($campaigns), ENT_QUOTES, 'UTF-8') ?>, '<?= htmlspecialchars($netowner)?>'); return false;"><?= htmlspecialchars($netowner) ?></a>
<?php endforeach; ?>
</div>
</div>
<style>
.select2-container.select2-container--default {
max-height: 150px;
overflow-y: auto;
}
</style>
<script>
function selectNetOwnerCampaign(campaigns, netowner) {
$('#filter_preordercampaign_id').val(campaigns);
$('#filter_preordercampaign_id').trigger('change');
console.log(campaigns);
window.notify('success', 'Kampagnen von ' + netowner + ' ausgewählt');
}
</script>
<?php endif; ?>
</label>
<select name="filter[preordercampaign_id][]" id="filter_preordercampaign_id" class="form-control" multiple="multiple">
<?php
// if partner_id is string unset it from filter
if(isset($filter) && array_key_exists("preordercampaign_id", $filter) && is_string($filter["preordercampaign_id"])) {
unset($filter["preordercampaign_id"]);
}
?>
<?php foreach($my_campaigns as $c): ?>
<option value="<?=$c->id?>" <?=(isset($campaign) && $c->id == $campaign->id) ? "selected='selected'" : ""?>><?=$c->name?></option>
<option value="<?=$c->id?>" <?=(isset($filter) && array_key_exists("preordercampaign_id", $filter) && in_array($c->id, $filter["preordercampaign_id"])) ? "selected='selected'" : ""?>><?=$c->name?></option>
<?php endforeach; ?>
</select>
</div>
@@ -471,6 +506,7 @@
$("#filter_type").select2({closeOnSelect: false});
$("#filter_status").select2({closeOnSelect: false});
$("#filter_partner_id").select2({closeOnSelect: false});
$("#filter_preordercampaign_id").select2({closeOnSelect: false});
$("#connection_type_id").select2({closeOnSelect: false});
var attributes = ["bep_specified", "inhouse_cabling_supplied"];

View File

@@ -75,13 +75,31 @@ class PreorderController extends mfBaseController {
$this->layout()->set("campaign", new Preordercampaign());
$all_preorder_campaigns = PreordercampaignModel::getAll();
if ($this->me->is("Admin")) {
$netowner_campaign_ids = [];
foreach ($all_preorder_campaigns as $campaign) {
$network = new Network($campaign->network_id);
$netowner = new Address($network->owner_id);
if (!array_key_exists($netowner->getCompanyOrName(), $netowner_campaign_ids)) {
$netowner_campaign_ids[$netowner->getCompanyOrName()] = [];
}
$netowner_campaign_ids[$netowner->getCompanyOrName()][] = $campaign->id;
}
$this->layout()->set("netowner_campaign_ids", $netowner_campaign_ids);
}
if($this->me->is("Admin")) {
if($filter['preordercampaign_id']) {
$this->layout()->set("campaign", new Preordercampaign($filter['preordercampaign_id']));
} else {
$my_campaigns = PreordercampaignModel::getAll();
$my_campaigns = $all_preorder_campaigns;
}
$this->layout()->set("my_campaigns", PreordercampaignModel::getAll());
$this->layout()->set("my_campaigns", $all_preorder_campaigns);
} else {
if($this->me->is("preorderfront")) {
$pns = json_decode($this->me->getFlag("preorder_networks"));