<?php
/*
    * Created by VahabDev in Aparat Live
    * Website: https://pourfi.ir
    * Aparat Live: https://www.aparat.com/vahabdev/live
    * Aparat Channel: https://www.aparat.com/vahabdev
    * Rubika Channel: https://rubika.ir/vahabdev
    * Donate: https://reymit.ir/vahabdev
    * Telegram: https://t.me/vahabdev
*/


namespace App\Filament\Resources\Tickets\RelationManagers;

use App\Filament\Resources\Tickets\TicketResource;
use Filament\Actions\CreateAction;
use Filament\Actions\ViewAction;
use Filament\Forms\Components\Hidden;
use Filament\Forms\Components\RichEditor;
use Filament\Forms\Components\Textarea;
use Filament\Resources\RelationManagers\RelationManager;
use Filament\Tables\Table;
use Filament\Tables\Columns\TextColumn;
use Filament\Schemas\Schema;

class ReplaysRelationManager extends RelationManager
{
    protected static string $relationship = 'replays';

    protected static ?string $relatedResource = TicketResource::class;

    public function table(Table $table): Table
    {
        return $table
            ->recordTitleAttribute('message')
            ->columns([
                TextColumn::make('sender_type')->label('فرستنده')
                    ->badge()
                    ->color(fn ($record) => $record->is_admin ? 'success' : 'info'),
                TextColumn::make('message')
                    ->label('متن پیام')
                    ->wrap()
                    ->html()
                    ->formatStateUsing(fn (string $state): string => nl2br(html_entity_decode($state))),
                TextColumn::make('created_at')->label('زمان')->dateTime('H:i - Y/m/d'),
            ])
            ->headerActions([
                CreateAction::make()
                    ->label('ثبت پاسخ ادمین')
                    ->form([
                        RichEditor::make('message')->label('متن پاسخ')->required(),
                        Hidden::make('is_admin')->default(true),
                        Hidden::make('date')->default(now()),
                    ])
                    ->after(function () {
                        // آپدیت وضعیت تیکت بعد از پاسخ ادمین
                        $this->getOwnerRecord()->update(['status' => 'admin_replay']);
                    }),
            ])
            ->actions([
                // این بخش را خالی بگذارید یا دکمه‌هایی که نمی‌خواهید را حذف کنید
            ])
            ->recordAction(null) // کلیدی‌ترین خط: غیرفعال کردن اکشن هنگام کلیک روی سطر
            ->recordUrl(null);   // غیرفعال کردن لینک شدن سطر
    }
}
