HEX
Server: Apache/2.4.41 (Ubuntu)
System: Linux ip-172-31-42-149 5.15.0-1084-aws #91~20.04.1-Ubuntu SMP Fri May 2 07:00:04 UTC 2025 aarch64
User: ubuntu (1000)
PHP: 7.4.33
Disabled: pcntl_alarm,pcntl_fork,pcntl_waitpid,pcntl_wait,pcntl_wifexited,pcntl_wifstopped,pcntl_wifsignaled,pcntl_wifcontinued,pcntl_wexitstatus,pcntl_wtermsig,pcntl_wstopsig,pcntl_signal,pcntl_signal_get_handler,pcntl_signal_dispatch,pcntl_get_last_error,pcntl_strerror,pcntl_sigprocmask,pcntl_sigwaitinfo,pcntl_sigtimedwait,pcntl_exec,pcntl_getpriority,pcntl_setpriority,pcntl_async_signals,pcntl_unshare,
Upload Files
File: /var/www/vhost/disk-apps/demo.sports-crowd.com/app/Console/Commands/MarkOldLogs.php
<?php

namespace App\Console\Commands;

use App\ActivityLog;
use App\ErpLog;
use App\Log;
use App\Notification;
use App\SystemLog;
use Carbon\Carbon;
use Illuminate\Console\Command;

class MarkOldLogs extends Command
{
    /**
     * The name and signature of the console command.
     *
     * @var string
     */
    protected $signature = 'sportscrowd:markOldLogs';

    /**
     * The console command description.
     *
     * @var string
     */
    protected $description = 'Tarea encargada de marcar logs con más de 1 mes como eliminados (borrado lógico)';

    protected $now;

    protected $date;

    /**
     * Create a new command instance.
     *
     * @return void
     */
    public function __construct()
    {
        parent::__construct();
    }

    /**
     * Execute the console command.
     *
     * @return int
     */
    public function handle()
    {
        $this->now = Carbon::now();
        $this->date = $this->now->subMonthNoOverflow(); // Fecha de hace 1 mes
        $this->info("Marcando logs con fecha anterior a: $this->date");

        $count = $this->markSystemLogsAsDeleted();
        $this->info("Se marcaron $count system logs como eliminados lógicamente.");

        $count = $this->markLogsAsDeleted();
        $this->info("Se marcaron $count logs como eliminados lógicamente.");

        $count = $this->markErpLogsAsDeleted();
        $this->info("Se marcaron $count erp logs como eliminados lógicamente.");

        $count = $this->markActivityLogsAsDeleted();
        $this->info("Se marcaron $count activity logs como eliminados lógicamente.");

        $count = $this->markNotificationsAsDeleted();
        $this->info("Se marcaron $count notifications como eliminados lógicamente.");

        $this->info("Proceso terminado.");
        return 0;
    }

    private function markSystemLogsAsDeleted()
    {
        return SystemLog::where('created_at', '<', $this->date)
            ->whereNull('deleted_at')
            ->update(['deleted_at' => $this->now]);
    }

    private function markLogsAsDeleted()
    {
        return Log::where('created_at', '<', $this->date)
            ->whereNull('deleted_at')
            ->update(['deleted_at' => $this->now]);
    }

    private function markErpLogsAsDeleted()
    {
        return ErpLog::where('created_at', '<', $this->date)
            ->whereNull('deleted_at')
            ->update(['deleted_at' => $this->now]);
    }

    private function markActivityLogsAsDeleted()
    {
        return ActivityLog::where('created_at', '<', $this->date)
            ->whereNull('deleted_at')
            ->update(['deleted_at' => $this->now]);
    }

    private function markNotificationsAsDeleted()
    {
        return Notification::where('created_at', '<', $this->date)
            ->whereNull('deleted_at')
            ->update(['deleted_at' => $this->now]);
    }
}