import { BrowserRouter, Navigate, Route, Routes } from "react-router-dom";

import FrontendLayout from "../Layouts/FrontendLayout";

import Home from "../Pages/Home";
import About from "../Pages/About";

import BecomeSeller from "../Pages/BecomeSeller/BecomeSeller";

import SellerDashboard from "../Pages/Seller/Dashboard";
import SellerLogin from "../Pages/Seller/Login";
import SellerLogout from "../Pages/Seller/Logout";

import SellerProtectedRoute from "../components/SellerProtectedRoute";
import SellerOrders from "../Pages/Seller/Orders";
import SellerProductsIndex from "../Pages/Seller/Products/Index";
import SellerProductCreate from "../Pages/Seller/Products/Create";
import SellerProductEdit from "../Pages/Seller/Products/Edit";
import SellerProductShow from "../Pages/Seller/Products/Show";

import Products from "../Pages/Storefront/Products";

import Checkout from "../Pages/Storefront/Checkout";

import OrderSuccess from "../Pages/Storefront/OrderSuccess";

import CategoryProducts from "../Pages/Storefront/CategoryProducts";

import ProductDetail from "../Pages/Storefront/ProductDetail";
import Cart from "../Pages/Storefront/Cart";
import FlashSalePage from "../Pages/Storefront/FlashSalePage";
import HomeBannerManager from "../Pages/Admin/HomeBannerManager";

import Categories from "../Pages/Storefront/Categories";

import Account from "../Pages/Storefront/Account";

import VendorStore from "../Pages/Storefront/VendorStore";

import SearchResults from "../Pages/Storefront/SearchResults";
import ScrollToTop from "../components/common/ScrollToTop";

import SellerInventory from "../Pages/Seller/Inventory";

import SellerCustomers from "../Pages/Seller/Customers";

import SellerWallet from "../Pages/Seller/Wallet";

import SellerPromotions from "../Pages/Seller/Promotions";

import SellerReturns from "../Pages/Seller/Returns";

import SellerReviews from "../Pages/Seller/Reviews";

import SellerReports from "../Pages/Seller/Reports";

import SellerStoreSettings from "../Pages/Seller/StoreSettings";

import SellerStaff from "../Pages/Seller/Staff";

import SellerProfile from "../Pages/Seller/Profile";

import SellerNotifications from "../Pages/Seller/Notifications";

import SellerSupport from "../Pages/Seller/Support";

/*
|--------------------------------------------------------------------------
| FACEVALY ADMIN REACT ROUTES
|--------------------------------------------------------------------------
|
| Merge these imports and routes into resources/js/router/Router.jsx.
|
*/

import AdminProtectedRoute from "../admin/AdminProtectedRoute";

import AdminLogin from "../Pages/Admin/Login";
import AdminDashboard from "../Pages/Admin/Dashboard";
import AdminSellers from "../Pages/Admin/Sellers";
import AdminProducts from "../Pages/Admin/Products";
import AdminPriceAdjustments from "../Pages/Admin/PriceAdjustments";
import AdminProfile from "../Pages/Admin/Profile";
import AdminCatalog from "../Pages/Admin/Catalog";
import AdminOrders from "../Pages/Admin/Orders";
import AdminFinance from "../Pages/Admin/Finance";
import AdminPromotions from "../Pages/Admin/Promotions";
import AdminBanners from "../Pages/Admin/Banners";
import AdminContent from "../Pages/Admin/Content";
import AdminCourier from "../Pages/Admin/Courier";
import AdminCustomers from "../Pages/Admin/Customers";
import AdminReturns from "../Pages/Admin/Returns";
import AdminReviews from "../Pages/Admin/Reviews";
import AdminSupport from "../Pages/Admin/Support";
import AdminReports from "../Pages/Admin/Reports";
import AdminUsers from "../Pages/Admin/AdminUsers";
import AdminAuditLogs from "../Pages/Admin/AuditLogs";
import AdminSystemHealth from "../Pages/Admin/SystemHealth";
import AdminSettings from "../Pages/Admin/Settings";

function PlaceholderPage({ title }) {
    return (
        <div
            style={{
                maxWidth: "1280px",
                margin: "0 auto",
                padding: "50px 20px",
            }}
        >
            <h1>{title}</h1>
        </div>
    );
}

