From d1818a8c96b47aff2c202f829a39b735d64a47ba Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Mon, 24 Apr 2023 20:31:30 +0200 Subject: [PATCH] Added unit_count column to ADB Netzgebiet with auto update in Netzgebiet model --- application/ADBNetzgebiet/ADBNetzgebietModel.php | 10 ++++++++++ application/ADBWohneinheit/ADBWohneinheit.php | 10 ++++++++++ application/Preordercampaign/Preordercampaign.php | 4 +++- 3 files changed, 23 insertions(+), 1 deletion(-) diff --git a/application/ADBNetzgebiet/ADBNetzgebietModel.php b/application/ADBNetzgebiet/ADBNetzgebietModel.php index 569ea6f37..2772727a9 100644 --- a/application/ADBNetzgebiet/ADBNetzgebietModel.php +++ b/application/ADBNetzgebiet/ADBNetzgebietModel.php @@ -150,3 +150,13 @@ class ADBNetzgebietModel { } } + +/* + * Update unit_count in Netzgebiet: + +UPDATE `Netzgebiet` +LEFT JOIN (SELECT netzgebiet_id, COUNT(*) as uc FROM Wohneinheit LEFT JOIN Hausnummer ON (Wohneinheit.hausnummer_id = Hausnummer.id) GROUP BY netzgebiet_id) AS uc_table ON (uc_table.netzgebiet_id = Netzgebiet.id) +SET unit_count = uc_table.uc +WHERE uc_table.uc IS NOT NULL; + + */ \ No newline at end of file diff --git a/application/ADBWohneinheit/ADBWohneinheit.php b/application/ADBWohneinheit/ADBWohneinheit.php index cdf7dc696..5a5e3bc59 100644 --- a/application/ADBWohneinheit/ADBWohneinheit.php +++ b/application/ADBWohneinheit/ADBWohneinheit.php @@ -19,7 +19,17 @@ class ADBWohneinheit extends mfBaseModel { $hausnummer->unit_count = $unit_count; $hausnummer->save(); } + + if($hausnummer->netzgebiet_id) { + $netzgebiet = new ADBNetzgebiet($hausnummer->netzgebiet_id); + if($netzgebiet->id) { + $netzgebiet->unit_count = ADBWohneinheitModel::count(['netzgebiet_id' => $hausnummer->netzgebiet_id]); + $netzgebiet->save(); + } + } + } + } public static function parseHausnummerZusatz($text) { diff --git a/application/Preordercampaign/Preordercampaign.php b/application/Preordercampaign/Preordercampaign.php index 603995c18..130b07d40 100644 --- a/application/Preordercampaign/Preordercampaign.php +++ b/application/Preordercampaign/Preordercampaign.php @@ -88,7 +88,9 @@ class Preordercampaign extends mfBaseModel { $netzgebiet_ids[] = $scluster->id; } if(count($netzgebiet_ids)) { - $total = ADBWohneinheitModel::count(['netzgebiet_id' => $netzgebiet_ids]); + foreach(ADBNetzgebietModel::search(["netzgebiet_id" => $netzgebiet_ids]) as $netzgebiet) { + $total += $netzgebiet->unit_count; + } } $this->total_homes = $total;