'datetime', ]; private static ?bool $hasConfirmedAtColumn = null; /** سازگاری با نصب‌هایی که هنوز مایگریشن confirmed_at را اجرا نکرده‌اند */ public static function hasConfirmedAtColumn(): bool { if (self::$hasConfirmedAtColumn === null) { try { self::$hasConfirmedAtColumn = Schema::hasColumn('pargar_sync_logs', 'confirmed_at'); } catch (\Throwable) { self::$hasConfirmedAtColumn = false; } } return self::$hasConfirmedAtColumn; } protected static function booted(): void { static::created(function (self $log) { if (! in_array($log->type, [PargarSyncService::TYPE_MANDE, PargarSyncService::TYPE_DOCUMENT], true)) { return; } dispatch(function () { if (function_exists('fastcgi_finish_request')) { @fastcgi_finish_request(); } try { app(DatabaseLogPruneService::class)->prunePargarInboundOverflow(); } catch (\Throwable) { // وب‌هوک پرگار نباید به‌خاطر پاک‌سازی قطع شود } })->afterResponse(); }); } public function customer(): BelongsTo { return $this->belongsTo(Customer::class); } public function order(): BelongsTo { return $this->belongsTo(Order::class); } }