Files
2025-07-24 16:18:27 +07:00

56 lines
2.1 KiB
PHP

<?php
namespace App\Http\Requests\Order;
use Illuminate\Foundation\Http\FormRequest;
class OrderRequest extends FormRequest
{
public function authorize(): bool
{
return true;
}
public function rules(): array
{
return [
'server_name' => 'required|string|max:255|unique:order__order_item,server_name',
'product_id' => 'required|integer',
'product_type' => 'required|integer',
'months' => 'required|integer',
'cart_id' => 'required|integer|exists:carts,id',
'os_id' => 'required|integer|exists:os,id',
'addons' => 'nullable|array',
'addons.*.qty' => 'nullable|integer|min:0',
'addons.*.price' => 'nullable|integer|min:0',
'totalPrice' => 'required|integer|min:0',
];
}
public function messages(): array
{
return [
'server_name.required' => 'Vui lòng bổ sung thêm tên miền!',
'server_name.string' => 'Tên miền phải là chuỗi ký tự.',
'server_name.max' => 'Tên miền không được vượt quá 255 ký tự.',
'server_name.unique' => 'Tên miền này đã được sử dụng, vui lòng chọn tên khác.',
'product_type.required' => 'Loại sản phẩm là bắt buộc.',
'product_type.integer' => 'Loại sản phẩm phải là số nguyên.',
'os_id.required' => 'Vui lòng chọn hệ điều hành!',
'os_id.integer' => 'Hệ điều hành phải là số nguyên.',
'os_id.exists' => 'Hệ điều hành không tồn tại.',
'addons.*.qty.min' => 'Số lượng addon phải lớn hơn hoặc bằng 0.',
'addons.*.price.min' => 'Giá addon phải lớn hơn hoặc bằng 0.',
'cart_id.required' => 'Mã giỏ hàng là bắt buộc',
'totalPrice.required' => 'Tổng giá là bắt buộc.',
'totalPrice.integer' => 'Tổng giá phải là số nguyên.',
'totalPrice.min' => 'Tổng giá phải lớn hơn hoặc bằng 0.',
];
}
}