]> _ Git - cubedesigners_userdatabase.git/commitdiff
wip #3711 @1.5
authorVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 16 Jun 2020 13:28:04 +0000 (15:28 +0200)
committerVincent Vanwaelscappel <vincent@cubedesigners.com>
Tue, 16 Jun 2020 13:28:04 +0000 (15:28 +0200)
composer.json
src/Address.php
src/Company.php
src/Permissions.php [new file with mode: 0644]
src/User.php

index 6b4781ff050ed4f04c3d1d8778554306928faee6..e00443bea6da969747226e838a87cad4e75d8d23 100644 (file)
@@ -13,7 +13,7 @@
   ],
   "autoload": {
     "psr-0": {
-      "Cubedesigners\\Userdatabase\\": "src"
+      "Cubedesigners\\UserDatabase\\": "src"
     }
   },
   "authors": [
index 37e0ea61787581fe5959d61a85bb3a54b11b16ef..ddd1eb5deb49ab3c9cfbf278e2026202c016ef4d 100644 (file)
@@ -1,7 +1,7 @@
 <?php
 
 
-namespace Cubedesigners\Userdatabase;
+namespace Cubedesigners\UserDatabase;
 
 use Cubist\Backpack\app\Magic\SubForm;
 
index c44c6bdbbc06b805e937878499e65fbd386e6cf7..0556b02048d7b9f8898bff06fc087d0e7ea5f525 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-namespace Cubedesigners\Userdatabase;
+namespace Cubedesigners\UserDatabase;
 
 use Cubist\Backpack\app\Magic\Models\CubistMagicAbstractModel;
 
diff --git a/src/Permissions.php b/src/Permissions.php
new file mode 100644 (file)
index 0000000..96b4392
--- /dev/null
@@ -0,0 +1,90 @@
+<?php
+
+namespace Cubedesigners\UserDatabase;
+
+class Permissions
+{
+    protected static $_dataOk = false;
+    /**
+     * @var array[]
+     */
+    protected static $_companyUsers = [];
+    /**
+     * @var int[]
+     */
+    protected static $_usersCompany = [];
+
+    /**
+     * @var array[]
+     */
+    protected static $_managedCompanies = [];
+
+    protected static $_companyManagedBy = [];
+
+    protected function _getData()
+    {
+        if (self::$_dataOk) {
+            return;
+        }
+        self::$_dataOk = true;
+
+        foreach (User::all() as $user) {
+            if (!isset(self::$_companyUsers[$user->company])) {
+                self::$_companyUsers[$user->company] = [];
+            }
+
+            self::$_companyUsers[$user->company][] = $user->id;
+            self::$_usersCompany[$user->id] = $user->company;
+        }
+
+        foreach (Company::all() as $company) {
+            $adminCompany = self::getCompanyByUser($company->admin);
+            if ($company->id !== $adminCompany) {
+                self::$_companyManagedBy[$company->id] = [$adminCompany];
+            }
+        }
+
+        for ($i = 0; $i <= 3; $i++) {
+            foreach (self::$_companyManagedBy as $company => $admins) {
+                foreach ($admins as $admin) {
+                    if (isset(self::$_companyManagedBy[$admin])) {
+                        self::$_companyManagedBy[$company] = array_unique(array_merge(self::$_companyManagedBy[$admin], self::$_companyManagedBy[$company]), SORT_REGULAR);
+                    }
+                }
+            }
+        }
+
+        dd(self::$_companyManagedBy);
+
+
+    }
+
+    /**
+     * @param integer $company
+     * @return array
+     */
+    public static function getUsersByCompany($company)
+    {
+        self::_getData();
+        return self::$_companyUsers[$company];
+    }
+
+    /**
+     * @param integer $user
+     * @return integer
+     */
+    public static function getCompanyByUser($user)
+    {
+        self::_getData();
+        return self::$_usersCompany[$user];
+    }
+
+    /**
+     * @param integer $user
+     * @return array
+     */
+    public static function getWorkmates($user)
+    {
+        return self::getUsersByCompany(self::getCompanyByUser($user));
+    }
+}
index dd22cab24cb70016ce7671aa61d3137a5eb04d0b..9f4e0f243ca8392cc7c5719b86bd3058bf1368d3 100644 (file)
@@ -1,6 +1,6 @@
 <?php
 
-namespace Cubedesigners\Userdatabase;
+namespace Cubedesigners\UserDatabase;
 
 use Cubist\Backpack\app\Magic\Models\CubistMagicAuthenticatable;
 
@@ -83,4 +83,5 @@ class User extends CubistMagicAuthenticatable
         }
         return self::$_companyNames[$id];
     }
+
 }