Added partner order statistic on dashboard
This commit is contained in:
@@ -1,3 +1,30 @@
|
||||
<?php
|
||||
|
||||
$additionalJS = ["plugins/chart.js/Chart.min.js"];
|
||||
|
||||
$chartColors = [
|
||||
'#3366CC',
|
||||
'#DC3912',
|
||||
'#FF9900',
|
||||
'#109618',
|
||||
'#990099',
|
||||
'#3B3EAC',
|
||||
'#0099C6',
|
||||
'#DD4477',
|
||||
'#66AA00',
|
||||
'#B82E2E',
|
||||
'#316395',
|
||||
'#994499',
|
||||
'#22AA99',
|
||||
'#AAAA11',
|
||||
'#6633CC',
|
||||
'#E67300',
|
||||
'#8B0707',
|
||||
'#329262',
|
||||
'#5574A6',
|
||||
'#3B3EAC'
|
||||
]
|
||||
?>
|
||||
<?php include(realpath(dirname(__FILE__)."/../../$mfLayoutPackage")."/header.php"); ?>
|
||||
|
||||
<div class="row justify-content-center mt-1">
|
||||
@@ -115,25 +142,37 @@
|
||||
|
||||
</div>
|
||||
|
||||
<!--div class="row mt-2">
|
||||
<div class="col-lg">
|
||||
<h4 class="card-title">Kunden pro Provider</h4>
|
||||
<div class="row">
|
||||
<?php if(1): ?>
|
||||
<div class="col-lg-7">
|
||||
<canvas id="partner-chart" height="200"></canvas>
|
||||
<div class="row mt-2">
|
||||
<div class="col-6">
|
||||
|
||||
<div class="card">
|
||||
<div class="card-body">
|
||||
<h4 class="card-title">Kunden pro Provider</h4>
|
||||
<hr />
|
||||
<div class="row">
|
||||
<?php if(1): ?>
|
||||
<div class="col-lg-7">
|
||||
<canvas id="partner-chart" height="200"></canvas>
|
||||
</div>
|
||||
<div class="col-lg-5">
|
||||
<table>
|
||||
<?php $i=0; foreach($partner_orders as $provider => $count): ?>
|
||||
<tr style="border-bottom: 1px solid <?=$chartColors[$i]?>;">
|
||||
<td><span style="background-color: <?=$chartColors[$i]?>; color: <?=$chartColors[$i]?>">##</span></td>
|
||||
<td class="pl-2 pr-2" style="white-space: nowrap;"><?=round(($count / $total_orders) * 100, 1)?>% (<?=($count)?>)</td>
|
||||
<td title="<?=$provider?>" style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"><?=$this->strtrim($provider,22)?></td>
|
||||
</tr>
|
||||
<?php $i++; endforeach; ?>
|
||||
</table>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<i>Keine Aktiven Anschlüsse</i>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
<div class="col-lg-5">
|
||||
<table>
|
||||
|
||||
</table>
|
||||
</div>
|
||||
<?php else: ?>
|
||||
<i>Keine Aktiven Anschlüsse</i>
|
||||
<?php endif; ?>
|
||||
</div>
|
||||
</div>
|
||||
</div-->
|
||||
</div>
|
||||
|
||||
</div>
|
||||
</div>
|
||||
@@ -163,6 +202,39 @@
|
||||
});
|
||||
|
||||
|
||||
<?php if(count($partner_orders)): ?>
|
||||
var providerChart = new Chart(document.getElementById('partner-chart').getContext('2d'), {
|
||||
type: 'doughnut',
|
||||
data: {
|
||||
labels: [
|
||||
<?php foreach($partner_orders as $partner => $c): ?>
|
||||
"<?=$partner?> (<?=round(($c / $total_orders) * 100, 1)?>%)",
|
||||
<?php endforeach; ?>
|
||||
],
|
||||
datasets: [{
|
||||
data: [
|
||||
<?php foreach($partner_orders as $c): ?>
|
||||
<?=($c)?>,
|
||||
<?php endforeach; ?>
|
||||
],
|
||||
backgroundColor: [
|
||||
"<?=implode('","', $chartColors)?>"
|
||||
],
|
||||
borderWidth: 2
|
||||
|
||||
}]
|
||||
},
|
||||
options: {
|
||||
scales: {
|
||||
y: {
|
||||
beginAtZero: true
|
||||
}
|
||||
},
|
||||
legend: false,
|
||||
}
|
||||
});
|
||||
<?php endif; ?>
|
||||
|
||||
});
|
||||
|
||||
</script>
|
||||
|
||||
@@ -42,7 +42,7 @@ $pagination_entity_name = "Pops";
|
||||
<thead>
|
||||
<tr>
|
||||
<th>Name</th>
|
||||
<th>Netgebiet</th>
|
||||
<th>Netzgebiet</th>
|
||||
<th>Zutritt</th>
|
||||
<th>Vlan Public/Nat/IPv6</th>
|
||||
<th>Koordinaten</th>
|
||||
|
||||
@@ -21,6 +21,12 @@
|
||||
<link href="<?=self::getResourcePath()?>plugins/summernote/summernote-bs4.css" rel="stylesheet" type="text/css" />
|
||||
<link href="<?=self::getResourcePath()?>datatables/datatables.min.css?<?=date('U')?>" rel="stylesheet" type="text/css" />
|
||||
|
||||
<?php if(isset($additionalCSS) && is_array($additionalCSS) && count($additionalCSS)): ?>
|
||||
<?php foreach($additionalCSS as $css): ?>
|
||||
<link rel="stylesheet" href="<?=self::getResourcePath()?><?=$css?>" />
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>js/jquery.min.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>assets/libs/select2/select2.full.min.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>js/bootstrap-datepicker.min.js"></script>
|
||||
@@ -34,6 +40,12 @@
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>js/bootstrap-autocomplete.min.js"></script>
|
||||
<script type="text/javascript" src="<?=self::getResourcePath()?>datatables/datatables.min.js?<?=date('U')?>"></script>
|
||||
|
||||
<?php if(isset($additionalJS) && is_array($additionalJS) && count($additionalJS)): ?>
|
||||
<?php foreach($additionalJS as $js): ?>
|
||||
<script src="<?=self::getResourcePath()?><?=$js?>"></script>
|
||||
<?php endforeach; ?>
|
||||
<?php endif; ?>
|
||||
|
||||
<?php if(MFAPPNAME == "devthetool"): ?>
|
||||
<style type="text/css">
|
||||
body {
|
||||
|
||||
@@ -58,6 +58,8 @@ class DashboardController extends mfBaseController {
|
||||
$status_connected_multi = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 245]);
|
||||
|
||||
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
|
||||
|
||||
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
|
||||
} else {
|
||||
$campaigns = PreordercampaignModel::search(["owner_id" => $this->me->address_id]);
|
||||
|
||||
@@ -74,13 +76,22 @@ class DashboardController extends mfBaseController {
|
||||
$status_connected_multi = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 245]);
|
||||
|
||||
$status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]);
|
||||
$partner_orders = $this->getPartnerOrderCount($campaign_ids);
|
||||
}
|
||||
|
||||
$total_orders = $partner_orders["total"];
|
||||
unset($partner_orders["total"]);
|
||||
|
||||
//var_dump($partner_orders);exit;
|
||||
|
||||
$this->layout()->set("max_connections", $max_connections);
|
||||
$this->layout()->set("count_orders", $count_orders);
|
||||
$this->layout()->set("status_connected_single", $status_connected_single);
|
||||
$this->layout()->set("status_connected_multi", $status_connected_multi);
|
||||
$this->layout()->set("status_connected", $status_connected);
|
||||
$this->layout()->set("partner_orders", $partner_orders);
|
||||
$this->layout()->set("total_orders", $total_orders);
|
||||
|
||||
$this->layout()->set("campaigns", $campaigns);
|
||||
$this->layout()->set("campaign_id", $r->campaign_id);
|
||||
|
||||
@@ -99,6 +110,27 @@ class DashboardController extends mfBaseController {
|
||||
return $total_homes;
|
||||
}
|
||||
|
||||
private function getPartnerOrderCount($preordercampaign_id = []) {
|
||||
$orders = [];
|
||||
$totals = 0;
|
||||
|
||||
|
||||
foreach(AddressModel::search(["addresstype" => ["salespartner"]]) as $partner) {
|
||||
$count = PreorderModel::count(["partner_id" => $partner->id, "preordercampaign_id" => $preordercampaign_id, "deleted" => 0]);
|
||||
if($count) {
|
||||
if(!array_key_exists($partner->getCompanyOrName(), $orders)) {
|
||||
$orders[$partner->getCompanyOrName()] = $count;
|
||||
} else {
|
||||
$orders[$partner->getCompanyOrName()] += $count;
|
||||
}
|
||||
$totals += $count;
|
||||
}
|
||||
}
|
||||
|
||||
arsort($orders);
|
||||
$orders["total"] = $totals;
|
||||
return $orders;
|
||||
}
|
||||
|
||||
protected function pdfAction() {
|
||||
$order = new Order(7);
|
||||
|
||||
@@ -7,6 +7,11 @@ body {
|
||||
footer {
|
||||
background-color: #e7e7e7 !important;
|
||||
}
|
||||
|
||||
hr {
|
||||
border-top: 1px solid #e7e7e7 !important;
|
||||
}
|
||||
|
||||
.table,
|
||||
.table-hover tbody tr:hover{
|
||||
color: #323a36;
|
||||
|
||||
Reference in New Issue
Block a user