D7net
Home
Console
Upload
information
Create File
Create Folder
About
Tools
:
/
home
/
forge
/
drhagerpharmacy.com
/
app
/
Traits
/
Filename :
UpdateClass.php
back
Copy
<?php namespace App\Traits; use App\Enums\GlobalConstant; use App\Http\Controllers\InstallController; use App\Models\Admin; use App\Models\AnalyticScript; use App\Models\Attachment; use App\Models\Banner; use App\Models\Brand; use App\Models\BusinessPage; use App\Models\BusinessSetting; use App\Models\Category; use App\Models\EmailTemplate; use App\Models\HelpTopic; use App\Models\LoginSetup; use App\Models\NotificationMessage; use App\Models\Order; use App\Models\OrderTransaction; use App\Models\Product; use App\Models\Setting; use App\Models\Shop; use App\Models\User; use App\Models\VendorRegistrationReason; use App\Utils\Helpers; use Exception; use Illuminate\Support\Facades\Artisan; use Illuminate\Support\Facades\DB; use Illuminate\Support\Facades\File; use Illuminate\Support\Facades\Schema; use Illuminate\Support\Facades\Storage; use Illuminate\Support\Str; trait UpdateClass { use EmailTemplateTrait, InstallationTrail; use GeneratesUniqueSlug; public function getProcessAllVersionsUpdates(): void { Artisan::call('migrate', ['--force' => true]); $this->getInsertDataOfVersion('13.0'); $this->getInsertDataOfVersion('13.1'); $this->getInsertDataOfVersion('14.0'); $this->getInsertDataOfVersion('14.1'); $this->getInsertDataOfVersion('14.2'); $this->getInsertDataOfVersion('14.3'); $this->getInsertDataOfVersion('14.3.1'); $this->getInsertDataOfVersion('14.4'); $this->getInsertDataOfVersion('14.5'); $this->getInsertDataOfVersion('14.6'); $this->getInsertDataOfVersion('14.7'); $this->getInsertDataOfVersion('14.8'); $this->getInsertDataOfVersion('14.9'); $this->getInsertDataOfVersion('15.0'); $this->getInsertDataOfVersion('15.1'); $this->getInsertDataOfVersion('15.2'); $this->getInsertDataOfVersion('15.3'); $this->getInsertDataOfVersion('15.4'); $this->getInsertDataOfVersion('15.5'); $this->getInsertDataOfVersion('15.7'); } /** * @param string $type * @param mixed $value * @return mixed */ public function businessSettingGetOrInsert(string $type, mixed $value): mixed { $result = BusinessSetting::where(['type' => $type])->first(); if (!$result) { $result = BusinessSetting::create(['type' => $type, 'value' => $value, 'updated_at' => now()]); } return $result; } public function updateOrInsertPolicy($type): mixed { $policy = BusinessSetting::where(['type' => $type])->first(); if ($policy) { $policyValue = json_decode($policy['value'], true); if (!isset($policyValue['status'])) { BusinessSetting::where(['type' => $type])->update([ 'value' => json_encode([ 'status' => 1, 'content' => $policyValue['content'] ?? $policy['value'], ]), ]); } } else { $policy = $this->businessSettingGetOrInsert(type: $type, value: json_encode(['status' => 0, 'content' => ''])); } return $policy; } public function addOrUpdateAnalyticScript(): void { $analyticScripts = [ 'meta_pixel' => [ 'name' => 'Meta Pixel', 'type' => 'meta_pixel', ], 'linkedin_insight' => [ 'name' => 'LinkedIn Insight', 'type' => 'linkedin_insight', ], 'tiktok_tag' => [ 'name' => 'TikTok Tag', 'type' => 'tiktok_tag', ], 'snapchat_tag' => [ 'name' => 'Snapchat Tag', 'type' => 'snapchat_tag', ], 'twitter_tag' => [ 'name' => 'Twitter Tag', 'type' => 'twitter_tag', ], 'pinterest_tag' => [ 'name' => 'Pinterest Tag', 'type' => 'pinterest_tag', ], 'google_tag_manager' => [ 'name' => 'Google Tag Manager', 'type' => 'google_tag_manager', ], 'google_analytics' => [ 'name' => 'Google Analytics', 'type' => 'google_analytics', ], ]; foreach ($analyticScripts as $script) { $result = AnalyticScript::where(['type' => $script['type']])->first(); if (!$result) { AnalyticScript::updateOrInsert(['type' => $script['type']], [ 'name' => $script['name'], 'type' => $script['type'], 'created_at' => now(), 'updated_at' => now(), ]); } } } public function getInsertDataOfVersion($versionNumber): void { if ($versionNumber == '13.0') { $this->businessSettingGetOrInsert(type: 'product_brand', value: 1); $this->businessSettingGetOrInsert(type: 'digital_product', value: 1); } if ($versionNumber == '13.1') { $this->updateOrInsertPolicy(type: 'refund-policy'); $this->updateOrInsertPolicy(type: 'return-policy'); $this->updateOrInsertPolicy(type: 'cancellation-policy'); $this->businessSettingGetOrInsert(type: 'offline_payment', value: json_encode(['status' => 0])); $this->businessSettingGetOrInsert(type: 'temporary_close', value: json_encode(['status' => 0])); $this->businessSettingGetOrInsert(type: 'vacation_add', value: json_encode([ 'status' => 0, 'vacation_start_date' => null, 'vacation_end_date' => null, 'vacation_note' => null ])); $this->businessSettingGetOrInsert(type: 'cookie_setting', value: json_encode([ 'status' => 0, 'cookie_text' => null ])); DB::table('colors')->whereIn('id', [16, 38, 93])->delete(); } if ($versionNumber == '14.0') { $getColors = BusinessSetting::where(['type' => 'colors'])->first(); if ($getColors) { $colors = json_decode($getColors->value, true); BusinessSetting::where('type', 'colors')->update([ 'value' => json_encode([ 'primary' => $colors['primary'], 'secondary' => $colors['secondary'], 'primary_light' => $colors['primary_light'] ?? '#CFDFFB', ]), ]); } $this->businessSettingGetOrInsert(type: 'maximum_otp_hit', value: 0); $this->businessSettingGetOrInsert(type: 'otp_resend_time', value: 0); $this->businessSettingGetOrInsert(type: 'temporary_block_time', value: 0); $this->businessSettingGetOrInsert(type: 'maximum_login_hit', value: 0); $this->businessSettingGetOrInsert(type: 'temporary_login_block_time', value: 0); // Product category id update start $products = Product::all(); foreach ($products as $product) { $categories = json_decode($product->category_ids, true); $i = 0; foreach ($categories as $category) { if ($i == 0) { $product->category_id = $category['id']; } elseif ($i == 1) { $product->sub_category_id = $category['id']; } elseif ($i == 2) { $product->sub_sub_category_id = $category['id']; } $product->save(); $i++; } } //product category id update end } if ($versionNumber == '14.1') { // default theme folder delete from resources/views folder start $folder = base_path('resources/views'); $directories = glob($folder . '/*', GLOB_ONLYDIR); foreach ($directories as $directory) { $array = explode('/', $directory); if (File::isDirectory($directory) && in_array(end($array), ['web-views', 'customer-view'])) { File::deleteDirectory($directory); } } $front_end_dir = $folder . "/layouts/front-end"; if (File::isDirectory($front_end_dir)) { File::deleteDirectory($front_end_dir); } foreach (['home.blade.php', 'welcome.blade.php'] as $file) { if (File::exists($folder . '/' . $file)) { unlink($folder . '/' . $file); } } // default theme folder delete from resources/views folder end // Apple Login Information Insert $this->businessSettingGetOrInsert(type: 'apple_login', value: json_encode([[ 'login_medium' => 'apple', 'client_id' => '', 'client_secret' => '', 'status' => 0, 'team_id' => '', 'key_id' => '', 'service_file' => '', 'redirect_url' => '', ]])); //referral code update for existing user $customers = User::whereNull('referral_code')->where('id', '!=', 0)->get(); foreach ($customers as $customer) { $customer->referral_code = Helpers::generate_referer_code(); $customer->save(); } $this->businessSettingGetOrInsert(type: 'ref_earning_status', value: 0); $this->businessSettingGetOrInsert(type: 'ref_earning_exchange_rate', value: 0); // New payment module necessary table insert try { if (!Schema::hasTable('addon_settings')) { $sql = File::get(base_path('database/migrations/addon_settings.sql')); DB::unprepared($sql); } if (!Schema::hasTable('payment_requests')) { $sql = File::get(base_path('database/migrations/payment_requests.sql')); DB::unprepared($sql); } } catch (Exception $exception) { } // Existing payment gateway data import from business setting table $this->paymentGatewayDataUpdate(); $this->sms_gateway_data_update(); $this->businessSettingGetOrInsert(type: 'guest_checkout', value: 0); $this->businessSettingGetOrInsert(type: 'minimum_order_amount', value: 0); $this->businessSettingGetOrInsert(type: 'minimum_order_amount_by_seller', value: 0); $this->businessSettingGetOrInsert(type: 'minimum_order_amount_status', value: 0); $this->businessSettingGetOrInsert(type: 'admin_login_url', value: 'admin'); $this->businessSettingGetOrInsert(type: 'employee_login_url', value: 'employee'); $this->businessSettingGetOrInsert(type: 'free_delivery_status', value: 0); $this->businessSettingGetOrInsert(type: 'free_delivery_responsibility', value: 'admin'); $this->businessSettingGetOrInsert(type: 'free_delivery_over_amount', value: 0); $this->businessSettingGetOrInsert(type: 'free_delivery_over_amount_seller', value: 0); $this->businessSettingGetOrInsert(type: 'add_funds_to_wallet', value: 0); $this->businessSettingGetOrInsert(type: 'minimum_add_fund_amount', value: 0); $this->businessSettingGetOrInsert(type: 'user_app_version_control', value: json_encode([ "for_android" => [ "status" => 1, "version" => "14.1", "link" => "" ], "for_ios" => [ "status" => 1, "version" => "14.1", "link" => "" ] ])); $this->businessSettingGetOrInsert(type: 'seller_app_version_control', value: json_encode([ "for_android" => [ "status" => 1, "version" => "14.1", "link" => "" ], "for_ios" => [ "status" => 1, "version" => "14.1", "link" => "" ] ])); $this->businessSettingGetOrInsert(type: 'delivery_man_app_version_control', value: json_encode([ "for_android" => [ "status" => 1, "version" => "14.1", "link" => "" ], "for_ios" => [ "status" => 1, "version" => "14.1", "link" => "" ] ])); // Script for theme setup for existing banner $themeName = theme_root_path(); $banners = Banner::get(); if ($banners) { foreach ($banners as $banner) { $banner->theme = $themeName; $banner->save(); } } // Current shipping responsibility add to orders table Order::query()->update(['shipping_responsibility' => getWebConfig(name: 'shipping_method')]); $this->businessSettingGetOrInsert(type: 'whatsapp', value: json_encode(['status' => 1, 'phone' => '00000000000'])); $this->businessSettingGetOrInsert(type: 'currency_symbol_position', value: 'left'); } if ($versionNumber == '14.2') { // Notification message import process $this->notification_message_import(); // Business table notification message data import in notification message table self::notification_message_processing(); // Company reliability import process $this->company_riliability_import(); } if ($versionNumber == '14.3') { $this->businessSettingGetOrInsert(type: 'app_activation', value: json_encode(['software_id' => '', 'is_active' => 0])); } if ($versionNumber == '14.3.1') { // Shop slug $shops = Shop::where('slug', 'en')->get(); if ($shops) { foreach ($shops as $shop) { $shop->slug = Str::slug($shop->name, '-') . '-' . Str::random(6); $shop->save(); } } // Translation table data update DB::table('translations')->where('translationable_type', 'LIKE', "%Product%")->update(['translationable_type' => 'App\Models\Product']); DB::table('translations')->where('translationable_type', 'LIKE', "%Brand%")->update(['translationable_type' => 'App\Models\Brand']); DB::table('translations')->where('translationable_type', 'LIKE', "%Category%")->update(['translationable_type' => 'App\Models\Category']); DB::table('translations')->where('translationable_type', 'LIKE', "%NotificationMessage%")->update(['translationable_type' => 'App\Models\NotificationMessage']); } if ($versionNumber == '14.4') { if (!NotificationMessage::where(['key' => 'product_request_approved_message'])->first()) { DB::table('notification_messages')->updateOrInsert([ 'key' => 'product_request_approved_message' ], [ 'user_type' => 'seller', 'key' => 'product_request_approved_message', 'message' => 'customize your product request approved message message', 'created_at' => now(), 'updated_at' => now() ] ); } if (!NotificationMessage::where(['key' => 'product_request_rejected_message'])->first()) { DB::table('notification_messages')->updateOrInsert([ 'key' => 'product_request_rejected_message' ], [ 'user_type' => 'seller', 'key' => 'product_request_rejected_message', 'message' => 'customize your product request rejected message message', 'created_at' => now(), 'updated_at' => now() ] ); } } if ($versionNumber == '14.5') { $this->businessSettingGetOrInsert(type: 'map_api_status', value: 1); } if ($versionNumber == '14.6') { Product::where(['product_type' => 'digital'])->update(['current_stock' => 999999999]); //priority setup and vendor registration data process $this->getPrioritySetupAndVendorRegistrationData(); if (Admin::count() > 0 && EmailTemplate::count() < 1) { $emailTemplateUserData = [ 'admin', 'customer', 'vendor', 'delivery-man', ]; foreach ($emailTemplateUserData as $key => $value) { $this->getEmailTemplateDataForUpdate($value); } } } if ($versionNumber == '14.7') { $this->businessSettingGetOrInsert(type: 'storage_connection_type', value: 'public'); $this->businessSettingGetOrInsert(type: 'google_search_console_code', value: ''); $this->businessSettingGetOrInsert(type: 'bing_webmaster_code', value: ''); $this->businessSettingGetOrInsert(type: 'baidu_webmaster_code', value: ''); $this->businessSettingGetOrInsert(type: 'yandex_webmaster_code', value: ''); InstallController::updateRobotTexFile(); } if ($versionNumber == '14.8') { $this->businessSettingGetOrInsert(type: 'firebase_otp_verification', value: json_encode(['status' => 0, 'web_api_key' => ''])); if (!LoginSetup::where(['key' => 'login_options'])->first()) { DB::table('login_setups')->updateOrInsert(['key' => 'login_options'], ['value' => json_encode([ 'manual_login' => 1, 'otp_login' => 0, 'social_login' => 1, ])]); } if (!LoginSetup::where(['key' => 'social_media_for_login'])->first() || true) { $socialMediaForLogin = [ 'google' => 0, 'facebook' => 0, 'apple' => 0, ]; $socialLogin = BusinessSetting::where(['type' => 'social_login'])->first(); $appleLogin = BusinessSetting::where(['type' => 'apple_login'])->first(); if ($socialLogin) { $socialLoginUpdate = []; foreach (json_decode($socialLogin?->value, true) as $socialLoginService) { $socialMediaForLogin[$socialLoginService['login_medium']] = (int)$socialLoginService['status']; $socialLoginService['status'] = 1; $socialLoginUpdate[] = $socialLoginService; } BusinessSetting::where(['type' => 'social_login'])->update(['value' => json_encode($socialLoginUpdate)]); } if ($appleLogin) { $appleLoginUpdate = []; foreach (json_decode($appleLogin?->value, true) as $appleLoginService) { $socialMediaForLogin[$appleLoginService['login_medium']] = (int)$appleLoginService['status']; $appleLoginService['status'] = 1; $appleLoginUpdate[] = $appleLoginService; } BusinessSetting::where(['type' => 'apple_login'])->update(['value' => json_encode($appleLoginUpdate)]); } DB::table('login_setups')->updateOrInsert(['key' => 'login_options'], ['value' => json_encode([ 'manual_login' => 1, 'otp_login' => 0, 'social_login' => $socialMediaForLogin['google'] || $socialMediaForLogin['facebook'] || $socialMediaForLogin['apple'] ? 1 : 0, ])]); DB::table('login_setups')->updateOrInsert(['key' => 'social_media_for_login'], ['value' => json_encode($socialMediaForLogin)]); } if (!LoginSetup::where(['key' => 'email_verification'])->first()) { $emailVerification = BusinessSetting::where(['type' => 'email_verification'])->first()?->value ?? 0; DB::table('login_setups')->updateOrInsert(['key' => 'email_verification'], [ 'value' => $emailVerification ? 1 : 0 ]); } if (!LoginSetup::where(['key' => 'phone_verification'])->first()) { $otpVerification = BusinessSetting::where(['type' => 'otp_verification'])->first()?->value ?? 0; DB::table('login_setups')->updateOrInsert(['key' => 'phone_verification'], [ 'value' => $otpVerification ? 1 : 0 ]); } $this->businessSettingGetOrInsert(type: 'maintenance_system_setup', value: json_encode([ 'user_app' => 0, 'user_website' => 0, 'vendor_app' => 0, 'deliveryman_app' => 0, 'vendor_panel' => 0, ])); $this->businessSettingGetOrInsert(type: 'maintenance_duration_setup', value: json_encode([ 'maintenance_duration' => "until_change", 'start_date' => null, 'end_date' => null, ])); $this->businessSettingGetOrInsert(type: 'maintenance_message_setup', value: json_encode([ 'business_number' => 1, 'business_email' => 1, 'maintenance_message' => "We are Working On Something Special", 'message_body' => "We apologize for any inconvenience. For immediate assistance, please contact with our support team", ])); $this->updateOrInsertPolicy(type: 'shipping-policy'); } if ($versionNumber == '14.9') { $this->businessSettingGetOrInsert(type: 'vendor_forgot_password_method', value: 'phone'); $this->businessSettingGetOrInsert(type: 'deliveryman_forgot_password_method', value: 'phone'); } if ($versionNumber == '15.0') { $this->businessSettingGetOrInsert(type: 'stock_clearance_product_list_priority', value: json_encode([ 'custom_sorting_status' => 0, 'sort_by' => 'latest_created', 'out_of_stock_product' => 'hide', 'temporary_close_sorting' => 'desc', ])); $this->businessSettingGetOrInsert(type: 'stock_clearance_vendor_priority', value: ''); $this->addOrUpdateAnalyticScript(); $googleTagManagerId = BusinessSetting::where(['type' => 'google_tag_manager_id'])->first()?->value; if ($googleTagManagerId) { AnalyticScript::where(['type' => 'google_tag_manager'])->update(['script_id' => $googleTagManagerId]); } $pixelAnalytics = BusinessSetting::where(['type' => 'pixel_analytics'])->first()?->value; if ($pixelAnalytics) { AnalyticScript::where(['type' => 'meta_pixel'])->update(['script_id' => $pixelAnalytics]); } $this->companyReliabilityImport(); } if ($versionNumber == '15.1') { $payMobAcceptConfig = Setting::where('key_name', 'paymob_accept')->first(); if ($payMobAcceptConfig && $payMobAcceptConfig->live_values) { $liveValues = is_array($payMobAcceptConfig->live_values) ? $payMobAcceptConfig->live_values : json_decode($payMobAcceptConfig->live_values, true); $liveValues['supported_country'] = $liveValues['supported_country'] ?? ''; $liveValues['public_key'] = $liveValues['public_key'] ?? ''; $liveValues['secret_key'] = $liveValues['secret_key'] ?? ''; Setting::where('key_name', 'paymob_accept')->update([ 'live_values' => json_encode($liveValues), 'test_values' => json_encode($liveValues), ]); } $twoFactor = Setting::where(['key_name' => '2factor', 'settings_type' => 'sms_config'])->first(); if ($twoFactor && $twoFactor->live_values) { $liveValues = is_array($twoFactor->live_values) ? $twoFactor->live_values : json_decode($twoFactor->live_values, true); $liveValues['otp_template'] = $liveValues['otp_template'] ?? 'OTP1'; Setting::where(['key_name' => '2factor', 'settings_type' => 'sms_config'])->update([ 'live_values' => json_encode($liveValues), 'test_values' => json_encode($liveValues), ]); } } if ($versionNumber == '15.2') { $this->addOrUpdateBusinessPagesData(); $this->addOrUpdateSetupGuideCacheKey(); } if ($versionNumber == '15.3') { $loyaltyPointStatus = BusinessSetting::where(['type' => 'loyalty_point_status'])->first(); $loyaltyPointEachOrder = BusinessSetting::where(['type' => 'loyalty_point_for_each_order'])->first(); if (is_null($loyaltyPointEachOrder)) { $this->businessSettingGetOrInsert(type: 'loyalty_point_for_each_order', value: $loyaltyPointStatus['value']); } if (!NotificationMessage::where(['key' => 'your_referred_customer_has_been_place_order'])->first()) { DB::table('notification_messages')->updateOrInsert([ 'key' => 'your_referred_customer_has_been_place_order' ], [ 'user_type' => 'customer', 'key' => 'your_referred_customer_has_been_place_order', 'message' => 'your referred customer has been place order', 'created_at' => now(), 'updated_at' => now() ] ); } if (!NotificationMessage::where(['key' => 'your_referred_customer_order_has_been_delivered'])->first()) { DB::table('notification_messages')->updateOrInsert([ 'key' => 'your_referred_customer_order_has_been_delivered' ], [ 'user_type' => 'customer', 'key' => 'your_referred_customer_order_has_been_delivered', 'message' => 'your referred customer order has been delivered', 'created_at' => now(), 'updated_at' => now() ] ); } User::where('email', 'walking@customer.com')->update([ 'name' => 'Walk-In Customer', 'f_name' => 'Walk-In', 'l_name' => 'Customer' ]); } if ($versionNumber == '15.4') { Product::where('product_type', 'digital')->whereNotNull('brand_id')->update(['brand_id' => null]); $shops = Shop::whereNull('slug') ->orWhereIn('slug', function ($query) { $query->select('slug') ->from('shops') ->groupBy('slug') ->havingRaw('COUNT(*) > 1'); })->get(); foreach ($shops as $shop) { $shop->slug = Str::slug($shop->name, '-') . '-' . time() . '-' . $shop->id; $shop->save(); } $inHouseShop = getInHouseShopConfig(); Banner::where('resource_type', '!=', 'custom') ->update(['resource_type' => 'custom']); if (is_file(base_path('resources/themes/' . theme_root_path() . '/public/addon/theme_routes.php'))) { try { $themeRoutes = include(base_path('resources/themes/' . theme_root_path() . '/public/addon/theme_routes.php')); if ($themeRoutes['comfortable_panel_version'] != SOFTWARE_VERSION) { $this->setEnvironmentValue(envKey: 'WEB_THEME', envValue: 'default'); } } catch (Exception $e) { } } } if ($versionNumber == '15.5') { $inHouseShop = getInHouseShopConfig(); OrderTransaction::where('seller_is', 'admin')->whereNull('shop_id')->update(['shop_id' => $inHouseShop['id']]); $vendorTransaction = OrderTransaction::where('seller_is', 'seller')->whereNull('shop_id')->get(); $getVendorShop = Shop::whereIn('seller_id', $vendorTransaction->pluck('seller_id')->unique()->toArray())->get(); foreach ($vendorTransaction as $transaction) { if (isset($getVendorShop->firstWhere('seller_id', $transaction['seller_id'])?->id)) { OrderTransaction::where(['seller_is' => 'seller', 'id' => $transaction['id']])->whereNull('shop_id')->update([ 'shop_id' => $getVendorShop->firstWhere('seller_id', $transaction['seller_id'])->id, ]); } } $orders = Order::where('total_tax_amount', 0)->whereHas('orderTransaction', function ($query) { return $query->where('tax', '>', 0); })->with(['orderTransaction'])->get(); foreach ($orders as $order) { Order::where('id', $order['id'])->update([ 'total_tax_amount' => $order?->orderTransaction?->tax ?? 0, ]); } Product::where('added_by', 'admin')->whereNull('shop_id')->update([ 'shop_id' => $inHouseShop['id'], ]); $getProducts = Product::where('added_by', 'seller')->whereNull('shop_id')->get(); $getVendorShops = Shop::whereIn('seller_id', $getProducts->pluck('user_id')->unique()->toArray())->get(); foreach ($getProducts as $product) { Product::where('added_by', 'seller')->whereNull('shop_id')->update([ 'shop_id' => $getVendorShops->firstWhere('seller_id', $product['user_id'])->id, ]); } } if ($versionNumber == '15.7') { $brands = Brand::whereNull('slug')->orWhere('slug', '')->get(); foreach ($brands as $brand) { $slug = $this->generateModelUniqueSlug(name: $brand?->name, type: 'brand', id: $brand->id); $brand->update(['slug' => $slug]); } $categories = Category::whereNull('slug')->orWhere('slug', '')->get(); foreach ($categories as $category) { $slug = $this->generateModelUniqueSlug(name: $category?->name, type: 'category', id: $category->id); $category->update(['slug' => $slug]); } } try { Artisan::call('file:permission'); } catch (Exception $e) {} if (DOMAIN_POINTED_DIRECTORY == 'public' && function_exists('shell_exec')) { shell_exec('ln -s ../resources/themes themes'); Artisan::call('storage:link'); } } public function addOrUpdateSetupGuideCacheKey(): void { $this->businessSettingGetOrInsert(type: 'setup_guide_requirements_for_admin', value: json_encode([ 'general_setup' => 0, 'shipping_method' => 0, 'language_setup' => 0, 'currency_setup' => 0, 'customer_login' => 0, 'google_map_apis' => 0, 'notification_configuration' => 0, 'digital_payment_setup' => 0, 'offline_payment_setup' => 0, 'category_setup' => Category::all()->count() > 0 ? 1 : 0, 'brand_setup' => Brand::all()->count() > 0 ? 1 : 0, 'inhouse_shop_setup' => 0, 'add_new_product' => Product::all()->count() > 0 ? 1 : 0, ])); } private function companyReliabilityImport(): void { $data = [ [ 'item' => 'delivery_info', 'title' => 'Fast Delivery all across the country', 'image' => '', 'status' => 0, ], [ 'item' => 'safe_payment', 'title' => 'Safe Payment', 'image' => '', 'status' => 0, ], [ 'item' => 'return_policy', 'title' => '7 Days Return Policy', 'image' => '', 'status' => 0, ], [ 'item' => 'authentic_product', 'title' => '100% Authentic Products', 'image' => '', 'status' => 0, ], ]; $this->businessSettingGetOrInsert(type: 'company_reliability', value: json_encode($data)); } public function addOrUpdateBusinessPagesData(): void { $defaultPages = [ 'about_us' => 'about-us', 'terms_condition' => 'terms-and-conditions', 'privacy_policy' => 'privacy-policy', 'refund-policy' => 'refund-policy', 'return-policy' => 'return-policy', 'cancellation-policy' => 'cancellation-policy', 'shipping-policy' => 'shipping-policy', ]; foreach ($defaultPages as $key => $value) { $getPage = BusinessSetting::where('type', $key)->first(); $checkPage = BusinessPage::where('slug', Str::slug($value))->first(); if (!$checkPage) { if (in_array($value, ['terms-and-conditions', 'about-us', 'privacy-policy'])) { $description = $getPage?->value ?? ''; $status = 1; } else { $decodeData = json_decode($getPage?->value ?? '', true); $description = $decodeData['content'] ?? ''; $status = $decodeData['status'] ?? 0; } if (!$getPage) { $businessPage = BusinessPage::create([ 'title' => ucwords(str_replace('-', ' ', $value)), 'slug' => Str::slug($value), 'description' => $description, 'status' => $status, 'default_status' => 1, 'created_at' => now(), 'updated_at' => now(), ]); self::getUpdateBusinessPageBanner(key: $key, businessPage: $businessPage); } } BusinessSetting::where('type', $key)->delete(); try { $pages = BusinessPage::where('slug', $value)->orderBy('id')->get(); if ($pages->count() > 1) { $idsToDelete = $pages->skip(1)->pluck('id')->toArray() ?? []; foreach ($idsToDelete as $id) { BusinessPage::where(['id' => $id])->delete(); } if (!empty($idsToDelete)) { BusinessPage::destroy($idsToDelete); } } } catch (Exception $e) { } } $downloadAppAppleStore = BusinessSetting::where(['type' => 'download_app_apple_stroe'])->first(); if ($downloadAppAppleStore) { $value = is_array($downloadAppAppleStore->value) ? json_encode($downloadAppAppleStore->value) : $downloadAppAppleStore->value; $this->businessSettingGetOrInsert(type: 'download_app_apple_store', value: $value); BusinessSetting::where(['type' => 'download_app_apple_stroe'])->delete(); } $downloadAppGoogleStore = BusinessSetting::where(['type' => 'download_app_google_stroe'])->first(); if ($downloadAppGoogleStore) { $value = is_array($downloadAppGoogleStore->value) ? json_encode($downloadAppGoogleStore->value) : $downloadAppGoogleStore->value; $this->businessSettingGetOrInsert(type: 'download_app_google_store', value: $value); BusinessSetting::where(['type' => 'download_app_google_stroe'])->delete(); } } public static function getUpdateBusinessPageBanner($key, $businessPage): void { try { $getBanner = json_decode(BusinessSetting::where('type', ('banner_' . str_replace('-', '_', $key)))->first()?->value ?? '', true)['image'] ?? ''; if (isset($getBanner['storage']) && isset($getBanner['image_name'])) { $oldPath = $getBanner['storage'] . '/banner/' . $getBanner['image_name']; $newPath = 'public/business-pages/' . $getBanner['image_name']; if (!Storage::exists('public/business-pages')) { Storage::makeDirectory('public/business-pages', 0775, true); } if (Storage::exists($oldPath)) { Storage::move($oldPath, $newPath); Attachment::create([ 'attachable_type' => 'App\Models\BusinessPage', 'attachable_id' => $businessPage->id, 'file_type' => 'banner', 'file_name' => $getBanner['image_name'], 'storage_disk' => 'public', ]); } } BusinessSetting::where('type', ('banner_' . str_replace('-', '_', $key)))->delete(); } catch (Exception $e) { } } public static function notification_message_processing(): bool { $businessNotificationMessage = [ 'order_pending_message', 'order_confirmation_msg', 'order_processing_message', 'out_for_delivery_message', 'order_delivered_message', 'order_returned_message', 'order_failed_message', 'order_canceled', 'delivery_boy_assign_message', 'delivery_boy_expected_delivery_date_message', ]; $messages = BusinessSetting::whereIn('type', $businessNotificationMessage)->get()->toArray(); $currentNotificationMessage = [ 'order_pending_message', 'order_confirmation_message', 'order_processing_message', 'out_for_delivery_message', 'order_delivered_message', 'order_returned_message', 'order_failed_message', 'order_canceled', 'new_order_assigned_message', 'expected_delivery_date', ]; foreach ($messages as $message) { $data = $message['type']; if ($data == 'order_confirmation_msg') { $data = 'order_confirmation_message'; } elseif ($data == 'delivery_boy_assign_message') { $data = 'new_order_assigned_message'; } elseif ($data == 'delivery_boy_expected_delivery_date_message') { $data = 'expected_delivery_date'; } $isTrue = in_array($data, $currentNotificationMessage); $value = json_decode($message['value'], true); $notification = NotificationMessage::where('key', $data)->first(); if ($isTrue && $notification && isset($value['message'])) { $notification->message = $value['message']; $notification->status = $value['status']; $notification->save(); } } return true; } private function sms_gateway_data_update() { try { $gatewayList = array_merge(Helpers::getDefaultSMSGateways(), [ 'twilio_sms', 'nexmo_sms', '2factor_sms', 'msg91_sms', 'releans_sms', ]); $data = BusinessSetting::whereIn('type', $gatewayList)->pluck('value', 'type')->toArray(); if ($data) { foreach ($data as $key => $value) { $decoded_value = json_decode($value, true); $additional_data = []; $gateway = $key; if ($key == 'twilio_sms') { $gateway = 'twilio'; $additional_data = [ 'sid' => $decoded_value['sid'], 'messaging_service_sid' => $decoded_value['messaging_service_sid'], 'token' => $decoded_value['token'], 'from' => $decoded_value['from'], 'otp_template' => $decoded_value['otp_template'], ]; } elseif ($key == 'nexmo_sms') { $gateway = 'nexmo'; $additional_data = [ 'api_key' => $decoded_value['api_key'], 'api_secret' => $decoded_value['api_secret'], 'from' => $decoded_value['from'], 'otp_template' => $decoded_value['otp_template'], ]; } elseif ($key == '2factor_sms') { $gateway = '2factor'; $additional_data = [ 'api_key' => $decoded_value['api_key'], ]; } elseif ($key == 'msg91_sms') { $gateway = 'msg91'; $additional_data = [ 'template_id' => $decoded_value['template_id'], 'authkey' => $decoded_value['authkey'] ?? '', ]; } elseif ($key == 'releans_sms') { $gateway = 'releans'; $additional_data = [ 'api_key' => $decoded_value['api_key'], 'from' => $decoded_value['from'], 'otp_template' => $decoded_value['otp_template'], ]; } $default_data = [ 'gateway' => $gateway, 'mode' => 'live', 'status' => $decoded_value['status'] ?? 0 ]; $credentials = json_encode(array_merge($default_data, $additional_data)); $payment_additional_data = [ 'gateway_title' => ucfirst(str_replace('_', ' ', $gateway)), 'gateway_image' => null ]; DB::table('addon_settings')->updateOrInsert(['key_name' => $gateway, 'settings_type' => 'sms_config'], [ 'key_name' => $gateway, 'live_values' => $credentials, 'test_values' => $credentials, 'settings_type' => 'sms_config', 'mode' => isset($decoded_value['status']) == 1 ? 'live' : 'test', 'is_active' => isset($decoded_value['status']) == 1 ? 1 : 0, 'additional_data' => json_encode($payment_additional_data), ]); } BusinessSetting::whereIn('type', $gatewayList)->delete(); } } catch (Exception $exception) { } return true; } private function paymentGatewayDataUpdate(): void { try { $gateway[] = ['ssl_commerz_payment']; $data = BusinessSetting::whereIn('type', GlobalConstant::DEFAULT_PAYMENT_GATEWAYS)->pluck('value', 'type')->toArray(); if ($data) { foreach ($data as $key => $value) { $gateway = $key; if ($key == 'ssl_commerz_payment') { $gateway = 'ssl_commerz'; } $decoded_value = json_decode($value, true); $data = [ 'gateway' => $gateway, 'mode' => isset($decoded_value['status']) == 1 ? 'live' : 'test' ]; $additional_data = []; if ($gateway == 'ssl_commerz') { $additional_data = [ 'status' => $decoded_value['status'], 'store_id' => $decoded_value['store_id'], 'store_password' => $decoded_value['store_password'], ]; } elseif ($gateway == 'paypal') { $additional_data = [ 'status' => $decoded_value['status'], 'client_id' => $decoded_value['paypal_client_id'], 'client_secret' => $decoded_value['paypal_secret'], ]; } elseif ($gateway == 'stripe') { $additional_data = [ 'status' => $decoded_value['status'], 'api_key' => $decoded_value['api_key'], 'published_key' => $decoded_value['published_key'], ]; } elseif ($gateway == 'razor_pay') { $additional_data = [ 'status' => $decoded_value['status'], 'api_key' => $decoded_value['razor_key'], 'api_secret' => $decoded_value['razor_secret'], ]; } elseif ($gateway == 'senang_pay') { $additional_data = [ 'status' => $decoded_value['status'], 'callback_url' => null, 'secret_key' => $decoded_value['secret_key'], 'merchant_id' => $decoded_value['merchant_id'], ]; } elseif ($gateway == 'paytabs') { $additional_data = [ 'status' => $decoded_value['status'], 'profile_id' => $decoded_value['profile_id'], 'server_key' => $decoded_value['server_key'], 'base_url' => $decoded_value['base_url'], ]; } elseif ($gateway == 'paystack') { $additional_data = [ 'status' => $decoded_value['status'], 'callback_url' => $decoded_value['paymentUrl'], 'public_key' => $decoded_value['publicKey'], 'secret_key' => $decoded_value['secretKey'], 'merchant_email' => $decoded_value['merchantEmail'], ]; } elseif ($gateway == 'paymob_accept') { $additional_data = [ 'status' => $decoded_value['status'], 'callback_url' => null, 'api_key' => $decoded_value['api_key'], 'iframe_id' => $decoded_value['iframe_id'], 'integration_id' => $decoded_value['integration_id'], 'hmac' => $decoded_value['hmac'], ]; } elseif ($gateway == 'mercadopago') { $additional_data = [ 'status' => $decoded_value['status'], 'access_token' => $decoded_value['access_token'], 'public_key' => $decoded_value['public_key'], ]; } elseif ($gateway == 'liqpay') { $additional_data = [ 'status' => $decoded_value['status'], 'private_key' => $decoded_value['public_key'], 'public_key' => $decoded_value['private_key'], ]; } elseif ($gateway == 'flutterwave') { $additional_data = [ 'status' => $decoded_value['status'], 'secret_key' => $decoded_value['secret_key'], 'public_key' => $decoded_value['public_key'], 'hash' => $decoded_value['hash'], ]; } elseif ($gateway == 'paytm') { $additional_data = [ 'status' => $decoded_value['status'], 'merchant_key' => $decoded_value['paytm_merchant_key'], 'merchant_id' => $decoded_value['paytm_merchant_mid'], 'merchant_website_link' => $decoded_value['paytm_merchant_website'], ]; } elseif ($gateway == 'bkash') { $additional_data = [ 'status' => $decoded_value['status'], 'app_key' => $decoded_value['api_key'], 'app_secret' => $decoded_value['api_secret'], 'username' => $decoded_value['username'], 'password' => $decoded_value['password'], ]; } $credentials = json_encode(array_merge($data, $additional_data)); $payment_additional_data = ['gateway_title' => ucfirst(str_replace('_', ' ', $gateway)), 'gateway_image' => null]; DB::table('addon_settings')->updateOrInsert(['key_name' => $gateway, 'settings_type' => 'payment_config'], [ 'key_name' => $gateway, 'live_values' => $credentials, 'test_values' => $credentials, 'settings_type' => 'payment_config', 'mode' => isset($decoded_value['status']) && $decoded_value['status'] == '1' ? 'live' : 'test', 'is_active' => isset($decoded_value['status']) && $decoded_value['status'] == '1' ? 1 : 0, 'additional_data' => json_encode($payment_additional_data), ]); } BusinessSetting::whereIn('type', GlobalConstant::DEFAULT_PAYMENT_GATEWAYS)->delete(); } } catch (Exception $exception) { } $addonSettings = [ [ 'id' => '42a8cad7-6736-11ee-909d-0c7a158e4469', 'key_name' => 'instamojo', 'live_values' => json_encode([ 'gateway' => 'instamojo', 'mode' => 'test', 'status' => '0', 'client_id' => '', 'client_secret' => '' ]), ], [ 'id' => 'a40991e4-6735-11ee-909d-0c7a158e4469', 'key_name' => 'phonepe', 'live_values' => json_encode([ 'gateway' => 'phonepe', 'mode' => 'test', 'status' => 0, 'merchant_id' => '', 'salt_Key' => '', 'salt_index' => '' ]), ], [ 'id' => 'cc90e5f2-6735-11ee-909d-0c7a158e4469', 'key_name' => 'cashfree', 'live_values' => json_encode([ 'gateway' => 'cashfree', 'mode' => 'test', 'status' => 0, 'client_id' => '', 'client_secret' => '' ]), ], ]; foreach ($addonSettings as $addonSetting) { if (!Setting::where(['key_name' => $addonSetting['key_name'], 'settings_type' => 'payment_config'])->first()) { Setting::create([ 'id' => $addonSetting['id'], 'key_name' => $addonSetting['key_name'], 'live_values' => $addonSetting['live_values'], 'test_values' => $addonSetting['live_values'], 'settings_type' => 'payment_config', 'mode' => 'test', 'is_active' => 0, 'created_at' => null, 'updated_at' => null, 'additional_data' => null, ]); } } } public function getPrioritySetupAndVendorRegistrationData(): void { $this->businessSettingGetOrInsert(type: 'vendor_registration_header', value: json_encode([ "title" => "Vendor Registration", "sub_title" => "Create your own store.Already have store?", "image" => "" ])); $this->businessSettingGetOrInsert(type: 'vendor_registration_sell_with_us', value: json_encode([ "title" => "Why Sell With Us", "sub_title" => "Boost your sales! Join us for a seamless, profitable experience with vast buyer reach and top-notch support. Sell smarter today!", "image" => "" ])); $this->businessSettingGetOrInsert(type: 'download_vendor_app', value: json_encode([ "title" => "Download Free Vendor App", "sub_title" => "Download our free seller app and start reaching millions of buyers on the go! Easy setup, manage listings, and boost sales anywhere.", "image" => null, "download_google_app" => null, "download_google_app_status" => 0, "download_apple_app" => null, "download_apple_app_status" => 0, ])); $this->businessSettingGetOrInsert(type: 'business_process_main_section', value: json_encode([ "title" => "3 Easy Steps To Start Selling", "sub_title" => "Start selling quickly! Register, upload your products with detailed info and images, and reach millions of buyers instantly.", "image" => "" ])); $this->businessSettingGetOrInsert(type: 'business_process_step', value: json_encode([ [ "title" => "Get Registered", "description" => "Sign up easily and create your seller account in just a few minutes. It fast and simple to get started.", "image" => "", ], [ "title" => "Upload Products", "description" => "List your products with detailed descriptions and high-quality images to attract more buyers effortlessly.", "image" => "", ], [ "title" => "Start Selling", "description" => "Go live and start reaching millions of potential buyers immediately. Watch your sales grow with our vast audience.", "image" => "", ] ] )); // Registration data insert start $vendorRegistrationReason = [ [ "title" => "Millions of Users", "description" => "Access a vast audience with millions of active users ready to buy your products.", "priority" => 1, "status" => 1, ], [ "title" => "Free Marketing", "description" => "Benefit from our extensive, no-cost marketing efforts to boost your visibility and sales.", "priority" => 2, "status" => 1, ], [ "title" => "SEO Friendly", "description" => "Enjoy enhanced search visibility with our SEO-friendly platform, driving more traffic to your listings.", "priority" => 3, "status" => 1, ], [ "title" => "24/7 Support", "description" => "Get round-the-clock support from our dedicated team to resolve any issues and assist you anytime.", "priority" => 4, "status" => 1, ], [ "title" => "Easy Onboarding", "description" => "Start selling quickly with our user-friendly onboarding process designed to get you up and running fast.", "priority" => 5, "status" => 1, ], ]; if (VendorRegistrationReason::count() < 1) { foreach ($vendorRegistrationReason as $reason) { DB::table('vendor_registration_reasons')->updateOrInsert(["title" => $reason['title']], [ "description" => $reason['description'], "priority" => $reason['priority'], "status" => $reason['status'], ]); } } // registration data insert end // faq for vendor registration start $faqVendorRegistration = [ [ "type" => "vendor_registration", "question" => "How do I register as a seller?", "answer" => 'To register, click on the "Sign Up" button, fill in your details, and verify your account via email.', 'ranking' => 1, 'status' => 1, ], [ 'type' => 'vendor_registration', 'question' => 'What are the fees for selling?', 'answer' => 'Our platform charges a small commission on each sale. There are no upfront listing fees.', 'ranking' => 2, 'status' => 1, ], [ 'type' => 'vendor_registration', 'question' => 'How do I upload products?', 'answer' => 'Log in to your seller account, go to the "Upload Products" section, and fill in the product details and images.', 'ranking' => 3, 'status' => 1, ], [ 'type' => 'vendor_registration', 'question' => 'How do I handle customer inquiries?', 'answer' => "You can manage customer inquiries directly through our platform's messaging system, ensuring quick and efficient communication.", 'ranking' => 4, 'status' => 1, ], ]; if (HelpTopic::where('type', 'vendor_registration')->count() < 5) { foreach ($faqVendorRegistration as $faq) { if (!DB::table('help_topics')->where('question', $faq['question'])->first()) { DB::table('help_topics')->insert([ "type" => $faq['type'], "question" => $faq['question'], "answer" => $faq['answer'], "ranking" => $faq['ranking'], "status" => $faq['status'], ]); } } } // faq for vendor registration start Product::where(['product_type' => 'digital'])->update(['current_stock' => 999999999]); $prioritySetupKeyArray = [ 'brand_list_priority', 'category_list_priority', 'vendor_list_priority', 'flash_deal_priority', 'featured_product_priority', 'feature_deal_priority', 'new_arrival_product_list_priority', 'top_vendor_list_priority', 'category_wise_product_list_priority', 'top_rated_product_list_priority', 'best_selling_product_list_priority', 'searched_product_list_priority', 'vendor_product_list_priority' ]; foreach ($prioritySetupKeyArray as $key => $value) { $this->businessSettingGetOrInsert(type: $value, value: ''); } } }