diff --git a/Layout/default/Dashboard/Dashboard.php b/Layout/default/Dashboard/Dashboard.php index b38155320..6ebac6122 100644 --- a/Layout/default/Dashboard/Dashboard.php +++ b/Layout/default/Dashboard/Dashboard.php @@ -159,22 +159,76 @@ $chartColors = [
- $count): ?> + $count): ?> - +
## % ()strtrim($provider,22)?>strtrim($partner,22)?>
- Keine Aktiven Anschlüsse + Keine Bestellungen + +
+
+
+

Bestellstatus je Partner

+
+
+ + $status): ?> +
+
+
+ strtrim($partner, 200)?> +
+
+
+
+ +
+
+ + $count): ?> + + + + + + + +
##% () - " style="white-space: nowrap; overflow: hidden; text-overflow: ellipsis;"> + +
+
+
+ +
+
+
+ +
+
+ + + +
+ + + Keine Bestellungen + + +
+
+
+ @@ -301,6 +355,56 @@ $chartColors = [ + var status = []; + + status[id?>] = {"code": "code?>", "name": "name?>"}; + + + + + var productCharts = []; + + $status): ?> + productCharts[] = new Chart(document.getElementById('partner-status-').getContext('2d'), { + type: 'doughnut', + data: { + labels: [ + $count): ?> + + code?> - name?> " (%)", + + + ], + datasets: [{ + data: [ + $count): ?> + + , + + ], + backgroundColor: [ + "" + ], + /*borderColor: [ + "#d54369", + "#4592e0" + ],*/ + borderWidth: 1 + + }] + }, + options: { + scales: { + y: { + beginAtZero: true + } + }, + legend: false + + } + }); + + }); diff --git a/application/Dashboard/DashboardController.php b/application/Dashboard/DashboardController.php index 5adff48a1..5f4ff600a 100644 --- a/application/Dashboard/DashboardController.php +++ b/application/Dashboard/DashboardController.php @@ -61,6 +61,7 @@ class DashboardController extends mfBaseController { $status_connected = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 500]); $partner_orders = $this->getPartnerOrderCount($campaign_ids); + $partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids); } else { $campaigns = PreordercampaignModel::search(["owner_id" => $this->me->address_id]); @@ -78,7 +79,9 @@ 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); + $partner_orders_by_status = $this->getPartnerOrdersByStatus($campaign_ids); } $total_orders = $partner_orders["total"]; @@ -86,6 +89,13 @@ class DashboardController extends mfBaseController { //var_dump($partner_orders);exit; + $stati = []; + foreach(PreorderstatusModel::getAll() as $status) { + $stati[$status->id] = ["code" => $status->code, "name" => $status->name]; + } + + $this->layout()->set("stati", $stati); + $this->layout()->set("max_connections", $max_connections); $this->layout()->set("count_orders", $count_orders); $this->layout()->set("weekly_orders", $weekly_orders); @@ -95,6 +105,7 @@ class DashboardController extends mfBaseController { $this->layout()->set("status_connected", $status_connected); $this->layout()->set("partner_orders", $partner_orders); $this->layout()->set("total_orders", $total_orders); + $this->layout()->set("partner_orders_by_status", $partner_orders_by_status); $this->layout()->set("campaigns", $campaigns); $this->layout()->set("campaign_id", $r->campaign_id); @@ -118,19 +129,24 @@ class DashboardController extends mfBaseController { $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; + $sql = "SELECT COUNT(Preorder.id) as cnt, IF(Address.company IS NOT NULL AND Address.company <> '', Address.company, CONCAT(Address.firstname, ' ', Address.lastname)) as partner FROM Preorder + LEFT JOIN Address ON (Preorder.partner_id = Address.id) + LEFT JOIN Addresstype ON (Addresstype.address_id = Address.id AND Addresstype.type='salespartner') + WHERE Preorder.deleted = 0 AND Preorder.preordercampaign_id IN (".implode(",", $preordercampaign_id).") + GROUP BY Address.id + "; + $this->log->debug($sql); + $res = $this->db()->query($sql); + if($this->db()->num_rows($res)) { + while($data = $this->db()->fetch_object($res)) { + if($data->partner) { + $orders[$data->partner] = $data->cnt; } else { - $orders[$partner->getCompanyOrName()] += $count; + $orders["Kein Partner"] = $data->cnt; } - $totals += $count; + $totals += $data->cnt; } } - arsort($orders); $orders["total"] = $totals; return $orders; @@ -161,6 +177,26 @@ class DashboardController extends mfBaseController { //var_dump($orders);exit; } + private function getPartnerOrdersByStatus($preordercampaign_id = []) { + $orders = []; + + foreach(PreorderModel::search(["preordercampaign_id" => $preordercampaign_id, "deleted" => 0]) as $preorder) { + $name = $preorder->partner->getCompanyOrName(); + if(!$name) $name = "Kein Partner"; + if(!array_key_exists($name, $orders)) { + $orders[$name] = []; + $orders[$name]["total"] = 0; + } + if(!array_key_exists($preorder->status->id, $orders[$name])) { + $orders[$name][$preorder->status->id] = 0; + } + $orders[$name][$preorder->status->id]++; + $orders[$name]["total"]++; + } + //var_dump($orders);exit; + return $orders; + } + protected function pdfAction() { $order = new Order(7); $owner = new Address(1);