<?php
 namespace App\Http\Requests\Admin; use App\Models\Order; use Illuminate\Foundation\Http\FormRequest; class OrderStoreRequest extends FormRequest { public function authorize(): bool { return $this->user()->can('create', Order::class); } public function rules(): array { return [ 'client_id' => 'required|exists:clients,id', 'currency_id' => 'required|exists:currencies,id', 'items' => 'required|array|min:1', 'items.*.type' => 'required|in:product,domain', 'items.*.relation_id' => 'required|integer', 'items.*.description' => 'required|string|max:255', 'items.*.amount' => 'required|numeric|min:0', 'items.*.setup_amount' => 'nullable|numeric|min:0', 'items.*.quantity' => 'required|integer|min:1', 'items.*.period' => 'required|integer|min:1', 'items.*.period_type' => 'required|in:month,year', 'items.*.total_amount' => 'required|numeric|min:0', 'items.*.options' => 'nullable|array', 'subtotal' => 'required|numeric|min:0', 'tax_amount' => 'required|numeric|min:0', 'discount_amount' => 'required|numeric|min:0', 'setup_amount' => 'required|numeric|min:0', 'total_amount' => 'required|numeric|min:0', 'notes' => 'nullable|string', 'send_email' => 'boolean', 'create_invoice' => 'boolean', 'payment_method' => 'nullable|in:credit_card,bank_transfer,paypal,manual', 'due_date' => 'nullable|date', ]; } public function messages(): array { return [ 'client_id.required' => 'Müşteri seçimi zorunludur.', 'client_id.exists' => 'Seçilen müşteri bulunamadı.', 'currency_id.required' => 'Para birimi seçimi zorunludur.', 'currency_id.exists' => 'Seçilen para birimi bulunamadı.', 'items.required' => 'En az bir ürün veya domain seçilmelidir.', 'items.min' => 'En az bir ürün veya domain seçilmelidir.', 'items.*.type.required' => 'Kalem türü belirtilmelidir.', 'items.*.type.in' => 'Geçersiz kalem türü.', 'items.*.relation_id.required' => 'Ürün/domain seçimi zorunludur.', 'items.*.description.required' => 'Açıklama zorunludur.', 'items.*.amount.required' => 'Fiyat zorunludur.', 'items.*.amount.numeric' => 'Fiyat sayısal olmalıdır.', 'items.*.amount.min' => 'Fiyat 0\'dan büyük olmalıdır.', 'items.*.quantity.required' => 'Miktar zorunludur.', 'items.*.quantity.integer' => 'Miktar tam sayı olmalıdır.', 'items.*.quantity.min' => 'Miktar en az 1 olmalıdır.', 'items.*.period.required' => 'Süre zorunludur.', 'items.*.period.integer' => 'Süre tam sayı olmalıdır.', 'items.*.period.min' => 'Süre en az 1 olmalıdır.', 'items.*.period_type.required' => 'Süre tipi zorunludur.', 'items.*.period_type.in' => 'Geçersiz süre tipi.', 'items.*.total_amount.required' => 'Toplam tutar zorunludur.', 'items.*.total_amount.numeric' => 'Toplam tutar sayısal olmalıdır.', 'items.*.total_amount.min' => 'Toplam tutar 0\'dan büyük olmalıdır.', 'subtotal.required' => 'Ara toplam zorunludur.', 'tax_amount.required' => 'Vergi tutarı zorunludur.', 'discount_amount.required' => 'İndirim tutarı zorunludur.', 'setup_amount.required' => 'Kurulum ücreti zorunludur.', 'total_amount.required' => 'Toplam tutar zorunludur.', ]; } } 