<?php

namespace App\Filament\Resources\ProductResource\Pages;

use App\Filament\Resources\ProductResource;
use App\Models\ProductVariant;
use Filament\Actions;
use Filament\Forms;
use Filament\Notifications\Notification;
use Filament\Resources\Pages\EditRecord;
use Filament\Schemas\Schema;
use Illuminate\Support\Str;

class EditProduct extends EditRecord
{
    protected static string $resource = ProductResource::class;

    protected function getHeaderActions(): array
    {
        return [
            Actions\Action::make('bulk_upload')
                ->label('رفع صور جماعي')
                ->icon('heroicon-o-arrow-up-tray')
                ->color('info')
                ->form([
                    Forms\Components\FileUpload::make('images')
                        ->label('اختر الصور (يمكنك اختيار عدة صور)')
                        ->image()
                        ->multiple()
                        ->directory('variants')
                        ->disk('public')
                        ->imageResizeMode('cover')
                        ->imageResizeTargetWidth('600')
                        ->imageResizeTargetHeight('600')
                        ->maxFiles(50)
                        ->required()
                        ->helperText('ارفع حتى 50 صورة. سيتم إنشاء نقشة جديدة لكل صورة تلقائياً.'),

                    Forms\Components\TextInput::make('default_cost_price')
                        ->label('سعر التكلفة الافتراضي (ج.م)')
                        ->numeric()
                        ->prefix('ج.م')
                        ->default(30)
                        ->required(),

                    Forms\Components\TextInput::make('default_stock')
                        ->label('المخزون الافتراضي')
                        ->numeric()
                        ->default(0),
                ])
                ->action(function (array $data) {
                    $product = $this->record;
                    $images = $data['images'];
                    $costPrice = $data['default_cost_price'];
                    $stock = $data['default_stock'] ?? 0;

                    $existingCount = $product->variants()->count();
                    $created = 0;

                    foreach ($images as $imagePath) {
                        $existingCount++;
                        $fileName = pathinfo($imagePath, PATHINFO_FILENAME);
                        $patternName = Str::headline(str_replace(['-', '_'], ' ', $fileName));

                        ProductVariant::create([
                            'product_id' => $product->id,
                            'pattern_name' => $patternName ?: "نقشة {$existingCount}",
                            'image' => $imagePath,
                            'sku' => sprintf('PRD-%03d-%03d', $product->id, $existingCount),
                            'stock' => $stock,
                            'cost_price' => $costPrice,
                            'lead_time_days' => $product->fulfillment_type === 'on_demand' ? 5 : 0,
                            'is_active' => true,
                        ]);
                        $created++;
                    }

                    Notification::make()
                        ->title("تم إنشاء {$created} نقشة جديدة بنجاح!")
                        ->body("تم رفع الصور وإنشاء النقشات. يمكنك تعديل أسمائها وبياناتها من قسم النقشات أدناه.")
                        ->success()
                        ->send();
                })
                ->modalHeading('رفع صور جماعي للنقشات')
                ->modalDescription('ارفع مجموعة صور وسيتم إنشاء نقشة لكل صورة تلقائياً مع بيانات افتراضية يمكنك تعديلها لاحقاً.')
                ->modalSubmitActionLabel('رفع وإنشاء النقشات'),

            Actions\DeleteAction::make()->label('حذف'),
        ];
    }

    protected function getRedirectUrl(): string
    {
        return $this->getResource()::getUrl('index');
    }
}
