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,41 @@
<?php
namespace Modules\Authentication\Http\Requests\Auth;
use Illuminate\Foundation\Http\FormRequest;
class UserCreateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'first_name' => ['required', 'string', 'max:255', 'regex:/^[a-zA-Z\s]+$/'],
'last_name' => ['nullable', 'string', 'max:255', 'regex:/^[a-zA-Z\s]+$/'],
'email' => ['nullable', 'string', 'email', 'max:255', 'regex:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/', 'unique:users,email'],
'phone' => ['required', 'string', 'regex:/^(\+?\d{1,4}|\d{1,4})?\d{7,15}$/', 'unique:users,phone'],
'password' => ['required', 'confirmed', 'string', 'min:8'],
'role_id' => ['required', 'integer', 'exists:roles,id'],
'avatar' => ['nullable'],
];
}
public function messages()
{
return [
'email.unique' => 'The email has already been taken.',
'phone.unique' => 'The phone number has already been registered.',
'password.confirmed' => 'The password confirmation does not match.',
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,41 @@
<?php
namespace Modules\Authentication\Http\Requests\Auth;
use Illuminate\Foundation\Http\FormRequest;
class UserUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'first_name' => ['required', 'string', 'max:255', 'regex:/^[a-zA-Z\s]+$/'],
'last_name' => ['nullable', 'string', 'max:255', 'regex:/^[a-zA-Z\s]+$/'],
'email' => [
'nullable',
'string',
'email',
'max:255',
'regex:/^[a-zA-Z0-9._%+-]+@[a-zA-Z0-9.-]+\.[a-zA-Z]{2,}$/',
],
'phone' => [
'nullable',
'string',
'regex:/^(\+?\d{1,4}|\d{1,4})?\d{7,15}$/',
],
'role_id' => ['required', 'integer', 'exists:roles,id'],
'avatar' => ['nullable'],
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Modules\Authentication\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class PermissionStoreRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
];
}
public function message(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,27 @@
<?php
namespace Modules\Authentication\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class PermissionUpdateRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
];
}
public function message(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace Modules\Authentication\Http\Requests\Plan;
use Illuminate\Foundation\Http\FormRequest;
class PlanStoreRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'required|string|max:255',
'description' => 'nullable|string',
'student_limit' => 'required|integer|min:0',
'branch_limit' => 'required|integer|min:0',
'price' => 'required|numeric|min:0|max:999999.99',
'duration_days' => 'nullable|integer|min:1',
'is_custom' => 'required|boolean',
'is_free' => 'required|boolean',
'status' => 'nullable|in:0,1',
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,34 @@
<?php
namespace Modules\Authentication\Http\Requests\Plan;
use Illuminate\Foundation\Http\FormRequest;
class PlanUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'sometimes|required|string|max:255',
'description' => 'nullable|string',
'student_limit' => 'sometimes|required|integer|min:0',
'branch_limit' => 'sometimes|required|integer|min:0',
'price' => 'sometimes|required|numeric|min:0|max:999999.99',
'duration_days' => 'nullable|integer|min:1',
'is_custom' => 'sometimes|required|boolean',
'is_free' => 'sometimes|required|boolean',
'status' => 'nullable|required|in:0,1',
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,30 @@
<?php
namespace Modules\Authentication\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\Rule;
use Modules\Authentication\Models\User;
class ProfileUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*
* @return array<string, \Illuminate\Contracts\Validation\Rule|array|string>
*/
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:255'],
'email' => [
'required',
'string',
'lowercase',
'email',
'max:255',
Rule::unique(User::class)->ignore($this->user()->id),
],
];
}
}

View File

