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,53 @@
<?php
namespace Modules\Booking\Http\Requests\Booking;
use Illuminate\Foundation\Http\FormRequest;
class BookingStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => 'required|exists:hotels,id',
'customer_id' => 'required|exists:customers,id',
'check_in' => 'required|date',
'check_out' => 'required|date|after_or_equal:check_in',
'check_in_time' => 'nullable|date_format:H:i:s',
'check_out_time' => 'nullable|date_format:H:i:s',
'total_adults' => 'required|integer|min:1',
'total_children' => 'required|integer|min:0',
'subtotal_amount' => 'required|numeric|min:0',
'tax_amount' => 'nullable|numeric|min:0',
'discount_amount' => 'nullable|numeric|min:0',
'total_amount' => 'required|numeric|min:0',
'payment_status' => 'required|in:pending,paid,refunded',
'payment_method' => 'nullable|in:cash,card,online,bank',
'channel' => 'nullable|string',
'status' => 'required|in:pending,confirmed,checked_in,checked_out,canceled',
'remarks' => 'nullable|string',
'booking_items' => 'required|array|min:1',
'booking_items.*.room_id' => 'required|exists:rooms,id',
'booking_items.*.adults' => 'required|integer|min:1',
'booking_items.*.children' => 'required|integer|min:0',
'booking_items.*.room_price' => 'required|numeric|min:0',
'booking_items.*.nights' => 'required|integer|min:1',
'booking_items.*.tax_amount' => 'nullable|numeric|min:0',
'booking_items.*.total_amount' => 'required|numeric|min:0',
'booking_items.*.status' => 'required|in:reserved,occupied,cleaning,completed,canceled',
];
}
public function messages(): array
{
return [
'booking_items.required' => 'At least one room must be added.',
'booking_items.*.room_id.exists' => 'The selected room does not exist.',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,45 @@
<?php
namespace Modules\Booking\Http\Requests\Booking;
use Illuminate\Foundation\Http\FormRequest;
class BookingUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => 'nullable|exists:hotels,id',
'customer_id' => 'nullable|exists:customers,id',
'check_in' => 'nullable|date',
'check_out' => 'nullable|date|after_or_equal:check_in',
'check_in_time' => 'nullable|date_format:H:i:s',
'check_out_time' => 'nullable|date_format:H:i:s',
'total_adults' => 'nullable|integer|min:1',
'total_children' => 'nullable|integer|min:0',
'subtotal_amount' => 'nullable|numeric|min:0',
'tax_amount' => 'nullable|numeric|min:0',
'discount_amount' => 'nullable|numeric|min:0',
'total_amount' => 'nullable|numeric|min:0',
'payment_status' => 'nullable|in:pending,paid,refunded',
'payment_method' => 'nullable|in:cash,card,online,bank',
'channel' => 'nullable|string',
'status' => 'nullable|in:pending,confirmed,checked_in,checked_out,canceled',
'remarks' => 'nullable|string',
'booking_items' => 'nullable|array|min:1',
'booking_items.*.room_id' => 'required_with:booking_items|exists:rooms,id',
'booking_items.*.adults' => 'required_with:booking_items|integer|min:1',
'booking_items.*.children' => 'required_with:booking_items|integer|min:0',
'booking_items.*.room_price' => 'required_with:booking_items|numeric|min:0',
'booking_items.*.nights' => 'required_with:booking_items|integer|min:1',
'booking_items.*.tax_amount' => 'nullable|numeric|min:0',
'booking_items.*.total_amount' => 'required_with:booking_items|numeric|min:0',
'booking_items.*.status' => 'required_with:booking_items|in:reserved,occupied,cleaning,completed,canceled',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,53 @@
<?php
namespace Modules\Booking\Http\Requests\Booking;
use Illuminate\Foundation\Http\FormRequest;
class CustomerBookingStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => 'required|exists:hotels,id',
// 'customer_id' => 'required|exists:customers,id',
'check_in' => 'required|date',
'check_out' => 'required|date|after_or_equal:check_in',
'check_in_time' => 'nullable|date_format:H:i:s',
'check_out_time' => 'nullable|date_format:H:i:s',
'total_adults' => 'required|integer|min:1',
'total_children' => 'required|integer|min:0',
'subtotal_amount' => 'required|numeric|min:0',
'tax_amount' => 'nullable|numeric|min:0',
'discount_amount' => 'nullable|numeric|min:0',
'total_amount' => 'required|numeric|min:0',
'payment_status' => 'required|in:pending,paid,refunded',
'payment_method' => 'nullable|in:cash,card,online,bank',
'channel' => 'nullable|string',
'status' => 'required|in:pending,confirmed,checked_in,checked_out,canceled',
'remarks' => 'nullable|string',
'booking_items' => 'required|array|min:1',
'booking_items.*.room_id' => 'required|exists:rooms,id',
'booking_items.*.adults' => 'required|integer|min:1',
'booking_items.*.children' => 'required|integer|min:0',
'booking_items.*.room_price' => 'required|numeric|min:0',
'booking_items.*.nights' => 'required|integer|min:1',
'booking_items.*.tax_amount' => 'nullable|numeric|min:0',
'booking_items.*.total_amount' => 'required|numeric|min:0',
'booking_items.*.status' => 'required|in:reserved,occupied,cleaning,completed,canceled',
];
}
public function messages(): array
{
return [
'booking_items.required' => 'At least one room must be added.',
'booking_items.*.room_id.exists' => 'The selected room does not exist.',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Modules\Booking\Http\Requests\Floor;
use Illuminate\Foundation\Http\FormRequest;
class FloorStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => ['required', 'exists:hotels,id'],
'name' => ['required', 'string', 'max:255'],
'level' => ['nullable', 'integer', 'min:-5', 'max:200'],
'status' => ['nullable', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,23 @@
<?php
namespace Modules\Booking\Http\Requests\Floor;
use Illuminate\Foundation\Http\FormRequest;
class FloorUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => ['required', 'exists:hotels,id'],
'name' => ['required', 'string', 'max:255'],
'level' => ['nullable', 'integer', 'min:-5', 'max:200'],
'status' => ['nullable', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Booking\Http\Requests\Hotel;
use Illuminate\Foundation\Http\FormRequest;
class HotelStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'location' => ['nullable', 'string', 'max:255'],
'email' => ['nullable', 'email', 'max:255'],
'phone' => ['nullable', 'string', 'max:30'],
'description' => ['nullable', 'string'],
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
'check_in_time' => ['nullable', 'date_format:H:i'],
'check_out_time' => ['nullable', 'date_format:H:i'],
'status' => ['required', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Booking\Http\Requests\Hotel;
use Illuminate\Foundation\Http\FormRequest;
class HotelUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'location' => ['nullable', 'string', 'max:255'],
'email' => ['nullable', 'email', 'max:255'],
'phone' => ['nullable', 'string', 'max:30'],
'description' => ['nullable', 'string'],
'latitude' => ['nullable', 'numeric', 'between:-90,90'],
'longitude' => ['nullable', 'numeric', 'between:-180,180'],
'check_in_time' => ['nullable', 'date_format:H:i'],
'check_out_time' => ['nullable', 'date_format:H:i'],
'status' => ['required', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Modules\Booking\Http\Requests\Room;
use Illuminate\Foundation\Http\FormRequest;
class RoomStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => ['required', 'integer', 'exists:hotels,id'],
'floor_id' => ['required', 'integer', 'exists:floors,id'],
'room_type_id' => ['required', 'integer', 'exists:room_types,id'],
'room_number' => ['required', 'string', 'max:50'],
'room_code' => ['nullable', 'string', 'max:100'],
'max_adults' => ['required', 'integer', 'min:1'],
'max_children' => ['required', 'integer', 'min:0'],
'has_balcony' => ['boolean'],
'has_bathtub' => ['boolean'],
'view_type' => ['nullable', 'string', 'max:50'],
'slug' => ['required', 'string', 'max:100'],
'image' => ['nullable', 'file', 'image'],
'banner_image' => ['nullable', 'file', 'image'],
'gallery_images' => ['nullable', 'array'],
'gallery_images.*' => ['file', 'image'],
'description' => ['nullable', 'string'],
'regular_price' => ['required', 'numeric', 'min:0'],
'offer_price' => ['nullable', 'numeric', 'min:0'],
'is_clean' => ['nullable', 'boolean'],
'is_available' => ['nullable', 'boolean'],
'status' => ['nullable', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,46 @@
<?php
namespace Modules\Booking\Http\Requests\Room;
use Illuminate\Foundation\Http\FormRequest;
class RoomUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => ['required', 'integer', 'exists:hotels,id'],
'floor_id' => ['required', 'integer', 'exists:floors,id'],
'room_type_id' => ['required', 'integer', 'exists:room_types,id'],
'room_number' => ['required', 'string', 'max:50'],
'room_code' => ['nullable', 'string', 'max:100'],
'max_adults' => ['required', 'integer', 'min:1'],
'max_children' => ['required', 'integer', 'min:0'],
'has_balcony' => ['boolean'],
'has_bathtub' => ['boolean'],
'view_type' => ['nullable', 'string', 'max:50'],
'slug' => ['required', 'string', 'max:100'],
'image' => ['nullable', 'file', 'image'],
'banner_image' => ['nullable', 'file', 'image'],
'gallery_images' => ['nullable', 'array'],
'gallery_images.*' => ['file', 'image'],
'description' => ['nullable', 'string'],
'regular_price' => ['required', 'numeric', 'min:0'],
'offer_price' => ['nullable', 'numeric', 'min:0'],
'is_clean' => ['nullable', 'boolean'],
'is_available' => ['nullable', 'boolean'],
'status' => ['nullable', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Modules\Booking\Http\Requests\RoomAvailability;
use Illuminate\Foundation\Http\FormRequest;
class RoomAvailabilityStoreRequest extends FormRequest
{
public function rules()
{
return [
'hotel_id' => 'required|exists:hotels,id',
'room_id' => 'required|exists:rooms,id',
'total_inventory' => 'required|integer|min:1',
'available_inventory' => 'required|integer|min:0',
'date' => 'required|date',
'is_available' => 'boolean',
'is_closed_to_arrival' => 'boolean',
'is_closed_to_departure' => 'boolean',
'base_price' => 'nullable|numeric|min:0',
'extra_adult_price' => 'nullable|numeric|min:0',
'extra_child_price' => 'nullable|numeric|min:0',
'min_stay' => 'integer|min:1',
'max_stay' => 'nullable|integer|min:1',
'blocked_by_booking_id' => 'nullable|exists:bookings,id',
'block_type' => 'in:none,booking,maintenance,manual',
'note' => 'nullable|string',
'status' => 'integer|in:0,1',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,36 @@
<?php
namespace Modules\Booking\Http\Requests\RoomAvailability;
use Illuminate\Foundation\Http\FormRequest;
class RoomAvailabilityUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => 'required|exists:hotels,id',
'room_id' => 'required|exists:rooms,id',
'total_inventory' => 'required|integer|min:1',
'available_inventory' => 'required|integer|min:0',
'date' => 'required|date',
'is_available' => 'boolean',
'is_closed_to_arrival' => 'boolean',
'is_closed_to_departure' => 'boolean',
'base_price' => 'nullable|numeric|min:0',
'extra_adult_price' => 'nullable|numeric|min:0',
'extra_child_price' => 'nullable|numeric|min:0',
'min_stay' => 'integer|min:1',
'max_stay' => 'nullable|integer|min:1',
'blocked_by_booking_id' => 'nullable|exists:bookings,id',
'block_type' => 'in:none,booking,maintenance,manual',
'note' => 'nullable|string',
'status' => 'integer|in:0,1',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Booking\Http\Requests\RoomBlock;
use Illuminate\Foundation\Http\FormRequest;
class RoomBlockStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => 'nullable|exists:hotels,id',
'room_id' => 'required|exists:rooms,id',
'start_date' => 'required|date',
'end_date' => 'required|date|after_or_equal:start_date',
'start_time' => 'nullable|date_format:H:i:s',
'end_time' => 'nullable|date_format:H:i:s|after:start_time',
'block_type' => 'required|in:maintenance,deep_clean,renovation,owner_stay,event,other',
'blocked_inventory' => 'required|integer|min:1',
'priority' => 'integer|min:1',
'reason' => 'nullable|string|max:255',
'auto_release' => 'boolean',
'created_by' => 'nullable|exists:users,id',
'status' => 'nullable|in:0,1',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Booking\Http\Requests\RoomBlock;
use Illuminate\Foundation\Http\FormRequest;
class RoomBlockUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => 'nullable|exists:hotels,id',
'room_id' => 'required|exists:rooms,id',
'start_date' => 'required|date',
'end_date' => 'required|date|after_or_equal:start_date',
'start_time' => 'nullable|date_format:H:i:s',
'end_time' => 'nullable|date_format:H:i:s|after:start_time',
'block_type' => 'required|in:maintenance,deep_clean,renovation,owner_stay,event,other',
'blocked_inventory' => 'required|integer|min:1',
'priority' => 'integer|min:1',
'reason' => 'nullable|string|max:255',
'auto_release' => 'boolean',
'created_by' => 'nullable|exists:users,id',
'status' => 'nullable|in:0,1',
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Modules\Booking\Http\Requests\RoomType;
use Illuminate\Foundation\Http\FormRequest;
class RoomTypeStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => ['required', 'exists:hotels,id'],
// Basic info
'name' => ['required', 'string', 'max:255'],
'capacity' => ['required', 'integer', 'min:1', 'max:20'],
// Room Features
'beds' => ['required', 'integer', 'min:1', 'max:10'],
'bed_type' => ['nullable', 'string', 'max:100'],
'has_ac' => ['boolean'],
'has_wifi' => ['boolean'],
'has_breakfast' => ['boolean'],
'is_refundable' => ['boolean'],
// Pricing
'base_price' => ['required', 'numeric', 'min:0'],
'weekend_price' => ['nullable', 'numeric', 'min:0'],
'extra_guest_price' => ['nullable', 'numeric', 'min:0'],
// Description
'description' => ['nullable', 'string'],
// Status
'status' => ['required', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,38 @@
<?php
namespace Modules\Booking\Http\Requests\RoomType;
use Illuminate\Foundation\Http\FormRequest;
class RoomTypeUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'hotel_id' => ['required', 'exists:hotels,id'],
// Basic info
'name' => ['required', 'string', 'max:255'],
'capacity' => ['required', 'integer', 'min:1', 'max:20'],
// Room Features
'beds' => ['required', 'integer', 'min:1', 'max:10'],
'bed_type' => ['nullable', 'string', 'max:100'],
'has_ac' => ['boolean'],
'has_wifi' => ['boolean'],
'has_breakfast' => ['boolean'],
'is_refundable' => ['boolean'],
// Pricing
'base_price' => ['required', 'numeric', 'min:0'],
'weekend_price' => ['nullable', 'numeric', 'min:0'],
'extra_guest_price' => ['nullable', 'numeric', 'min:0'],
// Description
'description' => ['nullable', 'string'],
// Status
'status' => ['required', 'integer', 'in:0,1'],
];
}
public function authorize(): bool
{
return true;
}
}