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]);
}
}