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\HubspotProperties;
8use App\Http\Models\UserInfo;
9use Carbon\Carbon;
10
11class ReportingActiveUsersRequest
12{
13    /**
14     * Execute the action to get active and inactive users.
15     *
16     * @param ReportingActiveUsersRequestDTO $filter
17     * @return array
18     */
19    public function execute(ReportingActiveUsersRequestDTO $filter)
20    {
21        $users = UserInfo::select([
22            "user_id",
23            "first_name",
24            "last_name",
25            "company_group_id",
26            "company_id",
27            "deleted_at",
28            "deactivated_at",
29            "status",
30            "user_created_at",
31            "avatar"
32        ]);
33
34        // Filter by user IDs, group IDs, and subgroup IDs
35        $user_ids = array_filter(explode(",", $filter->user_ids ?? ""));
36        $group_ids = array_filter(explode(",", $filter->group_ids ?? ""));
37        $subgroup_ids = array_filter(explode(",", $filter->subgroup_ids ?? ""));
38
39        if (!empty($user_ids)) {
40            $users->whereIn("user_id", $user_ids);
41        }
42        if (!empty($group_ids)) {
43            $users->whereIn("company_group_id", $group_ids);
44        }
45        if (!empty($subgroup_ids)) {
46            $users->whereIn("company_group_id", $subgroup_ids);
47        }
48
49        $active_users_count = $users->where('status', 'Active')->orWhereNull('status')->count();
50        $inactive_users_count = $users->where('status', "!=", 'Active')->whereNotNull('status')->count();
51
52        return [
53            'active_users' => $active_users_count,
54            'inactive_users' => $inactive_users_count,
55            'with_extension_installed' => $users->where('is_any_extension_installed', true)->count(),
56            'with_extension_uninstalled' => $users->where('is_any_extension_uninstalled', true)->count(),
57        ];
58    }
59}