Code Coverage
 
Lines
Functions and Methods
Classes and Traits
Total
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 1
CRAP
0.00% covered (danger)
0.00%
0 / 1
ReportingActiveUsersRequest
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 1
20
0.00% covered (danger)
0.00%
0 / 1
 execute
0.00% covered (danger)
0.00%
0 / 29
0.00% covered (danger)
0.00%
0 / 1
20
1<?php
2
3namespace App\Actions;
4
5use App\DTO\ReportingActiveUsersRequestDTO;
6use App\Http\Models\Auth\User;
7use App\Http\Models\UserInfo;
8
9class ReportingActiveUsersRequest
10{
11    /**
12     * Execute the action to get active and inactive users.
13     *
14     * @return array
15     */
16    public function execute(ReportingActiveUsersRequestDTO $filter)
17    {
18        $users = UserInfo::select([
19            'user_id',
20            'first_name',
21            'last_name',
22            'company_group_id',
23            'company_id',
24            'deleted_at',
25            'deactivated_at',
26            'status',
27            'user_created_at',
28            'avatar',
29        ]);
30
31        // Filter by user IDs, group IDs, and subgroup IDs
32        $user_ids = array_filter(explode(',', $filter->user_ids ?? ''));
33        $group_ids = array_filter(explode(',', $filter->group_ids ?? ''));
34        $subgroup_ids = array_filter(explode(',', $filter->subgroup_ids ?? ''));
35
36        if (! empty($user_ids)) {
37            $users->whereIn('user_id', $user_ids);
38        }
39        if (! empty($group_ids)) {
40            $users->whereIn('company_group_id', $group_ids);
41        }
42        if (! empty($subgroup_ids)) {
43            $users->whereIn('company_group_id', $subgroup_ids);
44        }
45
46        $active_users_count = $users->where('status', 'Active')->orWhereNull('status')->count();
47        $inactive_users_count = $users->where('status', '!=', 'Active')->whereNotNull('status')->count();
48
49        return [
50            'active_users' => $active_users_count,
51            'inactive_users' => $inactive_users_count,
52            'with_extension_installed' => $users->where('is_any_extension_installed', true)->count(),
53            'with_extension_uninstalled' => $users->where('is_any_extension_uninstalled', true)->count(),
54        ];
55    }
56}