@@ -0,0 +1,44 @@
<?php
namespace Modules\Authentication\Http\Requests\Restaurant;
use Illuminate\Foundation\Http\FormRequest;
class RestaurantStoreRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => ['required', 'string', 'max:100', 'regex:/^[a-zA-Z\s]+$/u'],
'email' => [
'nullable',
'string',
'email:rfc,dns',
'max:100',
'unique:users,email', // Ensure unique email for new users
],
'phone' => [
'required',
'string',
'regex:/^(\+?\d{1,4}|\d{1,4})?\d{7,15}$/',
'unique:users,phone', // Ensure unique phone for new users
],
'restaurant_type' => ['required', 'string', 'max:100'],
'domain' => ['required', 'string', 'max:100', 'regex:/^(?!:\/\/)([a-zA-Z0-9-_]+\.)*[a-zA-Z]{2,}$/'],
'address' => ['required', 'string', 'max:191'],
'logo' => ['nullable'],
'platform' => ['nullable', 'string', 'in:WEB,APP'],
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Authentication\Http\Requests\Restaurant;
use Illuminate\Foundation\Http\FormRequest;
class RestaurantUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => ['nullable', 'string', 'max:100', 'regex:/^[a-zA-Z\s]+$/u'],
'restaurant_type' => ['nullable', 'string', 'max:100'],
'address' => ['nullable', 'string', 'max:191'],
'logo' => ['nullable'],
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Authentication\Http\Requests\RestaurantImageSAASSetting;
use Illuminate\Foundation\Http\FormRequest;
class RestaurantImageSAASSettingStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'header_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'header_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'banner_image' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Authentication\Http\Requests\RestaurantImageSAASSetting;
use Illuminate\Foundation\Http\FormRequest;
class RestaurantImageSAASSettingUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'header_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'header_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'banner_image' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Authentication\Http\Requests\RestaurantImageSetting;
use Illuminate\Foundation\Http\FormRequest;
class RestaurantImageSettingStoreRequest extends FormRequest
{
public function rules(): array
{
return [
'header_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'header_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'banner_image' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,24 @@
<?php
namespace Modules\Authentication\Http\Requests\RestaurantImageSetting;
use Illuminate\Foundation\Http\FormRequest;
class RestaurantImageSettingUpdateRequest extends FormRequest
{
public function rules(): array
{
return [
'header_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'header_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_light_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'footer_logo_dark_theme' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
'banner_image' => ['nullable', 'image', 'mimes:png,jpg,jpeg,webp', 'max:2048'],
];
}
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Modules\Authentication\Http\Requests\Role;
use Illuminate\Foundation\Http\FormRequest;
class RoleStoreRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'required',
'permissions' => 'array',
];
}
public function messages()
{
return [
'name.required' => 'Role name is required',
'permissions.array' => 'Permissions must be an array',
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,35 @@
<?php
namespace Modules\Authentication\Http\Requests\Role;
use Illuminate\Foundation\Http\FormRequest;
class RoleUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'name' => 'required',
'permissions' => 'array',
];
}
public function messages()
{
return [
'name.required' => 'Role name is required',
'permissions.array' => 'Permissions must be an array',
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Authentication\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RoleStoreRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'description' => 'nullable|string|max:255',
'permissions' => 'required|array',
];
}
public function message(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,29 @@
<?php
namespace Modules\Authentication\Http\Requests;
use Illuminate\Foundation\Http\FormRequest;
class RoleUpdateRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'name' => 'required|string|max:255',
'description' => 'nullable|string|max:255',
'permissions' => 'required|array',
];
}
public function message(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,32 @@
<?php
namespace Modules\Authentication\Http\Requests\SAASSubscription;
use Illuminate\Foundation\Http\FormRequest;
class SAASSubscriptionStoreRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'email' => [
'nullable',
'string',
'email:rfc,dns',
'max:100',
'unique:s_a_a_s_subscriptions,email', // Ensure unique email for new s_a_a_s_subscriptions
],
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,31 @@
<?php
namespace Modules\Authentication\Http\Requests\SAASSubscription;
use Illuminate\Foundation\Http\FormRequest;
class SAASSubscriptionUpdateRequest extends FormRequest
{
/**
* Get the validation rules that apply to the request.
*/
public function rules(): array
{
return [
'email' => [
'nullable',
'string',
'email:rfc,dns',
'max:100',
],
];
}
/**
* Determine if the user is authorized to make this request.
*/
public function authorize(): bool
{
return true;
}
}

View File

@@ -0,0 +1,33 @@
<?php
namespace Modules\Authentication\Http\Requests\Settings;
use Illuminate\Foundation\Http\FormRequest;
class MailConfigUpdateRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'MAIL_MAILER' => 'required|string|max:50',
'MAIL_HOST' => 'required|string|max:255',
'MAIL_PORT' => 'required|numeric',
'MAIL_USERNAME' => 'nullable|string|max:255',
'MAIL_PASSWORD' => 'nullable|string|max:255',
'MAIL_FROM_ADDRESS' => 'required|email|max:255',
'MAIL_FROM_NAME' => 'required|string|max:255',
];
}
public function message(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,70 @@
<?php
namespace Modules\Authentication\Http\Requests\Settings;
use Illuminate\Foundation\Http\FormRequest;
class SAASSettingUpdateRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'site_name' => 'nullable|string|max:255',
'site_title' => 'nullable|string|max:255',
'phone' => 'nullable|string|max:255',
'office_phone' => 'nullable|string|max:255',
'email' => 'nullable|string|max:255',
'language' => 'nullable|string|max:255',
'google_map' => 'nullable|string|max:255',
'address' => 'nullable|string|max:255',
'on_google_map' => 'nullable|string|max:255',
'currency_symbol' => 'nullable|string|max:255',
'logo' => 'nullable|string|max:255',
'disabled_website' => 'nullable|string|max:255',
'copyright_text' => 'nullable|string|max:255',
'facebook_link' => 'nullable|string|max:255',
'google_plus_link' => 'nullable|string|max:255',
'youtube_link' => 'nullable|string|max:255',
'whats_app_link' => 'nullable|string|max:255',
'twitter_link' => 'nullable|string|max:255',
'header_notice' => 'nullable|string|max:255',
'app_version' => 'nullable|string|max:255',
'app_url' => 'nullable|string|max:255',
'bkash' => 'nullable|string|max:255',
'paystack' => 'nullable|string|max:255',
'razor_pay' => 'nullable|string|max:255',
'stripe' => 'nullable|string|max:255',
'ssl_commerz' => 'nullable|string|max:255',
'pvit' => 'nullable|string|max:255',
'paypal' => 'nullable|string|max:255',
'paymob_accept' => 'nullable|string|max:255',
'flutterwave' => 'nullable|string|max:255',
'senang_pay' => 'nullable|string|max:255',
'paytm' => 'nullable|string|max:255',
'primary_color' => 'nullable|string|max:255',
'secondary_color' => 'nullable|string|max:255',
'primary_container_color' => 'nullable|string|max:255',
'dark_primary_color' => 'nullable|string|max:255',
'dark_secondary_color' => 'nullable|string|max:255',
'dark_container_color' => 'nullable|string|max:255',
'text_color' => 'nullable|string|max:255',
'dark_text_color' => 'nullable|string|max:255',
'sidebar_selected_bg_color' => 'nullable|string|max:255',
'sidebar_selected_text_color' => 'nullable|string|max:255',
'vercel_project_id' => 'nullable|string|max:255',
'vercel_token' => 'nullable|string|max:255',
];
}
public function message(): array
{
return [
//
];
}
}

