andre 2 سال پیش
والد
کامیت
ed3de26365
1فایلهای تغییر یافته به همراه34 افزوده شده و 33 حذف شده
  1. 34 33
      app/Http/Actions/UsageUpdate.php

+ 34 - 33
app/Http/Actions/UsageUpdate.php

@@ -7,30 +7,50 @@ namespace ThurData\Servers\KerioEmail\App\Http\Actions;
 use ThurData\Servers\KerioEmail\App\Helpers\KerioManager;
 use ThurData\Servers\KerioEmail\Core\App\Controllers\Instances\AddonController;
 use ThurData\Servers\KerioEmail\Core\Models\Whmcs;
+use ThurData\Servers\KerioEmail\Api\KerioWhmcs;
 
 class UsageUpdate extends AddonController
 {
-    protected $moduleParams;
-
     public function execute($params = null)
     {
-        $this->moduleParams = $params;
+        $api = new KerioWhmcs('whmcsKerioEmail', 'Thurdata', '1.0');
+        
+        try {
+            $api->login($params['serverhostname'], $params['serverusername'], $params['serverpassword']);
+            $domains = $api->getDomains(['id','name']);
+        } catch (KerioApiException $error) {
+            logModuleCall(
+                'kerioEmail',
+                __FUNCTION__,
+                $error,
+                'Debug Error',
+                $error->getMessage()
+            );
+            return ['error' => $error->getMessage()];
+        }
 
-        $domains =(new KerioManager())
-            ->getApiByServer($this->moduleParams['serverid'])
-            ->soap
-            ->repository()
-            ->domains()
-            ->getAll();
         foreach ($domains as $domain)
         {
             try
             {
-                $domainName = $domain->getName();
-                $usage = $this->getDomainUsage($domainName);
-                $mailboxes = $usage['mailboxes'];
-                $storage = $usage['usage'];
-                $storage = $storage == 0 ? 0 : round($storage/1024/1024);
+                $domainName = $domain['name'];
+                $domainID = $domain['id'];
+                $fields = array(
+					'loginName',
+					'fullName',
+					'consumedSize'
+                );
+                $users = $api->getUsers($fields,$domainID);
+                $mailboxes = $users['totalItems'];
+                $totalUsage = 0;
+                if ($users['totalItems'] > 0) {
+                    foreach ($users['list'] as $user) {
+                        $usage = $user['consumedSize']['value'];
+                        $totalUsage += $usage;
+                    }
+                }
+
+                $storage = $totalUsage == 0 ? 0 : round($totalUsage/1024/1024);
                 $serverId =$params['serverid'];
 
                 Whmcs\Hosting::where('server', $serverId)->where('domain', $domainName)->update(['bwusage' => $mailboxes]);
@@ -45,23 +65,4 @@ class UsageUpdate extends AddonController
 
         }
     }
-
-    private function getDomainUsage($tenant)
-    {
-        $client = (new KerioManager())
-            ->getApiByServer($this->moduleParams['serverid'])
-            ->soap
-            ->repository()
-            ->accounts;
-        $accounts = $client->getUsages($tenant);
-        $mailboxes = count($client->getMailboxes($tenant));
-        $totalUsage = 0;
-        foreach ($accounts as $account)
-        {
-            $usage = $account->getUsed();
-            $totalUsage += $usage;
-        }
-
-        return array('usage' => $totalUsage, 'mailboxes' => $mailboxes);
-    }
 }