Issues (374)

app/Jobs/RemoveInactiveAccounts.php (2 issues)

Severity
1
<?php
2
3
namespace App\Jobs;
4
5
use App\Models\User;
6
use Illuminate\Bus\Queueable;
7
use Illuminate\Contracts\Queue\ShouldQueue;
8
use Illuminate\Foundation\Bus\Dispatchable;
9
use Illuminate\Queue\InteractsWithQueue;
10
use Illuminate\Queue\SerializesModels;
11
12
class RemoveInactiveAccounts implements ShouldQueue
13
{
14
    use Dispatchable, InteractsWithQueue, Queueable, SerializesModels;
0 ignored issues
show
The trait Illuminate\Queue\SerializesModels requires some properties which are not provided by App\Jobs\RemoveInactiveAccounts: $collectionClass, $id, $relations, $class, $keyBy
Loading history...
The trait Illuminate\Queue\InteractsWithQueue requires some properties which are not provided by App\Jobs\RemoveInactiveAccounts: $failedWith, $releaseDelay
Loading history...
15
16
    /**
17
     * Create a new job instance.
18
     *
19
     * @return void
20
     */
21
    public function __construct()
22
    {
23
        //
24
    }
25
26
    /**
27
     * Execute the job.
28
     */
29
    public function handle(): void
30
    {
31
        $purgeDays = config('nntmux.purge_inactive_users_days');
32
        User::query()->where('roles_id', '=', 1)
33
            ->where(function ($query) use ($purgeDays) {
34
                $query->where('lastlogin', '<', now()->subDays($purgeDays))
35
                    ->orWhereNull('lastlogin');
36
            })
37
            ->where(function ($query) use ($purgeDays) {
38
                $query->where('apiaccess', '<', now()->subDays($purgeDays))
39
                    ->orWhereNull('apiaccess');
40
            })
41
            ->get()->each(function ($user) {
42
                $user->delete(); // Use soft delete instead of mass deletion
43
            });
44
    }
45
}
46