<?php

namespace App\Filament\Resources\CreditProducts\Schemas;

use App\Enums\CreditProductType;
use Filament\Forms\Components\Select;
use Filament\Forms\Components\Textarea;
use Filament\Forms\Components\TextInput;
use Filament\Forms\Components\Toggle;
use Filament\Schemas\Components\Section;
use Filament\Schemas\Schema;

class CreditProductForm
{
    public static function configure(Schema $schema): Schema
    {
        return $schema
            ->components([
                Section::make(__('admin.credit_products.sections.product'))
                    ->columns(2)
                    ->schema([
                        TextInput::make('name')
                            ->label(__('admin.credit_products.fields.name'))
                            ->required()
                            ->maxLength(255),
                        Select::make('type')
                            ->label(__('admin.credit_products.fields.type'))
                            ->options(CreditProductType::class)
                            ->default(CreditProductType::ONE_TIME->value)
                            ->required(),
                        TextInput::make('credits')
                            ->label(__('admin.credit_products.fields.credits'))
                            ->integer()
                            ->minValue(1)
                            ->required(),
                        TextInput::make('amount')
                            ->label(__('admin.credit_products.fields.amount'))
                            ->helperText(__('admin.credit_products.helpers.amount'))
                            ->integer()
                            ->minValue(1)
                            ->required(),
                        TextInput::make('currency')
                            ->label(__('admin.credit_products.fields.currency'))
                            ->default('eur')
                            ->required()
                            ->maxLength(3),
                        TextInput::make('sort_order')
                            ->label(__('admin.credit_products.fields.sort_order'))
                            ->integer()
                            ->default(0)
                            ->required(),
                        Textarea::make('description')
                            ->label(__('admin.credit_products.fields.description'))
                            ->rows(3)
                            ->columnSpanFull(),
                        Toggle::make('is_active')
                            ->label(__('admin.credit_products.fields.is_active'))
                            ->default(true),
                    ]),
                Section::make(__('admin.credit_products.sections.stripe'))
                    ->columns(2)
                    ->schema([
                        TextInput::make('stripe_product_id')
                            ->label(__('admin.credit_products.fields.stripe_product_id'))
                            ->maxLength(255),
                        TextInput::make('stripe_price_id')
                            ->label(__('admin.credit_products.fields.stripe_price_id'))
                            ->unique(ignoreRecord: true)
                            ->maxLength(255),
                    ]),
            ]);
    }
}