View File

@@ -0,0 +1,126 @@
<?php
namespace Modules\Authentication\Http\Requests\Settings;
use Illuminate\Foundation\Http\FormRequest;
class SettingUpdateRequest extends FormRequest
{
public function authorize()
{
return true;
}
public function rules()
{
return [
'restaurant_name' => 'nullable|string|max:255',
'site_title' => 'nullable|string|max:255',
'phone' => 'nullable|string|max:255',
'email' => 'nullable|string|max:255',
'language' => 'nullable|string|max:255',
'google_map' => 'nullable|string|max:255',
'address' => 'nullable|string|max:255',
'on_google_map' => 'nullable|string|max:255',
'restaurant_code' => 'nullable|string|max:255',
'currency_symbol' => 'nullable|string|max:255',
'logo' => 'nullable|string|max:255',
'mail_type' => 'nullable|string|max:255',
'disabled_website' => 'nullable|string|max:255',
'copyright_text' => 'nullable|string|max:255',
'facebook_link' => 'nullable|string|max:255',
'google_plus_link' => 'nullable|string|max:255',
'youtube_link' => 'nullable|string|max:255',
'whats_app_link' => 'nullable|string|max:255',
'twitter_link' => 'nullable|string|max:255',
'eiin_code' => 'nullable|string|max:255',
'sms_gateway' => 'nullable|string|max:255',
'bulk_sms_api_key' => 'nullable|string|max:255',
'bulk_sms_sender_id' => 'nullable|string|max:255',
'twilio_sid' => 'nullable|string|max:255',
'twilio_token' => 'nullable|string|max:255',
'twilio_from_number' => 'nullable|string|max:255',
'header_notice' => 'nullable|string|max:255',
'app_version' => 'nullable|string|max:255',
'app_url' => 'nullable|string|max:255',
'tagline' => 'nullable|string|max:255',
'favicon' => 'nullable|string|max:255',
'theme_color' => 'nullable|string|max:255',
'background_image' => 'nullable|string|max:255',
'tax_type' => 'nullable|string|max:255',
'tax_percentage' => 'nullable|string|max:255',
'service_charge' => 'nullable|string|max:255',
'default_currency' => 'nullable|string|max:255',
'billing_prefix' => 'nullable|string|max:255',
'invoice_footer' => 'nullable|string|max:255',
'enable_kitchen_print' => 'nullable|string|max:255',
'enable_customer_copy' => 'nullable|string|max:255',
'enable_online_order' => 'nullable|string|max:255',
'delivery_charge' => 'nullable|string|max:255',
'minimum_order_amount' => 'nullable|string|max:255',
'auto_accept_order' => 'nullable|string|max:255',
'estimated_preparation_time' => 'nullable|string|max:255',
'slack_webhook_url' => 'nullable|string|max:255',
'telegram_bot_token' => 'nullable|string|max:255',
'telegram_chat_id' => 'nullable|string|max:255',
'twilio_sms_enabled' => 'nullable|string|max:255',
'email_notifications' => 'nullable|string|max:255',
'whatsapp_notifications' => 'nullable|string|max:255',
'auto_backup' => 'nullable|string|max:255',
'report_timezone' => 'nullable|string|max:255',
'data_retention_days' => 'nullable|string|max:255',
'sidebar_collapsed' => 'nullable|string|max:255',
'dark_mode' => 'nullable|string|max:255',
'default_dashboard' => 'nullable|string|max:255',
'razorpay_key' => 'nullable|string|max:255',
'razorpay_secret' => 'nullable|string|max:255',
'stripe_key' => 'nullable|string|max:255',
'stripe_secret' => 'nullable|string|max:255',
'cash_on_delivery' => 'nullable|string|max:255',
'max_table_capacity' => 'nullable|string|max:255',
'default_shift_start' => 'nullable|string|max:255',
'default_shift_end' => 'nullable|string|max:255',
'auto_logout_idle_minutes' => 'nullable|string|max:255',
'primary_color' => 'nullable|string|max:255',
'secondary_color' => 'nullable|string|max:255',
'primary_container_color' => 'nullable|string|max:255',
'dark_primary_color' => 'nullable|string|max:255',
'dark_secondary_color' => 'nullable|string|max:255',
'dark_container_color' => 'nullable|string|max:255',
'text_color' => 'nullable|string|max:255',
'dark_text_color' => 'nullable|string|max:255',
'sidebar_selected_bg_color' => 'nullable|string|max:255',
'sidebar_selected_text_color' => 'nullable|string|max:255',
'is_online' => 'nullable|string|max:255',
'latitude' => 'nullable|string|max:255',
'longitude' => 'nullable|string|max:255',
'delivery_radius_km' => 'nullable|string|max:255',
'delivery_fee' => 'nullable|string|max:255',
'delivery_partner_count' => 'nullable|string|max:255',
'delivery_time_avg' => 'nullable|string|max:255',
'pickup_enabled' => 'nullable|string|max:255',
'opening_time' => 'nullable|string|max:255',
'closing_time' => 'nullable|string|max:255',
'auto_accept_orders' => 'nullable|string|max:255',
'pre_order_enabled' => 'nullable|string|max:255',
'max_order_capacity' => 'nullable|string|max:255',
'avg_rating' => 'nullable|string|max:255',
'review_count' => 'nullable|string|max:255',
'total_orders' => 'nullable|string|max:255',
'last_order_time' => 'nullable|string|max:255',
'last_active_time' => 'nullable|string|max:255',
'loyalty_points_enabled' => 'nullable|string|max:255',
'offers_enabled' => 'nullable|string|max:255',
'social_media_links' => 'nullable',
'settings' => 'nullable',
'uuid' => 'nullable',
];
}
public function message(): array
{
return [
//
];
}
}