Advertisement
X1ucifer

Untitled

Sep 26th, 2024
269
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. <?php
  2.  
  3. namespace App\Services\Admin;
  4.  
  5. use App\Models\File;
  6. use App\Models\Folder;
  7. use App\Models\User;
  8. use Illuminate\Support\Facades\Auth; // Make sure to import Auth if not already imported
  9. use Common\Admin\Analytics\Actions\GetAnalyticsHeaderDataAction;
  10. use Common\Database\Metrics\ValueMetric;
  11.  
  12. class GetAnalyticsHeaderData implements GetAnalyticsHeaderDataAction
  13. {
  14.     public function execute(array $params): array
  15.     {
  16.         // Get the current user's ID
  17.         $currentUserId = Auth::id();
  18.         $usersEmplyeesId =  User::query()
  19.             ->where('admin_user_id', $currentUserId)
  20.             ->pluck('id');
  21.  
  22.         $currentUser = User::find($currentUserId);
  23.         $isSuperAdmin = $currentUser->user_type === 'super_admin';
  24.  
  25.         // (new ValueMetric(
  26.         //     Folder::withTrashed(),
  27.         //     dateRange: $params['dateRange'],
  28.         // ))->count(), //old folder count logic
  29.  
  30.  
  31.         $newFoldersCount = (new ValueMetric(
  32.             Folder::withTrashed()
  33.                 ->when(!$isSuperAdmin, function ($query) use ($currentUserId, $usersEmplyeesId) {
  34.                     // Apply filters only if not super_admin
  35.                     $query->where('owner_id', $currentUserId)
  36.                           ->orWhereIn('owner_id', $usersEmplyeesId);
  37.                 }),
  38.             dateRange: $params['dateRange'],
  39.         ))->count();
  40.  
  41.         return [
  42.             array_merge(
  43.                 [
  44.                     'icon' => [
  45.                         [
  46.                             'tag' => 'path',
  47.                             'attr' => [
  48.                                 'd' =>
  49.                                 'M16 1H4c-1.1 0-2 .9-2 2v14h2V3h12V1zm3 4H8c-1.1 0-2 .9-2 2v14c0 1.1.9 2 2 2h11c1.1 0 2-.9 2-2V7c0-1.1-.9-2-2-2zm0 16H8V7h11v14z',
  50.                             ],
  51.                         ],
  52.                     ],
  53.                     'name' => __('New files'),
  54.                 ],
  55.                 (new ValueMetric(
  56.                     File::withTrashed()
  57.                         ->when(!$isSuperAdmin, function ($query) use ($currentUserId, $usersEmplyeesId) {
  58.                             // Apply filters only if not super_admin
  59.                             $query->where('owner_id', $currentUserId)
  60.                                   ->orWhereIn('owner_id', $usersEmplyeesId);
  61.                         }),
  62.                     dateRange: $params['dateRange'],
  63.                 ))->count(),
  64.             ),
  65.             array_merge(
  66.                 [
  67.                     'icon' => [
  68.                         [
  69.                             'tag' => 'path',
  70.                             'attr' => [
  71.                                 'd' =>
  72.                                 'M20 6h-8l-2-2H4c-1.1 0-1.99.9-1.99 2L2 18c0 1.1.9 2 2 2h16c1.1 0 2-.9 2-2V8c0-1.1-.9-2-2-2zm0 12H4V8h16v10z',
  73.                             ],
  74.                         ],
  75.                     ],
  76.                     'name' => __('New folders'),
  77.                 ],
  78.                 $newFoldersCount,
  79.             ),
  80.             array_merge(
  81.                 [
  82.                     'icon' => [
  83.                         [
  84.                             'tag' => 'path',
  85.                             'attr' => [
  86.                                 'd' =>
  87.                                 'M9 13.75c-2.34 0-7 1.17-7 3.5V19h14v-1.75c0-2.33-4.66-3.5-7-3.5zM4.34 17c.84-.58 2.87-1.25 4.66-1.25s3.82.67 4.66 1.25H4.34zM9 12c1.93 0 3.5-1.57 3.5-3.5S10.93 5 9 5 5.5 6.57 5.5 8.5 7.07 12 9 12zm0-5c.83 0 1.5.67 1.5 1.5S9.83 10 9 10s-1.5-.67-1.5-1.5S8.17 7 9 7zm7.04 6.81c1.16.84 1.96 1.96 1.96 3.44V19h4v-1.75c0-2.02-3.5-3.17-5.96-3.44zM15 12c1.93 0 3.5-1.57 3.5-3.5S16.93 5 15 5c-.54 0-1.04.13-1.5.35.63.89 1 1.98 1 3.15s-.37 2.26-1 3.15c.46.22.96.35 1.5.35z',
  88.                             ],
  89.                         ],
  90.                     ],
  91.                     'name' => __('New users'),
  92.                 ],
  93.                 // Here is the updated metric for new users
  94.                 (new ValueMetric(
  95.                     User::query()
  96.                         ->when(!$isSuperAdmin, function ($query) use ($currentUserId) {
  97.                             $query->where('admin_user_id', $currentUserId)
  98.                                   ->where('user_type', '!=', 'super_admin');
  99.                         }),
  100.                     dateRange: $params['dateRange'],
  101.                 ))->count(),
  102.             ),
  103.             array_merge(
  104.                 [
  105.                     'icon' => [
  106.                         [
  107.                             'tag' => 'path',
  108.                             'attr' => [
  109.                                 'd' =>
  110.                                 'M2 20h20v-4H2v4zm2-3h2v2H4v-2zM2 4v4h20V4H2zm4 3H4V5h2v2zm-4 7h20v-4H2v4zm2-3h2v2H4v-2z',
  111.                             ],
  112.                         ],
  113.                     ],
  114.                     'name' => __('Total Space Used'),
  115.                     'type' => 'fileSize',
  116.                 ],
  117.                 (new ValueMetric(
  118.                     File::query(),
  119.                     dateRange: $params['dateRange'],
  120.                     column: 'file_size',
  121.                 ))->sum(),
  122.             ),
  123.         ];
  124.     }
  125. }
  126.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement