// Bio Link Routes (Must come FIRST for subdomains!)
require __DIR__.'/biolink.php';
ΓΈ
use Illuminate\Support\Facades\Route;
use App\helper\helper;
use App\Http\Controllers\admin\AdminController;
use App\Http\Controllers\SitemapController;
use App\Http\Controllers\RobotsTxtController;
use App\Http\Controllers\admin\PlanPricingController;
use App\Http\Controllers\admin\CategoryController;
use App\Http\Controllers\admin\SubCategoryController;
use App\Http\Controllers\admin\ProductController;
use App\Http\Controllers\admin\PaymentController;
use App\Http\Controllers\admin\StoreCategoryController;
use App\Http\Controllers\admin\TransactionController;
use App\Http\Controllers\admin\BannerController;
use App\Http\Controllers\Addons\included\BlogController;
use App\Http\Controllers\admin\HowItWorkController;
use App\Http\Controllers\admin\ThemeController;
use App\Http\Controllers\admin\VendorController;
use App\Http\Controllers\admin\VendorWizardController;
use App\Http\Controllers\admin\OrderController;
use App\Http\Controllers\admin\GlobalExtrasController;
use App\Http\Controllers\admin\SystemAddonsController;
use App\Http\Controllers\admin\OtherPagesController;
use App\Http\Controllers\admin\WhoWeAreController;
use App\Http\Controllers\admin\FeaturesController;
use App\Http\Controllers\admin\WebSettingsController;
use App\Http\Controllers\admin\TaxController;
use App\Http\Controllers\admin\TopdealsController;
use App\Http\Controllers\admin\MarketplaceController;
use App\Http\Controllers\Admin\AdminAddonController;
use App\Http\Controllers\MarketplacePaymentController;
use App\Http\Controllers\landing\HomeController as LandingHomeController;
use App\Http\Controllers\web\HomeController;
use App\Http\Controllers\web\CartController;
use App\Http\Controllers\web\UserController as WebUserController;
use App\Http\Controllers\web\CheckoutController;
use App\Http\Controllers\web\WalletController;
use App\Http\Controllers\web\ProductController as WebProductController;
use App\Http\Controllers\web\OtherPagesController as WebOtherPagesController;
/*
|--------------------------------------------------------------------------
| Web Routes
|--------------------------------------------------------------------------
|
| Here is where you can register web routes for your application. These
| routes are loaded by the RouteServiceProvider within a group which
| contains the "web" middleware group. Now create something great!
|
*/
// ------------------------------- ----------- ----------------------------------------- //
// ------------------------------- for Admin ----------------------------------------- //
// ------------------------------- ----------- ----------------------------------------- //
/*
|--------------------------------------------------------------------------
| SEO Public Routes (No Authentication Required)
|--------------------------------------------------------------------------
*/
// XML Sitemap Routes
Route::get('/sitemap.xml', [SitemapController::class, 'index'])->name('sitemap.index');
Route::get('/sitemap-{type}.xml', [SitemapController::class, 'show'])->name('sitemap.show');
Route::get('/sitemap-{type}-{chunk}.xml', [SitemapController::class, 'showChunk'])->name('sitemap.chunk');
// Robots.txt Route
Route::get('/robots.txt', [RobotsTxtController::class, 'show'])->name('robots.txt');
// FIXED: Set prefix for vendor routes
// The original code used url()->current() which is unreliable during route registration
// We now default to path-based routing with vendor slug
// Use $_ENV directly since config() doesn't work during route registration
$domain = $_ENV['WEBSITE_HOST'] ?? '127.0.0.1';
$host = $_ENV['WEBSITE_HOST'] ?? '127.0.0.1';
$prefix = '{vendor_slug}';
Route::post('add-on/session/save', [AdminController::class, 'sessionsave']);
// Marketplace Payment Webhooks (no auth required)
Route::post('marketplace/webhook/{gateway}', [MarketplacePaymentController::class, 'webhook'])
->name('marketplace.webhook')
->withoutMiddleware(['web', 'csrf']);
// Referral tracking route (public - tracks referral link clicks)
Route::get('ref/{code}', [\App\Http\Controllers\Marketing\ReferralController::class, 'trackReferral'])->name('referral.track');
// Public referral program join page
Route::get('referral/join', [\App\Http\Controllers\Marketing\ReferralController::class, 'joinPage'])->name('referral.join');
// Public referral registration (simplified form)
Route::get('referral/register', [\App\Http\Controllers\Marketing\ReferralController::class, 'showRegisterForm'])->name('referral.register');
Route::post('referral/register', [\App\Http\Controllers\Marketing\ReferralController::class, 'register'])->name('referral.register.submit');
// Public referral login (for referral partners)
Route::get('referral/login', [\App\Http\Controllers\Marketing\ReferralController::class, 'showLoginForm'])->name('referral.login');
Route::post('referral/login', [\App\Http\Controllers\Marketing\ReferralController::class, 'login'])->name('referral.login.submit');
// Public referral partner dashboard (after login)
Route::get('referral/dashboard', [\App\Http\Controllers\Marketing\ReferralController::class, 'partnerDashboard'])->name('referral.partner.dashboard')->middleware('auth');
Route::post('referral/payout/request', [\App\Http\Controllers\Marketing\ReferralController::class, 'requestPayout'])->name('referral.partner.payout')->middleware('auth');
Route::get('referral/logout', [\App\Http\Controllers\Marketing\ReferralController::class, 'logout'])->name('referral.logout')->middleware('auth');
if ($host == ($_ENV['WEBSITE_HOST'] ?? '127.0.0.1')) {
// Route::get('/', [AdminController::class, 'login']);
Route::group(['namespace' => 'admin', 'prefix' => 'admin'], function () {
Route::get('/', [AdminController::class, 'login']);
Route::post('checklogin', [AdminController::class, 'check_admin_login']);
// Vendor Registration (using wizard form)
Route::get('register', [VendorController::class, 'register'])->name('vendor.register');
// Domain search API for registration wizard
Route::post('register/search-domains', [VendorController::class, 'searchDomains'])->name('register.searchDomains');
Route::post('register/check-domain', [VendorController::class, 'checkDomainAvailability'])->name('register.checkDomain');
Route::get('register/domain-pricing', [VendorController::class, 'getDomainPricing'])->name('register.domainPricing');
// Vendor Setup Wizard Routes
Route::get('register/wizard', [VendorWizardController::class, 'start'])->name('vendor.wizard.start');
Route::get('register/resume', [VendorWizardController::class, 'resume'])->name('vendor.wizard.resume');
Route::post('register/save-step', [VendorWizardController::class, 'saveStep'])->name('vendor.wizard.save');
Route::post('register/validate-step', [VendorWizardController::class, 'validateStep'])->name('vendor.wizard.validate');
Route::post('register/check-availability', [VendorWizardController::class, 'checkAvailability'])->name('vendor.wizard.check');
Route::post('register/upload-logo', [VendorWizardController::class, 'uploadLogo'])->name('vendor.wizard.uploadLogo');
Route::post('register/search-domains', [VendorWizardController::class, 'searchDomains'])->name('vendor.wizard.searchDomains');
Route::post('register/check-domain', [VendorWizardController::class, 'checkDomainAvailability'])->name('vendor.wizard.checkDomain');
Route::post('register/get-domain-pricing', [VendorWizardController::class, 'getDomainPricing'])->name('vendor.wizard.getDomainPricing');
Route::get('register/get-plans', [VendorWizardController::class, 'getPlans'])->name('vendor.wizard.getPlans');
Route::post('register/calculate-total', [VendorWizardController::class, 'calculateTotal'])->name('vendor.wizard.calculateTotal');
Route::post('register/initialize-payment', [VendorWizardController::class, 'initializePayment'])->name('vendor.wizard.initialize-payment');
Route::post('register/verify-payment', [VendorWizardController::class, 'verifyPayment'])->name('vendor.wizard.verify-payment');
Route::post('register/complete', [VendorWizardController::class, 'complete'])->name('vendor.wizard.complete');
// Email Verification Routes
Route::post('register/send-verification', [VendorController::class, 'sendVerificationCode'])->name('register.sendVerification');
Route::post('register/verify-email', [VendorController::class, 'verifyEmailCode'])->name('register.verifyEmail');
Route::post('register/resend-verification', [VendorController::class, 'resendVerificationCode'])->name('register.resendVerification');
Route::post('register/check-email-verified', [VendorController::class, 'checkEmailVerified'])->name('register.checkEmailVerified');
Route::post('/getcity', [VendorController::class, 'getcity']);
Route::post('register_vendor', [VendorController::class, 'register_vendor']);
Route::get('forgot_password', [VendorController::class, 'forgot_password']);
Route::post('send_password', [VendorController::class, 'send_password']);
Route::get('/verify', function () {
return view('admin.auth.verify');
});
Route::post('systemverification', [AdminController::class, 'systemverification'])->name('admin.systemverification');
Route::get('apps', [SystemAddonsController::class, 'index'])->name('systemaddons');
Route::get('createsystem-addons', [SystemAddonsController::class, 'createsystemaddons']);
Route::post('systemaddons/store', [SystemAddonsController::class, 'store']);
Route::get('systemaddons/status-{id}/{status}', [SystemAddonsController::class, 'change_status']);
// Admin Addon Management Routes
Route::group(['prefix' => 'addon-management', 'middleware' => 'AuthMiddleware'], function () {
Route::get('/', [AdminAddonController::class, 'index'])->name('admin.addon-management.index');
Route::post('/sync', [AdminAddonController::class, 'syncAddons'])->name('admin.addon-management.sync');
Route::get('/{addonKey}', [AdminAddonController::class, 'show'])->name('admin.addon-management.show');
Route::post('/{addonKey}/toggle', [AdminAddonController::class, 'toggleStatus'])->name('admin.addon-management.toggle');
Route::post('/assign-vendor', [AdminAddonController::class, 'assignToVendor'])->name('admin.addon-management.assign-vendor');
Route::post('/bulk-assign', [AdminAddonController::class, 'bulkAssign'])->name('admin.addon-management.bulk-assign');
Route::post('/{addonKey}/assign-all', [AdminAddonController::class, 'assignToAllVendors'])->name('admin.addon-management.assign-all');
Route::post('/vendor/{vendorAddonId}/toggle', [AdminAddonController::class, 'toggleVendorAddon'])->name('admin.addon-management.toggle-vendor');
Route::delete('/vendor/{vendorAddonId}', [AdminAddonController::class, 'removeFromVendor'])->name('admin.addon-management.remove-vendor');
});
Route::group(
['middleware' => 'AuthMiddleware'],
function () {
// -------- Common --------
Route::get('admin_back', [VendorController::class, 'admin_back']);
Route::get('logout', [AdminController::class, 'logout']);
Route::get('dashboard', [AdminController::class, 'index']);
// -------- Developer Routes --------
Route::prefix('developer')->name('developer.')->group(function () {
Route::get('/dashboard', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'index'])->name('dashboard');
Route::get('/billing', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'billing'])->name('billing');
// Store Management
Route::get('/stores/create', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'createStoreWizard'])->name('stores.create');
Route::post('/stores/create', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'storeFromTemplate'])->name('stores.store');
Route::get('/stores/bulk', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'bulkManagement'])->name('stores.bulk');
Route::post('/stores/bulk-action', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'bulkAction'])->name('stores.bulk-action');
// Templates
Route::get('/templates', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'templates'])->name('templates');
// API Hub
Route::get('/api', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'apiHub'])->name('api');
Route::post('/api/generate', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'generateApiKey'])->name('api.generate');
// Advanced Features
Route::get('/white-label', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'whiteLabel'])->name('white-label');
Route::put('/white-label', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'updateWhiteLabel'])->name('white-label.update');
Route::get('/commissions', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'commissions'])->name('commissions');
Route::post('/commissions', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'createCommission'])->name('commissions.create');
Route::get('/reports', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'automatedReports'])->name('reports');
Route::post('/reports', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'createReport'])->name('reports.create');
Route::get('/health', [\App\Http\Controllers\Developer\DeveloperDashboardController::class, 'healthMonitoring'])->name('health');
});
// Documentation
Route::get('documentation', function() {
$path = base_path('CEZN-COMPLETE-DOCUMENTATION.md');
if (!file_exists($path)) {
abort(404, 'Documentation not found');
}
$markdown = file_get_contents($path);
return view('admin.documentation', compact('markdown'));
});
// Settings
Route::get('settings', [VendorController::class, 'settings_index']);
Route::post('settings/update', [VendorController::class, 'settings_update']);
Route::post('settings/update-business-type', [VendorController::class, 'updateBusinessType']);
Route::post('settings/safe-secure-store', [VendorController::class, 'safe_secure_store']);
Route::get('settings/delete-feature-{id}', [VendorController::class, 'delete_feature']);
Route::post('settings/update-profile-{id}', [VendorController::class, 'update']);
Route::post('settings/change-password', [VendorController::class, 'change_password']);
Route::post('other/update', [WebSettingsController::class, 'other_update']);
// Transaction
Route::get('transaction', [TransactionController::class, 'index']);
// Wallet System
Route::group(['prefix' => 'wallet'], function () {
Route::get('/', [\App\Http\Controllers\Admin\WalletController::class, 'index'])->name('wallet.index');
Route::get('/withdrawal', [\App\Http\Controllers\Admin\WalletController::class, 'withdrawalForm'])->name('wallet.withdrawal');
Route::post('/withdrawal/request', [\App\Http\Controllers\Admin\WalletController::class, 'requestWithdrawal'])->name('wallet.withdrawal.request');
Route::post('/withdrawal/cancel/{id}', [\App\Http\Controllers\Admin\WalletController::class, 'cancelWithdrawal'])->name('wallet.withdrawal.cancel');
Route::get('/transaction/{id}', [\App\Http\Controllers\Admin\WalletController::class, 'transactionDetails'])->name('wallet.transaction.details');
// Admin only routes
Route::get('/admin/withdrawals', [\App\Http\Controllers\Admin\WalletController::class, 'adminWithdrawals'])->name('wallet.admin.withdrawals');
Route::post('/admin/withdrawal/{id}/update', [\App\Http\Controllers\Admin\WalletController::class, 'updateWithdrawalStatus'])->name('wallet.admin.withdrawal.update');
Route::post('/admin/credit', [\App\Http\Controllers\Admin\WalletController::class, 'adminCredit'])->name('wallet.admin.credit');
Route::post('/admin/debit', [\App\Http\Controllers\Admin\WalletController::class, 'adminDebit'])->name('wallet.admin.debit');
});
// Reward System
Route::group(['prefix' => 'rewards'], function () {
Route::get('/', [\App\Http\Controllers\Admin\RewardController::class, 'index'])->name('rewards.index');
// Admin only routes
Route::get('/admin/types', [\App\Http\Controllers\Admin\RewardController::class, 'adminRewardTypes'])->name('rewards.admin.types');
Route::post('/admin/types/store', [\App\Http\Controllers\Admin\RewardController::class, 'storeRewardType'])->name('rewards.admin.types.store');
Route::put('/admin/types/{id}', [\App\Http\Controllers\Admin\RewardController::class, 'updateRewardType'])->name('rewards.admin.types.update');
Route::get('/admin/user-rewards', [\App\Http\Controllers\Admin\RewardController::class, 'adminUserRewards'])->name('rewards.admin.user-rewards');
Route::post('/admin/award', [\App\Http\Controllers\Admin\RewardController::class, 'awardReward'])->name('rewards.admin.award');
Route::post('/admin/approve/{id}', [\App\Http\Controllers\Admin\RewardController::class, 'approveReward'])->name('rewards.admin.approve');
Route::post('/admin/reject/{id}', [\App\Http\Controllers\Admin\RewardController::class, 'rejectReward'])->name('rewards.admin.reject');
});
// Plans
Route::get('plan', [PlanPricingController::class, 'view_plan']);
Route::get('transaction/plandetails-{id}', [PlanPricingController::class, 'plan_details']);
Route::get('transaction/generatepdf-{id}', [PlanPricingController::class, 'generatepdf']);
Route::get('/themeimages', [PlanPricingController::class, 'themeimages']);
// Payment
Route::group(
['prefix' => 'payment'],
function () {
Route::get('/', [PaymentController::class, 'index']);
Route::post('update', [PaymentController::class, 'update']);
Route::post('/reorder_payment', [PaymentController::class, 'reorder_payment']);
}
);
// STORE CATEGORIES
Route::group(
['prefix' => 'store_categories'],
function () {
Route::get('/', [StoreCategoryController::class, 'index']);
Route::get('add', [StoreCategoryController::class, 'add_category']);
Route::post('save', [StoreCategoryController::class, 'save_category']);
Route::get('edit-{id}', [StoreCategoryController::class, 'edit_category']);
Route::post('update-{id}', [StoreCategoryController::class, 'update_category']);
Route::get('change_status-{id}/{status}', [StoreCategoryController::class, 'change_status']);
Route::get('delete-{id}', [StoreCategoryController::class, 'delete_category']);
Route::post('/reorder_category', [StoreCategoryController::class, 'reorder_category']);
}
);
// inquiries
Route::get('/inquiries', [OtherPagesController::class, 'inquiries']);
Route::get('/inquiries/delete-{id}', [OtherPagesController::class, 'inquiries_delete']);
// Other Pages
Route::get('/subscribers', [OtherPagesController::class, 'subscribers']);
Route::get('/subscribers/delete-{id}', [OtherPagesController::class, 'subscribers_delete']);
Route::get('/privacypolicy', [OtherPagesController::class, 'privacypolicy']);
Route::post('/privacypolicy/update', [OtherPagesController::class, 'update_privacypolicy']);
Route::get('/termscondition', [OtherPagesController::class, 'termscondition']);
Route::post('/termscondition/update', [OtherPagesController::class, 'update_terms']);
Route::get('/aboutus', [OtherPagesController::class, 'aboutus']);
Route::post('/aboutus/update', [OtherPagesController::class, 'update_aboutus']);
Route::get('/refund_policy', [OtherPagesController::class, 'refund_policy']);
Route::post('/refund_policy/update', [OtherPagesController::class, 'refund_policy_update']);
Route::group(
['prefix' => 'orders'],
function () {
Route::get('/invoice/{vendor_id}/{order_number}', [OrderController::class, 'invoice']);
Route::get('/print/{order_number}', [OrderController::class, 'print']);
Route::get('/generatepdf/{vendor_id}/{order_number}', [OrderController::class, 'generatepdf']);
Route::post('/customerinfo', [OrderController::class, 'customerinfo']);
Route::post('/vendor_note', [OrderController::class, 'vendor_note']);
}
);
// website settings
Route::get('/basic_settings', [WebSettingsController::class, 'basic_settings']);
Route::post('/themeupdate', [WebSettingsController::class, 'themeupdate']);
Route::post('/seo_update', [WebSettingsController::class, 'seo_update']);
Route::post('/footer_features/update', [WebSettingsController::class, 'footer_features_update']);
Route::post('/tips_settings/update', [WebSettingsController::class, 'tips_settings']);
Route::post('/contact_settings/update', [WebSettingsController::class, 'contact_settings']);
Route::post('/other/update', [WebSettingsController::class, 'other_update']);
// tax
Route::group(
['prefix' => 'tax'],
function () {
Route::get('/', [TaxController::class, 'index']);
Route::get('add', [TaxController::class, 'add']);
Route::post('save', [TaxController::class, 'save']);
Route::get('edit-{id}', [TaxController::class, 'edit']);
Route::post('update-{id}', [TaxController::class, 'update']);
Route::get('change_status-{id}/{status}', [TaxController::class, 'change_status']);
Route::get('delete-{id}', [TaxController::class, 'delete']);
Route::post('reorder_tax', [TaxController::class, 'reorder_tax']);
}
);
// FAQs
Route::group(
['prefix' => 'faqs'],
function () {
Route::get('/', [OtherPagesController::class, 'faq_index']);
Route::get('/add', [OtherPagesController::class, 'faq_add']);
Route::post('/save', [OtherPagesController::class, 'faq_save']);
Route::get('/edit-{id}', [OtherPagesController::class, 'faq_edit']);
Route::post('/update-{id}', [OtherPagesController::class, 'faq_update']);
Route::get('/delete-{id}', [OtherPagesController::class, 'faq_delete']);
Route::post('/reorder_faq', [OtherPagesController::class, 'reorder_faq']);
}
);
Route::post('social_links/update', [WebSettingsController::class, 'social_links_update']);
Route::get('settings/delete-sociallinks-{id}', [WebSettingsController::class, 'delete_sociallinks']);
Route::post('app_section/update', [WebSettingsController::class, 'app_section']);
Route::middleware('adminmiddleware')->group(
function () {
Route::get('transaction-{id}-{status}', [TransactionController::class, 'status']);
// Marketplace
Route::group(
['prefix' => 'marketplace'],
function () {
Route::get('/', [MarketplaceController::class, 'dashboard'])->name('admin.marketplace.dashboard');
// Addons
Route::get('/addons', [MarketplaceController::class, 'addons'])->name('admin.marketplace.addons');
Route::get('/addons/create', [MarketplaceController::class, 'createAddon'])->name('admin.marketplace.addons.create');
Route::post('/addons', [MarketplaceController::class, 'storeAddon'])->name('admin.marketplace.addons.store');
Route::get('/addons/{id}/edit', [MarketplaceController::class, 'editAddon'])->name('admin.marketplace.addons.edit');
Route::put('/addons/{id}', [MarketplaceController::class, 'updateAddon'])->name('admin.marketplace.addons.update');
Route::get('/addons/{id}/toggle', [MarketplaceController::class, 'toggleAddonStatus'])->name('admin.marketplace.addons.toggle');
Route::delete('/addons/{id}', [MarketplaceController::class, 'deleteAddon'])->name('admin.marketplace.addons.delete');
Route::post('/addons/reorder', [MarketplaceController::class, 'reorderAddons'])->name('admin.marketplace.addons.reorder');
// Categories
Route::get('/categories', [MarketplaceController::class, 'categories'])->name('admin.marketplace.categories');
Route::post('/categories', [MarketplaceController::class, 'storeCategory'])->name('admin.marketplace.categories.store');
Route::put('/categories/{id}', [MarketplaceController::class, 'updateCategory'])->name('admin.marketplace.categories.update');
Route::delete('/categories/{id}', [MarketplaceController::class, 'deleteCategory'])->name('admin.marketplace.categories.delete');
Route::post('/categories/reorder', [MarketplaceController::class, 'reorderCategories'])->name('admin.marketplace.categories.reorder');
// Subscriptions
Route::get('/subscriptions', [MarketplaceController::class, 'subscriptions'])->name('admin.marketplace.subscriptions');
Route::get('/subscriptions/{id}', [MarketplaceController::class, 'viewSubscription'])->name('admin.marketplace.subscriptions.view');
Route::post('/subscriptions/{id}/cancel', [MarketplaceController::class, 'cancelSubscription'])->name('admin.marketplace.subscriptions.cancel');
// Payments
Route::get('/payments', [MarketplaceController::class, 'payments'])->name('admin.marketplace.payments');
Route::post('/payments/{id}/refund', [MarketplaceController::class, 'refundPayment'])->name('admin.marketplace.payments.refund');
// Reviews
Route::get('/reviews', [MarketplaceController::class, 'reviews'])->name('admin.marketplace.reviews');
Route::post('/reviews/{id}/approve', [MarketplaceController::class, 'approveReview'])->name('admin.marketplace.reviews.approve');
Route::post('/reviews/{id}/reject', [MarketplaceController::class, 'rejectReview'])->name('admin.marketplace.reviews.reject');
Route::post('/reviews/{id}/respond', [MarketplaceController::class, 'respondToReview'])->name('admin.marketplace.reviews.respond');
Route::delete('/reviews/{id}', [MarketplaceController::class, 'deleteReview'])->name('admin.marketplace.reviews.delete');
// Analytics
Route::get('/analytics', [MarketplaceController::class, 'analytics'])->name('admin.marketplace.analytics');
// Export
Route::get('/export', [MarketplaceController::class, 'export'])->name('admin.marketplace.export');
// Payment Gateway Settings
Route::get('/settings/payment', [MarketplaceController::class, 'paymentSettings'])->name('admin.marketplace.settings.payment');
}
);
// Plan
Route::group(
['prefix' => 'plan'],
function () {
Route::get('add', [PlanPricingController::class, 'add_plan']);
Route::post('save_plan', [PlanPricingController::class, 'save_plan']);
Route::get('edit-{id}', [PlanPricingController::class, 'edit_plan']);
Route::post('update_plan-{id}', [PlanPricingController::class, 'update_plan']);
Route::get('status_change-{id}/{status}', [PlanPricingController::class, 'status_change']);
Route::get('/delete-{id}', [PlanPricingController::class, 'delete']);
Route::post('/updateimage', [PlanPricingController::class, 'updateimage']);
Route::post('/reorder_plan', [PlanPricingController::class, 'reorder_plan']);
}
);
// Users/Vendors
Route::group(
['prefix' => 'users'],
function () {
Route::get('/', [VendorController::class, 'index']);
Route::get('add', [VendorController::class, 'add']);
Route::get('view-{slug}', [VendorController::class, 'view']);
Route::get('edit-{slug}', [VendorController::class, 'edit']);
Route::post('update-{slug}', [VendorController::class, 'update']);
Route::get('status-{slug}/{status}', [VendorController::class, 'status']);
Route::get('login-{slug}', [VendorController::class, 'vendor_login']);
Route::get('delete-{slug}', [VendorController::class, 'deletevendor']);
}
);
//features
Route::group(
['prefix' => 'features'],
function () {
Route::get('/', [FeaturesController::class, 'index']);
Route::get('/add', [FeaturesController::class, 'add']);
Route::post('/save', [FeaturesController::class, 'save']);
Route::get('/edit-{id}', [FeaturesController::class, 'edit']);
Route::post('/update-{id}', [FeaturesController::class, 'update']);
Route::get('/delete-{id}', [FeaturesController::class, 'delete']);
Route::post('/reorder_features', [FeaturesController::class, 'reorder_features']);
}
);
// countries
Route::group(
['prefix' => 'countries'],
function () {
Route::get('/', [OtherPagesController::class, 'countries']);
Route::get('/add', [OtherPagesController::class, 'add_country']);
Route::post('/save', [OtherPagesController::class, 'save_country']);
Route::get('/edit-{id}', [OtherPagesController::class, 'edit_country']);
Route::post('/update-{id}', [OtherPagesController::class, 'update_country']);
Route::get('/delete-{id}', [OtherPagesController::class, 'delete_country']);
Route::get('/change_status-{id}/{status}', [OtherPagesController::class, 'statuschange_country']);
Route::post('/reorder_country', [OtherPagesController::class, 'reorder_country']);
}
);
// city
Route::group(
['prefix' => 'cities'],
function () {
Route::get('/', [OtherPagesController::class, 'cities']);
Route::get('/add', [OtherPagesController::class, 'add_city']);
Route::post('/save', [OtherPagesController::class, 'save_city']);
Route::get('/edit-{id}', [OtherPagesController::class, 'edit_city']);
Route::post('/update-{id}', [OtherPagesController::class, 'update_city']);
Route::get('/delete-{id}', [OtherPagesController::class, 'delete_city']);
Route::get('/change_status-{id}/{status}', [OtherPagesController::class, 'statuschange_city']);
Route::post('/reorder_area', [OtherPagesController::class, 'reorder_area']);
}
);
// promotional banner
Route::group(
['prefix' => 'promotionalbanners'],
function () {
Route::get('/', [BannerController::class, 'promotional_banner']);
Route::get('add', [BannerController::class, 'promotional_banneradd']);
Route::get('edit-{id}', [BannerController::class, 'promotional_banneredit']);
Route::post('save', [BannerController::class, 'promotional_bannersave_banner']);
Route::post('update-{id}', [BannerController::class, 'promotional_bannerupdate']);
Route::get('delete-{id}', [BannerController::class, 'promotional_bannerdelete']);
Route::post('reorder_promotionalbanner', [BannerController::class, 'reorder_promotionalbanner']);
}
);
Route::post('/fun_fact/update', [WebSettingsController::class, 'fun_fact_update']);
Route::get('/fun_fact/delete-{id}', [WebSettingsController::class, 'fun_fact_delete']);
// Landing Page Content Management
Route::post('/landing/hero/update', [WebSettingsController::class, 'landing_hero_update']);
Route::post('/landing/sections/update', [WebSettingsController::class, 'landing_sections_update']);
Route::post('/landing/testimonials/update', [WebSettingsController::class, 'landing_testimonials_update']);
Route::get('/landing/testimonials/delete-{id}', [WebSettingsController::class, 'landing_testimonial_delete']);
// theme
Route::get('/themes', [ThemeController::class, 'index']);
Route::get('themes/add', [ThemeController::class, 'add']);
Route::post('/themes/save', [ThemeController::class, 'save']);
Route::get('/themes/edit-{id}', [ThemeController::class, 'edit']);
Route::post('/themes/update-{id}', [ThemeController::class, 'update']);
Route::get('/themes/delete-{id}', [ThemeController::class, 'delete']);
Route::post('/themes/reorder_theme', [ThemeController::class, 'reorder_theme']);
Route::get('/how_it_works', [HowItWorkController::class, 'index']);
Route::get('/how_it_works/add', [HowItWorkController::class, 'add']);
Route::get('/how_it_works/edit-{id}', [HowItWorkController::class, 'edit']);
Route::post('/how_it_works/save', [HowItWorkController::class, 'save']);
Route::post('/how_it_works/update-{id}', [HowItWorkController::class, 'update']);
Route::get('/how_it_works/delete-{id}', [HowItWorkController::class, 'delete']);
Route::post('/how_it_works/reorder_how_work', [HowItWorkController::class, 'reorder_how_work']);
}
);
Route::middleware('VendorMiddleware')->group(
function () {
Route::get('settings/delete-banner', [VendorController::class, 'delete_viewall_page_image']);
Route::get('/deleteaccount-{id}', [VendorController::class, 'deleteaccount']);
// share
Route::get('share', [OtherPagesController::class, 'share']);
// Orders
Route::get('/report', [OrderController::class, 'index']);
Route::group(
['prefix' => 'orders'],
function () {
Route::get('/', [OrderController::class, 'index']);
Route::get('/update-{id}-{status}-{type}', [OrderController::class, 'update']);
Route::post('/payment_status-{status}', [OrderController::class, 'payment_status']);
}
);
// Categories
Route::group(
['prefix' => 'categories'],
function () {
Route::get('/', [CategoryController::class, 'index']);
Route::get('add', [CategoryController::class, 'add_category']);
Route::post('save', [CategoryController::class, 'save_category']);
Route::get('edit-{slug}', [CategoryController::class, 'edit_category']);
Route::post('update-{slug}', [CategoryController::class, 'update_category']);
Route::get('change_status-{slug}/{status}', [CategoryController::class, 'change_status']);
Route::get('delete-{slug}', [CategoryController::class, 'delete_category']);
Route::post('/reorder_category', [CategoryController::class, 'reorder_category']);
}
);
// Sub Categories
Route::group(
['prefix' => 'sub-categories'],
function () {
Route::get('/', [SubCategoryController::class, 'index']);
Route::get('add', [SubCategoryController::class, 'add']);
Route::post('store', [SubCategoryController::class, 'store']);
Route::get('edit-{slug}', [SubCategoryController::class, 'edit']);
Route::post('update-{slug}', [SubCategoryController::class, 'update']);
Route::get('change_status-{slug}/{status}', [SubCategoryController::class, 'change_status']);
Route::get('delete-{slug}', [SubCategoryController::class, 'delete']);
Route::post('/reorder_category', [SubCategoryController::class, 'subcategory_reorder']);
}
);
// Products
Route::group(
['prefix' => 'products'],
function () {
Route::get('/', [ProductController::class, 'index']);
Route::get('add', [ProductController::class, 'add']);
Route::post('save', [ProductController::class, 'save']);
Route::get('edit-{slug}', [ProductController::class, 'edit']);
Route::post('update-{slug}', [ProductController::class, 'update_product']);
Route::get('delete-{slug}', [ProductController::class, 'delete_product']);
Route::post('update', [ProductController::class, 'update_image']);
Route::get('delete_image-{id}/{service_id}', [ProductController::class, 'delete_image']);
Route::get('deletevariation-{id}-{product_id}', [ProductController::class, 'delete_variation']);
Route::post('add_image', [ProductController::class, 'add_image']);
Route::get('status_change-{slug}/{status}', [ProductController::class, 'status_change']);
Route::get('/top_deals-{slug}/{status}', [ProductController::class, 'top_deals']);
Route::get('subcategories', [ProductController::class, 'subcategories']);
Route::get('/import', [ProductController::class, 'import']);
Route::post('/reorder_category', [ProductController::class, 'reorder_category']);
Route::get('/review/delete-{id}', [ProductController::class, 'delete_review']);
Route::post('/product-variants-possibilities/{product_id}', [ProductController::class, 'getProductVariantsPossibilities']);
Route::get('/get-product-variants-possibilities', [ProductController::class, 'getProductVariantsPossibilities']);
Route::get('/variants/edit/{product_id}', [ProductController::class, 'productVariantsEdit']);
Route::post('/reorder_image-{product_id}', [ProductController::class, 'reorder_image']);
Route::get('delete/extras-{id}', [ProductController::class, 'delete_extras']);
}
);
// Product SEO
Route::group(
['prefix' => 'products/seo'],
function () {
Route::get('/', [\App\Http\Controllers\admin\ProductSeoController::class, 'index'])->name('admin.product-seo.index');
Route::get('edit-{id}', [\App\Http\Controllers\admin\ProductSeoController::class, 'edit'])->name('admin.product-seo.edit');
Route::post('update-{id}', [\App\Http\Controllers\admin\ProductSeoController::class, 'update'])->name('admin.product-seo.update');
Route::post('bulk-update', [\App\Http\Controllers\admin\ProductSeoController::class, 'bulkUpdate'])->name('admin.product-seo.bulk-update');
Route::post('auto-generate-{id}', [\App\Http\Controllers\admin\ProductSeoController::class, 'autoGenerate'])->name('admin.product-seo.auto-generate');
}
);
// extras
Route::get('/getextras', [GlobalExtrasController::class, 'getextras']);
Route::get('/editgetextras-{id}', [GlobalExtrasController::class, 'editgetextras']);
Route::group(
['prefix' => 'extras'],
function () {
Route::get('/', [GlobalExtrasController::class, 'index']);
Route::get('/add', [GlobalExtrasController::class, 'add']);
Route::post('/save', [GlobalExtrasController::class, 'save']);
Route::get('/edit-{id}', [GlobalExtrasController::class, 'edit']);
Route::post('/update-{id}', [GlobalExtrasController::class, 'update']);
Route::get('/change_status-{id}/{status}', [GlobalExtrasController::class, 'change_status']);
Route::get('delete-{id}', [GlobalExtrasController::class, 'delete']);
Route::post('/reorder_extras', [GlobalExtrasController::class, 'reorder_extras']);
}
);
//shipping
Route::group(['prefix' => 'shipping'], function () {
Route::get('/', [OtherPagesController::class, 'shippingindex']);
Route::post('/savecontent', [OtherPagesController::class, 'savecontent']);
});
// Plan
Route::group(
['prefix' => 'plan'],
function () {
Route::get('selectplan-{id}', [PlanPricingController::class, 'select_plan']);
Route::post('buyplan', [PlanPricingController::class, 'buyplan']);
Route::any('buyplan/paymentsuccess/success', [PlanPricingController::class, 'success']);
}
);
// Banners
Route::group(
['prefix' => 'bannersection-1'],
function () {
Route::get('/', [BannerController::class, 'index']);
Route::get('add', [BannerController::class, 'add']);
Route::get('edit-{id}', [BannerController::class, 'edit']);
Route::post('save', [BannerController::class, 'save_banner']);
Route::post('update-{id}', [BannerController::class, 'edit_banner']);
Route::get('status_change-{id}/{status}', [BannerController::class, 'status_update']);
Route::get('delete-{id}', [BannerController::class, 'delete']);
Route::post('reorder_banner', [BannerController::class, 'reorder_banner']);
}
);
Route::group(
['prefix' => 'bannersection-2'],
function () {
Route::get('/', [BannerController::class, 'index']);
Route::get('add', [BannerController::class, 'add']);
Route::get('edit-{id}', [BannerController::class, 'edit']);
Route::post('save', [BannerController::class, 'save_banner']);
Route::post('update-{id}', [BannerController::class, 'edit_banner']);
Route::get('status_change-{id}/{status}', [BannerController::class, 'status_update']);
Route::get('delete-{id}', [BannerController::class, 'delete']);
Route::post('reorder_banner', [BannerController::class, 'reorder_banner']);
}
);
Route::group(
['prefix' => 'bannersection-3'],
function () {
Route::get('/', [BannerController::class, 'index']);
Route::get('add', [BannerController::class, 'add']);
Route::get('edit-{id}', [BannerController::class, 'edit']);
Route::post('save', [BannerController::class, 'save_banner']);
Route::post('update-{id}', [BannerController::class, 'edit_banner']);
Route::get('status_change-{id}/{status}', [BannerController::class, 'status_update']);
Route::get('delete-{id}', [BannerController::class, 'delete']);
Route::post('reorder_banner', [BannerController::class, 'reorder_banner']);
}
);
Route::group(
['prefix' => 'sliders'],
function () {
Route::get('/', [BannerController::class, 'index']);
Route::get('add', [BannerController::class, 'add']);
Route::get('edit-{id}', [BannerController::class, 'edit']);
Route::post('save', [BannerController::class, 'save_banner']);
Route::post('update-{id}', [BannerController::class, 'edit_banner']);
Route::get('status_change-{id}/{status}', [BannerController::class, 'status_update']);
Route::get('delete-{id}', [BannerController::class, 'delete']);
Route::post('reorder_banner', [BannerController::class, 'reorder_banner']);
}
);
Route::get('/whoweare', [WhoWeAreController::class, 'index']);
Route::get('/whoweare/add', [WhoWeAreController::class, 'add']);
Route::get('/whoweare/edit-{id}', [WhoWeAreController::class, 'edit']);
Route::post('/whoweare/savecontent', [WhoWeAreController::class, 'savecontent']);
Route::post('/whoweare/save', [WhoWeAreController::class, 'save']);
Route::post('/whoweare/update-{id}', [WhoWeAreController::class, 'update']);
Route::get('/whoweare/status_change-{id}/{status}', [WhoWeAreController::class, 'status_update']);
Route::get('/whoweare/delete-{id}', [WhoWeAreController::class, 'delete']);
Route::post('/whoweare/reorder_whoweare', [WhoWeAreController::class, 'reorder_whoweare']);
Route::get('/top_deals', [TopdealsController::class, 'index']);
Route::post('/top_deals/update', [TopdealsController::class, 'top_deals']);
Route::get('/top_deals/delete-{id}', [TopdealsController::class, 'delete']);
// Setup Wizard redirect to Business Types
Route::get('setup-wizard', function () {
return redirect()->route('vendor.business-types.index');
})->name('vendor.setup-wizard');
// Business Types Management (Vendor)
Route::group(['prefix' => 'business-types'], function () {
Route::get('/', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'index'])->name('vendor.business-types.index');
Route::post('/{addonKey}/toggle', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'toggle'])->name('vendor.business-types.toggle');
Route::get('/{addonKey}/settings', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'settings'])->name('vendor.business-types.settings');
Route::put('/{addonKey}/settings', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'updateSettings'])->name('vendor.business-types.settings.update');
// Branding (logo/favicon) routes
Route::post('/{type}/branding', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'updateBranding'])->name('vendor.business-types.update-branding');
Route::post('/{type}/remove-branding', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'removeBranding'])->name('vendor.business-types.remove-branding');
// API endpoints for real-time sync and recommendations
Route::get('/api/status', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'getStatus'])->name('vendor.business-types.api.status');
Route::get('/api/active', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'getActiveType'])->name('vendor.business-types.api.active');
Route::get('/api/recommendations', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'getRecommendations'])->name('vendor.business-types.api.recommendations');
Route::post('/api/switch', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'switchType'])->name('vendor.business-types.api.switch');
Route::post('/api/deactivate', [\App\Http\Controllers\Vendor\BusinessTypesController::class, 'deactivate'])->name('vendor.business-types.api.deactivate');
});
}
);
}
);
});
}
// ------------------------------- ----------- ----------------------------------------- //
// ------------------------------- LANDING PAGE ROUTES (Must come first!) --------------- //
// ------------------------------- ----------- ----------------------------------------- //
// IMPORTANT: These routes must be registered BEFORE vendor routes to prevent
// the {vendor_slug} wildcard from catching landing page URLs like /aboutus, /contact, etc.
Route::group(['namespace' => '', 'middleware' => 'landingMiddleware'], function () {
// Main pages
Route::get('/', [LandingHomeController::class, 'index'])->name('home');
Route::post('/emailsubscribe', [LandingHomeController::class, 'emailsubscribe'])->name('emailsubscribe');
Route::post('/inquiry', [LandingHomeController::class, 'inquiry'])->name('inquiry');
// About & Legal pages
Route::get('/about', [LandingHomeController::class, 'aboutus'])->name('about');
Route::get('/aboutus', [LandingHomeController::class, 'aboutus']); // Legacy URL support
Route::get('/privacy-policy', [LandingHomeController::class, 'privacypolicy'])->name('privacy-policy');
Route::get('/privacypolicy', [LandingHomeController::class, 'privacypolicy']); // Legacy URL support
Route::get('/refund-policy', [LandingHomeController::class, 'refund_policy'])->name('refund-policy');
Route::get('/refund_policy', [LandingHomeController::class, 'refund_policy']); // Legacy URL support
Route::get('/terms', [LandingHomeController::class, 'termscondition'])->name('terms');
Route::get('/termscondition', [LandingHomeController::class, 'termscondition']); // Legacy URL support
// Blog routes
Route::get('/blogdetail-{slug}', [BlogController::class, 'pageblogdetail'])->name('blog.detail');
Route::get('/blog', [BlogController::class, 'allblogs'])->name('blog');
Route::get('/blogs', [BlogController::class, 'allblogs']); // Legacy URL support
// Marketing blog routes (for markdown-based blog posts)
Route::get('/marketing-blog', [BlogController::class, 'marketingBlogs'])->name('marketing.blog.index');
Route::get('/marketing-blog/{slug}', [BlogController::class, 'marketingBlogDetail'])->name('marketing.blog.show');
Route::get('/marketing-blog/feed/rss', [BlogController::class, 'marketingBlogRss'])->name('marketing.blog.rss');
// Other landing pages
Route::get('/faq', [LandingHomeController::class, 'faqs'])->name('faq');
Route::get('/faqs', [LandingHomeController::class, 'faqs']); // Legacy URL support
Route::get('/contact', [LandingHomeController::class, 'contact'])->name('contact');
Route::get('/stores', [LandingHomeController::class, 'allstores'])->name('stores');
Route::get('/templates', [LandingHomeController::class, 'templatePreview'])->name('templates');
Route::post('/getcity', [AdminController::class, 'getcity']);
Route::get('/themeimages', [LandingHomeController::class, 'themeimages']);
// New multi-page website routes
Route::get('/features', [LandingHomeController::class, 'features'])->name('features');
Route::get('/addons', [LandingHomeController::class, 'addons'])->name('addons');
Route::get('/addon/{slug}', [LandingHomeController::class, 'addonDetail'])->name('addon.detail');
Route::get('/feature/{slug}', [LandingHomeController::class, 'featureDetail'])->name('feature.detail');
Route::get('/pricing', [LandingHomeController::class, 'pricing'])->name('pricing');
// Product Pages (SEO-optimized individual pages)
Route::get('/products/ecommerce-store', [LandingHomeController::class, 'productEcommerceStore'])->name('products.ecommerce');
Route::get('/products/ai-agents', [LandingHomeController::class, 'productAiAgents'])->name('products.ai-agents');
Route::get('/products/social-bot', [LandingHomeController::class, 'productSocialBot'])->name('products.social-bot');
Route::get('/products/webmail', [LandingHomeController::class, 'productWebmail'])->name('products.webmail');
Route::get('/products/biolink', [LandingHomeController::class, 'productBiolink'])->name('products.biolink');
Route::get('/products/seo-tools', [LandingHomeController::class, 'productSeoTools'])->name('products.seo-tools');
// Authentication routes - redirect to admin panel
Route::get('/login', function () {
return redirect('/admin/');
})->name('landing.login');
Route::get('/register', function () {
return redirect('/admin/register');
})->name('landing.register');
Route::get('/vendor/login', function () {
return redirect('/admin/');
});
Route::get('/vendor/register', function () {
return redirect('/admin/register');
});
Route::get('/signin', function () {
return redirect('/admin/');
});
Route::get('/signup', function () {
return redirect('/admin/register');
});
});
// Developer/Agency Account Routes (Must come BEFORE vendor routes to prevent {vendor_slug} catching 'developer')
require __DIR__.'/developer.php';
// ------------------------------- ----------- ----------------------------------------- //
// ------------------------------- for Web/Front (Vendor Stores) ----------------------- //
// ------------------------------- ----------- ----------------------------------------- //
Route::group(['prefix' => $prefix, 'middleware' => 'FrontMiddleware'], function () {
Route::get('/', [HomeController::class, 'index']);
Route::get('/pwa', [HomeController::class, 'pwaindex']);
Route::get('/test_debug', function(Illuminate\Http\Request $request) {
return 'TEST DEBUG WORKS! website_host config: ' . config('app.website_host') .
'
vendor_slug from request: ' . ($request->vendor_slug ?? 'NULL') .
'
vendor_slug from route: ' . ($request->route('vendor_slug') ?? 'NULL');
});
Route::get('/test_controller', [HomeController::class, 'index']);
Route::get('/shop_all', [WebProductController::class, 'category_wise_products']);
Route::get('/categories', [HomeController::class, 'categories']);
Route::get('/checkvendor', [HomeController::class, 'checkvendor']);
Route::post('/managefavorite', [HomeController::class, 'managefavorite']);
Route::get('/wallet', [WalletController::class, 'wallet']);
Route::get('/addmoneywallet', [WalletController::class, 'addmoneywallet']);
Route::post('/wallet/recharge', [WalletController::class, 'addwallet']);
Route::any('/addwalletsuccess', [WalletController::class, 'addsuccess']);
Route::any('/addfail', [WalletController::class, 'addfail']);
// product-search-filter
Route::get('/category', [WebProductController::class, 'category_wise_products']);
Route::get('/categories-{category_slug}/subcategory-{subcategory_slug}', [WebProductController::class, 'category_wise_products']);
Route::get('/products', [WebProductController::class, 'category_wise_products']);
Route::get('/products-{type}', [WebProductController::class, 'category_wise_products']);
Route::get('/products/{product_slug}', [WebProductController::class, 'productdetails']);
Route::get('/topdeals', [WebProductController::class, 'alltopdeals']);
// Cart
Route::get('/cart', [CartController::class, 'index']);
Route::get('/cart/clear', [CartController::class, 'clearcart']);
Route::get('/cart/clear-{vid}', [CartController::class, 'clearcart']);
Route::post('/cart/add', [CartController::class, 'addtocart']);
// checkout-orders
Route::get('/checkout', [CheckoutController::class, 'index']);
Route::post('/checkout/orderlimit', [CheckoutController::class, 'orderlimit']);
Route::post('/placeorder', [CheckoutController::class, 'placeorder']);
Route::post('/copycode', [CheckoutController::class, 'copycode']);
// third party suucess route
Route::any('/payment', [CheckoutController::class, 'paymentrequestsuccess']);
// third party suucess route
Route::get('/orders-success-{order_number}', [CheckoutController::class, 'ordersuccess']);
Route::get('/find-order', [CheckoutController::class, 'orderdetails']);
Route::get('/orders-cancel-{order_number}', [CheckoutController::class, 'cancelorder']);
// other-pages
Route::get('/contact-us', [WebOtherPagesController::class, 'contact_us']);
Route::post('/contact-us/store', [WebOtherPagesController::class, 'contact_store']);
Route::post('/subscribe', [WebOtherPagesController::class, 'subscribe']);
// legal (commented out - these routes conflict with landing page routes)
// NOTE: These are now handled by LandingHomeController in the landing middleware group
// Route::get('/termscondition', [WebOtherPagesController::class, 'termscondition']);
// Route::get('/privacypolicy', [WebOtherPagesController::class, 'privacypolicy']);
// Route::get('/aboutus', [WebOtherPagesController::class, 'aboutus']);
// Route::get('/refund_policy', [WebOtherPagesController::class, 'refund_policy']);
// Login Page
Route::get('/login', [WebUserController::class, 'user_login']);
Route::get('/register', [WebUserController::class, 'user_register']);
Route::post('/checklogin-{logintype}', [WebUserController::class, 'check_login']);
Route::post('/register_customer', [WebUserController::class, 'register_customer']);
Route::get('/forgotpassword', [WebUserController::class, 'userforgotpassword']);
Route::post('/send_userpassword', [WebUserController::class, 'send_userpassword']);
Route::get('/logout', [WebUserController::class, 'logout']);
Route::get('/deleteaccount', [WebUserController::class, 'deleteaccount']);
Route::get('/deleteprofile', [WebUserController::class, 'deleteprofile']);
//User profile
Route::get('/profile', [WebUserController::class, 'my_profile']);
Route::post('/editprofile', [WebUserController::class, 'edit_profile']);
Route::get('/change-password', [WebUserController::class, 'changepassword']);
Route::post('/updatepassword', [WebUserController::class, 'updatepassword']);
Route::get('/orders', [WebUserController::class, 'orders']);
Route::get('/favourite', [WebUserController::class, 'wishlist_product']);
Route::get('/refer-earn', [WebUserController::class, 'referearn']);
Route::get('/getproductdata', [WebProductController::class, 'getproductdata']);
// Route::get('/shop_all', [WebProductController::class, 'category_wise_products']); // DUPLICATE - removed
Route::post('/postreview', [WebProductController::class, 'postreview']);
Route::get('/category', [WebProductController::class, 'category_wise_products']);
// Route::get('/faqs', [WebOtherPagesController::class, 'faqs']); // Commented - handled by LandingHomeController
Route::get('/gallery', [WebOtherPagesController::class, 'gallery']);
// NOTE: /blogs and /blogs-{slug} routes are defined in routes/included/blog.php
});
Route::get('get-products-variant-quantity', [WebProductController::class, 'getProductsVariantQuantity']);
Route::post('changeqty', [WebProductController::class, 'changeqty']);
Route::post('cart/qtyupdate', [WebProductController::class, 'qtyupdate']);
// NOTE: Landing page routes have been moved ABOVE vendor routes (line 593)
// to prevent route conflicts with {vendor_slug} wildcard
// Bio Link Addon Routes
require __DIR__.'/biolink.php';
// Advanced SEO Addon Routes
require __DIR__.'/seo.php';
// Supplier Management Addon Routes
require __DIR__.'/suppliers.php';
// Invoicing Addon Routes
require __DIR__.'/invoices.php';
// Advanced Paylink Addon Routes
require __DIR__.'/paylink.php';
// Advanced Price Quote Addon Routes
require __DIR__.'/pricequote.php';
// Advanced Proposal Addon Routes
require __DIR__.'/proposal.php';
// Google Ads Addon Routes
require __DIR__.'/googleads.php';
// Facebook Ads Addon Routes
require __DIR__.'/facebookads.php';
// Instagram Ads Addon Routes
require __DIR__.'/instagramads.php';
// HRM Addon Routes
require __DIR__.'/hrm.php';
// Domain Management Routes
require __DIR__.'/domain.php';
// NOTE: Developer routes are now included earlier (before vendor routes)
// to prevent {vendor_slug} wildcard from catching '/developer' path
// Temporary debug route - remove after testing
// DEBUG ROUTE REMOVED - Security patch 2026-01-24
// This test route has been removed for production security
// If needed for development, uncomment locally only
Opps!
Page not found
Page you are looking for doesn't exit or an other error ocurred or temporarily unavailable.
Go To Home