<?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\Pages;

use Filament\Forms\Components\TagsInput;
use Filament\Forms\Components\Textarea;
use Filament\Pages\Page;
use App\Models\Setting;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Form;
use Filament\Actions\Action;
use Filament\Notifications\Notification;
use Filament\Forms\Contracts\HasForms;
use Filament\Forms\Concerns\InteractsWithForms;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;





class SiteSettings extends Page implements HasForms
{
    use InteractsWithForms;

    protected string $view = 'filament.pages.site-settings';


    public static function getNavigationIcon(): ?string
    {
        return 'heroicon-o-home';
    }

    public function getTitle(): string
    {
        return 'تنظیمات سایت';
    }

    public static function getNavigationLabel(): string
    {
        return 'تنظیمات سایت';
    }

    public ?array $data = [];

    public function mount(): void
    {
        $this->data = Setting::all()->pluck('value', 'name')->toArray();

        $this->form->fill($this->data);
    }

    public function form(Schema $form): Schema
    {
        return $form
            ->schema([
                Section::make('تنظیمات عمومی')
                    ->extraAttributes([
                        'style' => 'margin-bottom: 15px;',
                    ])
                    ->schema([
                        TextInput::make('site_name')
                            ->label('نام سایت'),

                        TextInput::make('site_url')
                            ->label('آدرس سایت'),

                        TextInput::make('admin_url')
                            ->label('پوشه ادمین سایت')
                        ->helperText('با تغییر این مسیر آدرس ورود به مدیریت شما نیز تغییر خواهد کرد . پس از تغییر به آدرس جدید منتقل خواهید شد و بعد از آن هربار برای ورود باید از آدرس جدید استفاده نمایید . آدرس فعلی پنل مدیریت شما :  ' . settings('site_url') . '/' . settings('admin_url')),

                        Textarea::make('site_description')
                            ->rows(3)
                            ->label('توضیحات سایت'),

                        TagsInput::make('site_tags')
                            ->label('برچسب های سایت')
                            ->separator(','),


                        TextInput::make('ZarinpalToken')
                            ->label('توکن زرین پال'),

                    ])
            ])
            ->statePath('data');
    }

    protected function getFormActions(): array
    {
        return [
            Action::make('save')
                ->label('ذخیره تغییرات')
                ->color('primary')
                ->submit('save'),
        ];
    }

    public function save(): void
    {
        $state = $this->form->getState();

        foreach ($state as $key => $value) {
            Setting::updateOrCreate(
                ['name' => $key],
                ['value' => $value]
            );
        }

        Notification::make()
            ->title('تنظیمات با موفقیت بروزرسانی شد')
            ->success()
            ->send();

        \Filament\Facades\Filament::setCurrentPanel(null);
        redirect(settings('site_url') . '/' . settings('admin_url') . '/site-settings');
    }


}
