<?php

namespace App\Filament\Resources;

use App\Filament\Resources\MessageTemplateResource\Pages;
use App\Models\MessageTemplate;
use Filament\Forms;
use Filament\Forms\Form;
use Filament\Resources\Resource;
use Filament\Tables;
use Filament\Tables\Table;

class MessageTemplateResource extends Resource
{
    protected static ?string $model = MessageTemplate::class;

    protected static ?string $navigationIcon = 'heroicon-o-document-duplicate';
    protected static ?string $navigationGroup = 'مدیریت مشتریان (CRM)';
    protected static ?string $navigationLabel = 'قالب‌های پیام';
    protected static ?string $modelLabel = 'قالب پیام';
    protected static ?string $pluralModelLabel = 'قالب‌های پیام';
    protected static ?int $navigationSort = 4;

    public static function form(Form $form): Form
    {
        return $form->schema([
            Forms\Components\TextInput::make('name')->label('نام قالب')->required(),
            Forms\Components\Select::make('channel')->label('کانال')
                ->options(['email' => 'ایمیل', 'sms' => 'پیامک'])->default('email')->required()->live(),
            Forms\Components\TextInput::make('subject')->label('موضوع (ایمیل)')
                ->visible(fn (Forms\Get $get) => $get('channel') === 'email')->columnSpanFull(),
            Forms\Components\Textarea::make('body')->label('متن پیام')->required()->rows(5)->columnSpanFull()
                ->helperText('می‌توانید از {name} برای نام مشتری استفاده کنید.'),
        ])->columns(2);
    }

    public static function table(Table $table): Table
    {
        return $table
            ->columns([
                Tables\Columns\TextColumn::make('name')->label('نام')->searchable(),
                Tables\Columns\TextColumn::make('channel')->label('کانال')->badge()
                    ->formatStateUsing(fn ($state) => $state === 'sms' ? 'پیامک' : 'ایمیل'),
                Tables\Columns\TextColumn::make('subject')->label('موضوع')->limit(40),
            ])
            ->actions([Tables\Actions\EditAction::make(), Tables\Actions\DeleteAction::make()]);
    }

    public static function getPages(): array
    {
        return [
            'index' => Pages\ManageMessageTemplates::route('/'),
        ];
    }
}
