From 7ad852c4ef890f155f924821464ccf71a22f1c08 Mon Sep 17 00:00:00 2001 From: Frank Schubert Date: Thu, 19 Aug 2021 11:33:52 +0200 Subject: [PATCH] Changed permission checks in Order form items --- application/Network/Network.php | 55 +++++++++++++++++++++++++++ application/Order/OrderController.php | 33 ++++++---------- 2 files changed, 66 insertions(+), 22 deletions(-) diff --git a/application/Network/Network.php b/application/Network/Network.php index 14c1b3959..e783d69a7 100644 --- a/application/Network/Network.php +++ b/application/Network/Network.php @@ -30,6 +30,61 @@ class Network extends mfBaseModel { return $addresses; } + public function getAddressesByType($type) { + $addresses = []; + + $addresstypes = NetworkAddressModel::search(['network_id' => $this->id, "type" => $type]); + + + foreach($addresstypes as $at) { + if($at->type == $type) { + $addresses[$at->address_id] = $at->address; + } + } + + // check for parent addresses + foreach($addresses as $address) { + if($address->parent_id && !array_key_exists($address->id, $addresses)) { + $addresses[$address->parent_id] = new Address($address->parent_id); + } + } + + // check for child addresses + foreach($addresses as $address) { + $childs = AddressModel::search(["parent_id" => $address->id]); + foreach($childs as $child) { + if(!array_key_exists($child->id, $addresses)) { + $addresses[$child->id] = $child; + } + } + } + + + //var_dump($addresses);exit; + return $addresses; + } + + public function getAddressUsersByAddresstype($type) { + $addresses = $this->getAddressesByType($type); + if(!$addresses) { + return []; + } + + $users = []; + foreach($addresses as $address) { + $tmp_users = UserModel::search(["address_id" => $address->id]); + foreach($tmp_users as $u) { + if(!array_key_exists($u->id, $users)) { + $users[$u->id] = $u; + } + } + } + + return $users; + + + } + public function loadAddresstypes() { if(!$this->id) { return false; diff --git a/application/Order/OrderController.php b/application/Order/OrderController.php index 82af61dcd..46e6d558d 100644 --- a/application/Order/OrderController.php +++ b/application/Order/OrderController.php @@ -50,34 +50,23 @@ class OrderController extends mfBaseController { $this->layout()->set("products", ProductModel::getAll()); $this->layout()->set("terminations", TerminationModel::getAll()); } else { - // get all addresses of my networks + // get all salespartner addresses of my networks $network_ids = []; $addresses = []; + + // get users from salespartner addresses of my networks + $users = []; foreach($this->me->my_networks as $network) { $network_ids[] = $network->id; - foreach(AddressModel::byNetwork($network->id, "salespartner") as $address) { - if(!array_key_exists($address->id, $addresses)) { - $addresses[] = $address; + $tmp_users = $network->getAddressUsersByAddresstype("salespartner"); + foreach($tmp_users as $user) { + if(!in_array($user->id, $users)) { + $users[] = $user->id; } } } - - $users = []; - $user_ids = []; - foreach($addresses as $address) { - $address_id = $address->id; - if($address->parent_id) { - $address_id = $address->parent_id; - } - foreach(UserModel::search(['address_id' => $address_id]) as $user) { - if(!array_key_exists($user->id, $users)) { - $users[$user->id] = $user; - $user_ids[] = $user->id; - } - } - } - - $addresses = AddressModel::search(['create_by' => $user_ids]); + // get addresses from salespartner address' user ids + $addresses = AddressModel::search(["create_by" => $users]); $this->layout()->set("addresses", $addresses); // get terminations in my networks @@ -88,7 +77,7 @@ class OrderController extends mfBaseController { $products = []; foreach(ProductNetworkModel::search(["network_id" => $network_ids]) as $pn) { if(!array_key_exists($pn->product_id, $products)) - $products[$pn->product_id] = $pn->product; + $products[$pn->product_id] = $pn->product; } $this->layout()->set("products", $products);