From 3ab04b7a20ea931149cd4e0c8dfff7d6f815b089 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Mon, 22 Jan 2024 10:26:48 +0100 Subject: [PATCH] Preorder statistics update --- Layout/default/AddressDB/Index.php | 2 +- Layout/default/Dashboard/Dashboard.php | 41 ++++++++++--- application/Dashboard/DashboardController.php | 57 ++++++++++--------- application/Preorder/Preorder.php | 6 +- 4 files changed, 67 insertions(+), 39 deletions(-) diff --git a/Layout/default/AddressDB/Index.php b/Layout/default/AddressDB/Index.php index 04d6b936c..58c7f04a6 100644 --- a/Layout/default/AddressDB/Index.php +++ b/Layout/default/AddressDB/Index.php @@ -144,7 +144,7 @@
"> Neue Adresse anlegen - Bulk update +
diff --git a/Layout/default/Dashboard/Dashboard.php b/Layout/default/Dashboard/Dashboard.php index f347982a9..da882d900 100644 --- a/Layout/default/Dashboard/Dashboard.php +++ b/Layout/default/Dashboard/Dashboard.php @@ -69,18 +69,43 @@ $chartColors = [

Akquise Statistiken

-
+
- - +
+
+ + is("Admin")): ?> +
Netzinhaber:
+ + + + + +
+
+
+
diff --git a/application/Dashboard/DashboardController.php b/application/Dashboard/DashboardController.php index e05ace346..00e5dc4d8 100644 --- a/application/Dashboard/DashboardController.php +++ b/application/Dashboard/DashboardController.php @@ -39,50 +39,51 @@ class DashboardController extends mfBaseController { $campaign_ids = [$campaign_ids]; } - + $netowner_id = intval($r->netowner_id); + $this->layout()->set("netowner_id", $netowner_id); if($this->me->is("Admin")) { - $campaigns = PreordercampaignModel::getAll(); + if($netowner_id) { + $campaigns = PreordercampaignModel::search(["owner_id" => $netowner_id]); + } else { + $campaigns = PreordercampaignModel::getAll(); + } if(!$campaign_ids) { - foreach(PreordercampaignModel::getAll() as $campaign) { + $campaign_filter = []; + if($netowner_id) { + $campaign_filter['owner_id'] = $netowner_id; + } + foreach(PreordercampaignModel::search($campaign_filter) as $campaign) { $campaign_ids[] = $campaign->id; } } - - $max_connections = $this->getTotalHomes($campaign_ids); - $count_orders = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0]); - $weekly_orders = $this->getWeeklyOrders($campaign_ids); - - $status_connected_single = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 244]); - $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); } else { $campaigns = PreordercampaignModel::search(["owner_id" => $this->me->address_id]); - + $campaign_filter = ["preordercampaign_id" => $campaign_ids]; if(!$campaign_ids) { foreach(PreordercampaignModel::search(["owner_id" => $this->me->address_id]) as $campaign) { $campaign_ids[] = $campaign->id; } } - - $max_connections = $this->getTotalHomes($campaign_ids); - $count_orders = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0]); - $weekly_orders = $this->getWeeklyOrders($campaign_ids); - - $status_connected_single = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 244]); - $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); } + if(!$campaign_ids) { + $campaign_ids = [0]; + } + + $max_connections = $this->getTotalHomes($campaign_ids); + $count_orders = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0]); + $weekly_orders = $this->getWeeklyOrders($campaign_ids); + + $status_connected_single = PreorderModel::count(["preordercampaign_id" => $campaign_ids, "deleted" => 0, "status_code" => 244]); + $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"]; unset($partner_orders["total"]); diff --git a/application/Preorder/Preorder.php b/application/Preorder/Preorder.php index 8b654ad38..86afc24b3 100644 --- a/application/Preorder/Preorder.php +++ b/application/Preorder/Preorder.php @@ -2,7 +2,7 @@ class Preorder extends mfBaseModel { protected $forcestr = ['street','company','zip','phone','email','note']; - private $in_after_save = false; + private $in_after_save = 0; private $status; private $campaign; @@ -38,7 +38,7 @@ class Preorder extends mfBaseModel { // prevent potential infinite loop if($this->in_after_save) return true; - $this->in_after_save = true; + $this->in_after_save++; // update preorder OAID if it's different from the unit OAID // but only if the unit OAID is of the same origin as the campaign $old_oaid = $this->oaid; @@ -52,6 +52,8 @@ class Preorder extends mfBaseModel { $this->cascadeStatus(); // Cascade status changes down all active preorders with the same hausnummer $this->cascadeStatusToPreorders(); + + $this->in_after_save--; } /*