|
|
@@ -136,9 +136,33 @@ class Dashboard extends Component
|
|
|
$startTime = microtime(true);
|
|
|
|
|
|
try {
|
|
|
- $this->activeUsers = \App\Models\Member::where('is_archived', 0)->orWhere('is_archived', NULL)->count();
|
|
|
- $this->registeredUsers = \App\Models\Member::where('current_status', 2)->count();
|
|
|
- $this->suspendedSubscriptions = \App\Models\Member::where('current_status', 1)->count();
|
|
|
+ $this->activeUsers = \App\Models\Member::query()
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
+ })->count();
|
|
|
+ $this->registeredUsers = \App\Models\Member::where('current_status', 2)
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
+ })->count();
|
|
|
+ $this->suspendedSubscriptions = \App\Models\Member::where('current_status', 1)
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
+ })->count();
|
|
|
|
|
|
Log::info('User counts loaded', [
|
|
|
'active_users' => $this->activeUsers,
|
|
|
@@ -155,22 +179,54 @@ class Dashboard extends Component
|
|
|
Log::info('Expired certificates count', ['expired_certificates' => $this->expiredCertificates]);
|
|
|
|
|
|
// Calculate changes from last month
|
|
|
- $lastMonth = now()->subMonth();
|
|
|
+ $lastMonth = now()->subMonthNoOverflow();
|
|
|
$endOfLastMonth = $lastMonth->copy()->endOfMonth();
|
|
|
|
|
|
- $lastMonthActiveUsers = \App\Models\Member::where('is_archived', false)
|
|
|
+ $lastMonthActiveUsers = \App\Models\Member::query()
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
+ })
|
|
|
->where('created_at', '<=', $endOfLastMonth)
|
|
|
->count();
|
|
|
$lastMonthRegisteredUsers = \App\Models\Member::where('current_status', 2)
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
+ })
|
|
|
->where('updated_at', '<=', $endOfLastMonth)
|
|
|
->count();
|
|
|
$lastMonthSuspendedSubscriptions = \App\Models\Member::where('current_status', 1)
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
+ })
|
|
|
->where('updated_at', '<=', $endOfLastMonth)
|
|
|
->count();
|
|
|
$lastMonthExpiredCertificates = \App\Models\Member::whereHas('certificates', function ($query) use ($endOfLastMonth) {
|
|
|
$query->where('expire_date', '<', $endOfLastMonth);
|
|
|
})->whereDoesntHave('certificates', function ($query) use ($endOfLastMonth) {
|
|
|
$query->where('expire_date', '>=', $endOfLastMonth);
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_archived', false)
|
|
|
+ ->orWhereNull('is_archived');
|
|
|
+ })
|
|
|
+ ->where(function($query) {
|
|
|
+ $query->where('is_deleted', false)
|
|
|
+ ->orWhereNull('is_deleted');
|
|
|
})->count();
|
|
|
|
|
|
$this->activeUsersChange = $this->activeUsers - $lastMonthActiveUsers;
|