<?php

namespace App\Filament\Pages;

use Filament\Forms\Form;
use Filament\Pages\Page;
use Illuminate\Support\Facades\File;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Components\Repeater;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Notifications\Notification;
use Filament\Schemas\Components\Section;
use Filament\Forms\Concerns\InteractsWithForms;

/**
 * صفحة إدارة رسائل WhatsApp Gateway السريعة
 */
class WhatsAppQuickMessages extends Page implements HasForms
{
    use InteractsWithForms;

    protected string $view = 'filament.pages.whatsapp-quick-messages';

    protected static ?int $navigationSort = 99;

    public ?array $data = [];

    public static function getNavigationIcon(): ?string
    {
        return __('filament/admin/whats_app_quick_messages.navigation_icon');
    }

    public static function getNavigationLabel(): string
    {
        return __('filament/admin/whatsapp_settings.quick_messages');
    }

    public function getTitle(): string
    {
        return __('filament/admin/whatsapp_settings.quick_messages_title');
    }

    public static function getNavigationGroup(): ?string
    {
        return __('filament.navigation_groups.administration');
    }

    public static function canAccess(): bool
    {
        return auth()->user()?->can('manage_whatsapp_settings') ?? false;
    }

    public function mount(): void
    {
        $this->form->fill([
            'messages' => $this->getQuickMessages(),
        ]);
    }

    public function form($form)
    {
        return $form
            ->schema([
                Section::make(__('filament/admin/whatsapp_settings.quick_messages_section'))
                    ->description(__('filament/admin/whatsapp_settings.quick_messages_description'))
                    ->schema([
                        Repeater::make('messages')
                            ->label(__('filament/admin/whatsapp_settings.messages_list'))
                            ->schema([
                                TextInput::make('key')
                                    ->label(__('filament/admin/whatsapp_settings.message_key'))
                                    ->required()
                                    ->unique(ignoreRecord: true)
                                    ->helperText(__('filament/admin/whatsapp_settings.message_key_help')),
                                TextInput::make('label')
                                    ->label(__('filament/admin/whatsapp_settings.message_label'))
                                    ->required()
                                    ->helperText(__('filament/admin/whatsapp_settings.message_label_help')),
                                Textarea::make('template')
                                    ->label(__('filament/admin/whatsapp_settings.message_template'))
                                    ->required()
                                    ->rows(3)
                                    ->helperText(__('filament/admin/whatsapp_settings.message_template_help')),
                            ])
                            ->columns(1)
                            ->collapsible()
                            ->itemLabel(fn(array $state): ?string => $state['label'] ?? null)
                            ->addActionLabel(__('filament/admin/whatsapp_settings.add_message'))
                            ->defaultItems(0)
                            ->reorderable(),
                    ]),
            ])
            ->statePath('data');
    }

    protected function getQuickMessages(): array
    {
        $messages = config('whatsapp-gateway.quick_messages', []);
        $result = [];

        foreach ($messages as $key => $template) {
            $result[] = [
                'key' => $key,
                'label' => ucfirst(str_replace('_', ' ', $key)),
                'template' => $template,
            ];
        }

        return $result;
    }

    public function save(): void
    {
        $data = $this->form->getState();
        $messages = [];

        foreach ($data['messages'] as $message) {
            $messages[$message['key']] = $message['template'];
        }

        // حفظ في ملف config
        $configPath = config_path('whatsapp-gateway.php');
        $content = File::get($configPath);

        // استبدال quick_messages
        $newMessages = var_export($messages, true);
        $pattern = "/'quick_messages'\s*=>\s*\[[\s\S]*?\],/";
        $replacement = "'quick_messages' => " . $newMessages . ",";

        $content = preg_replace($pattern, $replacement, $content);

        File::put($configPath, $content);

        // مسح الـ cache
        \Artisan::call('config:clear');

        Notification::make()
            ->success()
            ->title(__('filament/admin/whatsapp_settings.messages_saved'))
            ->send();
    }

    protected function getFormActions(): array
    {
        return [
            \Filament\Actions\Action::make('save')
                ->label(__('filament/admin/whats_app_quick_messages.save'))
                ->action('save')
                ->color('primary'),
        ];
    }
}