export default function AppRouter() {
    return (
        <BrowserRouter>
            {/* ============================================================
                GLOBAL SCROLL FIX
            ============================================================ */}

            <ScrollToTop />
            <Routes>
                {/* =====================================================
                    NORMAL FRONTEND WEBSITE
                    Header + Navigation + Footer থাকবে
                ====================================================== */}
                <Route element={<FrontendLayout />}>
                    <Route path="/" element={<Home />} />

                    <Route path="/about" element={<About />} />

                    <Route path="/categories" element={<Categories />} />

                    <Route
                        path="/category/:slug"
                        element={<CategoryProducts />}
                    />

                    <Route path="/product/:slug" element={<ProductDetail />} />

                    <Route path="/cart" element={<Cart />} />

                    <Route path="/search" element={<SearchResults />} />

                    <Route path="/flash-sale" element={<FlashSalePage />} />

                    <Route
                        path="/brands"
                        element={<PlaceholderPage title="Brands" />}
                    />

                    <Route path="/store/:slug" element={<VendorStore />} />

                    <Route
                        path="/search"
                        element={<PlaceholderPage title="Search Results" />}
                    />

                    <Route
                        path="/wishlist"
                        element={<PlaceholderPage title="Wishlist" />}
                    />

                    <Route path="/account" element={<Account />} />

                    <Route
                        path="/orders"
                        element={<PlaceholderPage title="My Orders" />}
                    />

                    <Route
                        path="/login"
                        element={<PlaceholderPage title="Customer Login" />}
                    />

                    <Route
                        path="/register"
                        element={<PlaceholderPage title="Create Account" />}
                    />

                    <Route
                        path="/contact"
                        element={<PlaceholderPage title="Contact Us" />}
                    />

                    <Route
                        path="/help"
                        element={<PlaceholderPage title="Help Center" />}
                    />

                    <Route
                        path="/returns"
                        element={<PlaceholderPage title="Return & Refund" />}
                    />

                    <Route
                        path="/shipping"
                        element={
                            <PlaceholderPage title="Shipping Information" />
                        }
                    />

                    <Route
                        path="/privacy"
                        element={<PlaceholderPage title="Privacy Policy" />}
                    />

                    <Route
                        path="/terms"
                        element={<PlaceholderPage title="Terms & Conditions" />}
                    />

                    <Route path="/shop" element={<Products />} />

                    <Route path="/checkout" element={<Checkout />} />

                    <Route
                        path="/order-success/:token"
                        element={<OrderSuccess />}
                    />
                </Route>
                {/* =====================================================
                    BECOME SELLER
                    STANDALONE PAGE
                    FrontendLayout থাকবে না
                ====================================================== */}
                <Route path="/become-a-seller" element={<BecomeSeller />} />
                {/* =====================================================
                    SELLER LOGIN
                    STANDALONE
                ====================================================== */}
                <Route path="/seller/login" element={<SellerLogin />} />
                {/* =====================================================
                    SELLER LOGOUT
                ====================================================== */}
                <Route path="/seller/logout" element={<SellerLogout />} />
                {/* =====================================================
                    SELLER DASHBOARD
                    নিজের SellerLayout ব্যবহার করবে
                ====================================================== */}
                <Route
                    path="/seller/dashboard"
                    element={
                        <SellerProtectedRoute>
                            <SellerDashboard />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/orders"
                    element={
                        <SellerProtectedRoute>
                            <SellerOrders />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/products"
                    element={
                        <SellerProtectedRoute>
                            <SellerProductsIndex />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/products/create"
                    element={
                        <SellerProtectedRoute>
                            <SellerProductCreate />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/products/:productId/edit"
                    element={
                        <SellerProtectedRoute>
                            <SellerProductEdit />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/products/:productId"
                    element={
                        <SellerProtectedRoute>
                            <SellerProductShow />
                        </SellerProtectedRoute>
                    }
                />
                /*
                |--------------------------------------------------------------------------
                | ROUTES
                |--------------------------------------------------------------------------
                | | These examples assume SellerProtectedRoute is already
                imported. | */
                <Route
                    path="/seller/inventory"
                    element={
                        <SellerProtectedRoute>
                            <SellerInventory />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/customers"
                    element={
                        <SellerProtectedRoute>
                            <SellerCustomers />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/wallet"
                    element={
                        <SellerProtectedRoute>
                            <SellerWallet />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/promotions"
                    element={
                        <SellerProtectedRoute>
                            <SellerPromotions />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/returns"
                    element={
                        <SellerProtectedRoute>
                            <SellerReturns />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/reviews"
                    element={
                        <SellerProtectedRoute>
                            <SellerReviews />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/reports"
                    element={
                        <SellerProtectedRoute>
                            <SellerReports />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/store"
                    element={
                        <SellerProtectedRoute>
                            <SellerStoreSettings />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/staff"
                    element={
                        <SellerProtectedRoute>
                            <SellerStaff />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/profile"
                    element={
                        <SellerProtectedRoute>
                            <SellerProfile />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/support"
                    element={
                        <SellerProtectedRoute>
                            <SellerSupport />
                        </SellerProtectedRoute>
                    }
                />
                <Route
                    path="/seller/notifications"
                    element={
                        <SellerProtectedRoute>
                            <SellerNotifications />
                        </SellerProtectedRoute>
                    }
                />
             
                /*
                |--------------------------------------------------------------------------
                | ROUTES
                |--------------------------------------------------------------------------
                */
                <Route path="/admin/login" element={<AdminLogin />} />
                <Route
                    path="/admin"
                    element={
                        <AdminProtectedRoute>
                            <AdminDashboard />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/profile"
                    element={
                        <AdminProtectedRoute>
                            <AdminProfile />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/dashboard"
                    element={
                        <AdminProtectedRoute>
                            <AdminDashboard />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/sellers"
                    element={
                        <AdminProtectedRoute permission="sellers.view">
                            <AdminSellers />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/products"
                    element={
                        <AdminProtectedRoute permission="products.view">
                            <AdminProducts />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/pricing"
                    element={
                        <AdminProtectedRoute permission="pricing.manage">
                            <AdminPriceAdjustments />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/catalog"
                    element={
                        <AdminProtectedRoute>
                            <AdminCatalog />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/orders"
                    element={
                        <AdminProtectedRoute permission="orders.view">
                            <AdminOrders />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/finance"
                    element={
                        <AdminProtectedRoute permission="finance.view">
                            <AdminFinance />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/promotions"
                    element={
                        <AdminProtectedRoute permission="promotions.manage">
                            <AdminPromotions />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/content"
                    element={
                        <AdminProtectedRoute permission="content.manage">
                            <AdminContent />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/banners"
                    element={
                        <AdminProtectedRoute permission="banners.manage">
                            <AdminBanners />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/courier"
                    element={
                        <AdminProtectedRoute permission="courier.manage">
                            <AdminCourier />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/customers"
                    element={
                        <AdminProtectedRoute permission="customers.view">
                            <AdminCustomers />
                        </AdminProtectedRoute>
                    }
                />

                   <Route
                    path="/admin/home-banner"
                    element={
                        <AdminProtectedRoute  >
                            <HomeBannerManager />
                         </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/returns"
                    element={
                        <AdminProtectedRoute permission="returns.manage">
                            <AdminReturns />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/reviews"
                    element={
                        <AdminProtectedRoute permission="reviews.manage">
                            <AdminReviews />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/support"
                    element={
                        <AdminProtectedRoute permission="support.manage">
                            <AdminSupport />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/reports"
                    element={
                        <AdminProtectedRoute permission="reports.view">
                            <AdminReports />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/administrators"
                    element={
                        <AdminProtectedRoute permission="admins.manage">
                            <AdminUsers />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/audit-logs"
                    element={
                        <AdminProtectedRoute permission="audit.view">
                            <AdminAuditLogs />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/system-health"
                    element={
                        <AdminProtectedRoute permission="system.view">
                            <AdminSystemHealth />
                        </AdminProtectedRoute>
                    }
                />
                <Route
                    path="/admin/settings"
                    element={
                        <AdminProtectedRoute permission="settings.manage">
                            <AdminSettings />
                        </AdminProtectedRoute>
                    }
                />
                {/* =====================================================
                    FALLBACK
                ====================================================== */}
                <Route path="*" element={<Navigate to="/" replace />} />
            </Routes>
        </BrowserRouter>
    );
}
