migrate to gtea from bistbucket

This commit is contained in:
2026-03-15 17:08:23 +07:00
commit 129ca2260c
3716 changed files with 566316 additions and 0 deletions

View File

@@ -0,0 +1,66 @@
<?php
namespace Modules\Restaurant\Http\Requests\Order;
use App\Enum\OrderStatus;
use App\Enum\OrderType;
use Illuminate\Foundation\Http\FormRequest;
class CustomerOrderStoreRequest extends FormRequest
{
public function rules(): array
{
return [
// 🔹 Core order fields
'order_type' => 'required|in:'.implode(',', OrderType::values()),
'status' => 'nullable|in:'.implode(',', OrderStatus::values()),
'table_id' => 'nullable|exists:tables,id',
'waiter_id' => 'nullable|exists:users,id',
'driver_id' => 'nullable|exists:users,id',
'customer_id' => 'nullable|exists:customers,id',
// 🔹 Order identification
'order_number' => 'nullable|string|max:50|unique:orders,order_number',
'reference' => 'nullable|string|max:100',
// 🔹 Customer info
'customer_name' => 'nullable|string|max:255',
'customer_phone' => 'nullable|string|max:20',
'delivery_address' => 'nullable|string|max:500',
// 🔹 Financials
'subtotal' => 'nullable|numeric|min:0',
'discount' => 'nullable|numeric|min:0',
'tax' => 'nullable|numeric|min:0',
'service_charge' => 'nullable|numeric|min:0',
'tip_amount' => 'nullable|numeric|min:0',
'grand_total' => 'required|numeric|min:0',
// 🔹 Payment
'payment_method_id' => 'required|exists:payment_methods,id',
'payment_status' => 'nullable|boolean',
'payment_reference' => 'nullable|string|max:100',
'paid_at' => 'nullable|date',
// 🔹 Operational
'order_source' => 'nullable|in:POS,Web,MobileApp,ThirdParty',
'estimated_ready_time' => 'nullable|date',
'delivered_at' => 'nullable|date',
// 🔹 Items (nested validation)
'items.*.food_variant_id' => 'nullable|exists:food_variants,id',
'items.*.addons' => 'nullable|array',
'items.*.addons.*.name' => 'nullable|string|max:255',
'items.*.addons.*.price' => 'nullable|numeric|min:0',
// 🔹 Audit
'added_by' => 'nullable|exists:users,id',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace Modules\Restaurant\Http\Requests\Order;
use App\Enum\OrderStatus;
use App\Enum\OrderType;
use Illuminate\Foundation\Http\FormRequest;
class CustomerOrderUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
// 🔹 Core order fields
'order_type' => 'required|in:'.implode(',', OrderType::values()),
'status' => 'nullable|in:'.implode(',', OrderStatus::values()),
'table_id' => 'nullable|exists:tables,id',
'waiter_id' => 'nullable|exists:users,id',
'driver_id' => 'nullable|exists:users,id',
'customer_id' => 'nullable|exists:customers,id',
// 🔹 Order identification
'order_number' => 'nullable|string|max:50|unique:orders,order_number',
'reference' => 'nullable|string|max:100',
// 🔹 Customer info
'customer_name' => 'nullable|string|max:255',
'customer_phone' => 'nullable|string|max:20',
'delivery_address' => 'nullable|string|max:500',
// 🔹 Financials
'subtotal' => 'nullable|numeric|min:0',
'discount' => 'nullable|numeric|min:0',
'tax' => 'nullable|numeric|min:0',
'service_charge' => 'nullable|numeric|min:0',
'tip_amount' => 'nullable|numeric|min:0',
'grand_total' => 'required|numeric|min:0',
// 🔹 Payment
'payment_method_id' => 'required|exists:payment_methods,id',
'payment_status' => 'nullable|boolean',
'payment_reference' => 'nullable|string|max:100',
'paid_at' => 'nullable|date',
// 🔹 Operational
'order_source' => 'nullable|in:POS,Web,MobileApp,ThirdParty',
'estimated_ready_time' => 'nullable|date',
'delivered_at' => 'nullable|date',
// 🔹 Items (nested validation)
'items' => 'required|array|min:1',
'items.*.food_item_id' => 'required|exists:food_items,id',
'items.*.quantity' => 'required|integer|min:1',
'items.*.price' => 'required|numeric|min:0',
// 🔹 Audit
'updated_by' => 'nullable|exists:users,id',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace Modules\Restaurant\Http\Requests\Order;
use App\Enum\OrderStatus;
use App\Enum\OrderType;
use Illuminate\Foundation\Http\FormRequest;
class OrderStoreRequest extends FormRequest
{
public function rules(): array
{
return [
// 🔹 Core order fields
'order_type' => 'required|in:'.implode(',', OrderType::values()),
'status' => 'required|in:'.implode(',', OrderStatus::values()),
'table_id' => 'nullable|exists:tables,id',
'waiter_id' => 'nullable|exists:users,id',
'driver_id' => 'nullable|exists:users,id',
'customer_id' => 'nullable|exists:customers,id',
// 🔹 Order identification
'order_number' => 'nullable|string|max:50|unique:orders,order_number',
'reference' => 'nullable|string|max:100',
// 🔹 Customer info
'customer_name' => 'nullable|string|max:255',
'customer_phone' => 'nullable|string|max:20',
'delivery_address' => 'nullable|string|max:500',
// 🔹 Financials
'subtotal' => 'nullable|numeric|min:0',
'discount' => 'nullable|numeric|min:0',
'tax' => 'nullable|numeric|min:0',
'service_charge' => 'nullable|numeric|min:0',
'tip_amount' => 'nullable|numeric|min:0',
'grand_total' => 'required|numeric|min:0',
// 🔹 Payment
'payment_method_id' => 'required|exists:payment_methods,id',
'payment_status' => 'nullable|boolean',
'payment_reference' => 'nullable|string|max:100',
'paid_at' => 'nullable|date',
// 🔹 Operational
'order_source' => 'nullable|in:POS,Web,MobileApp,ThirdParty',
'estimated_ready_time' => 'nullable|date',
'delivered_at' => 'nullable|date',
// 🔹 Items (nested validation)
'items.*.food_variant_id' => 'nullable|exists:food_variants,id',
'items.*.addons' => 'nullable|array',
'items.*.addons.*.name' => 'nullable|string|max:255',
'items.*.addons.*.price' => 'nullable|numeric|min:0',
// 🔹 Audit
'added_by' => 'nullable|exists:users,id',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,66 @@
<?php
namespace Modules\Restaurant\Http\Requests\Order;
use App\Enum\OrderStatus;
use App\Enum\OrderType;
use Illuminate\Foundation\Http\FormRequest;
class OrderUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
// 🔹 Core order fields
'order_type' => 'required|in:'.implode(',', OrderType::values()),
'status' => 'required|in:'.implode(',', OrderStatus::values()),
'table_id' => 'nullable|exists:tables,id',
'waiter_id' => 'nullable|exists:users,id',
'driver_id' => 'nullable|exists:users,id',
'customer_id' => 'nullable|exists:customers,id',
// 🔹 Order identification
'order_number' => 'nullable|string|max:50|unique:orders,order_number',
'reference' => 'nullable|string|max:100',
// 🔹 Customer info
'customer_name' => 'nullable|string|max:255',
'customer_phone' => 'nullable|string|max:20',
'delivery_address' => 'nullable|string|max:500',
// 🔹 Financials
'subtotal' => 'nullable|numeric|min:0',
'discount' => 'nullable|numeric|min:0',
'tax' => 'nullable|numeric|min:0',
'service_charge' => 'nullable|numeric|min:0',
'tip_amount' => 'nullable|numeric|min:0',
'grand_total' => 'required|numeric|min:0',
// 🔹 Payment
'payment_method_id' => 'required|exists:payment_methods,id',
'payment_status' => 'nullable|boolean',
'payment_reference' => 'nullable|string|max:100',
'paid_at' => 'nullable|date',
// 🔹 Operational
'order_source' => 'nullable|in:POS,Web,MobileApp,ThirdParty',
'estimated_ready_time' => 'nullable|date',
'delivered_at' => 'nullable|date',
// 🔹 Items (nested validation)
'items' => 'required|array|min:1',
'items.*.food_item_id' => 'required|exists:food_items,id',
'items.*.quantity' => 'required|integer|min:1',
'items.*.price' => 'required|numeric|min:0',
// 🔹 Audit
'updated_by' => 'nullable|exists:users,id',
];
}
public function authorize(): bool
{
return true;
}
}