104 lines
4.3 KiB
PHP
104 lines
4.3 KiB
PHP
<?php
|
|
declare(strict_types=1);
|
|
|
|
namespace Bildirchin;
|
|
|
|
if (session_status() === PHP_SESSION_NONE) {
|
|
session_start();
|
|
}
|
|
|
|
// Autoloader for Bildirchin namespace
|
|
spl_autoload_register(function ($class) {
|
|
$prefix = 'Bildirchin\\';
|
|
$baseDir = __DIR__ . '/../src/';
|
|
|
|
$len = strlen($prefix);
|
|
if (strncmp($prefix, $class, $len) !== 0) {
|
|
return;
|
|
}
|
|
|
|
$relativeClass = substr($class, $len);
|
|
$file = $baseDir . str_replace('\\', '/', $relativeClass) . '.php';
|
|
|
|
if (file_exists($file)) {
|
|
require $file;
|
|
}
|
|
});
|
|
|
|
// Initialize database schema & seed if needed
|
|
Database::getConnection();
|
|
|
|
// Parse Request URI
|
|
$requestUri = parse_url($_SERVER['REQUEST_URI'], PHP_URL_PATH) ?? '/';
|
|
$requestMethod = $_SERVER['REQUEST_METHOD'];
|
|
|
|
// Simple routing system
|
|
if ($requestUri === '/' || $requestUri === '') {
|
|
(new Controllers\HomeController())->index();
|
|
} elseif ($requestUri === '/about') {
|
|
(new Controllers\HomeController())->about();
|
|
} elseif ($requestUri === '/contact') {
|
|
(new Controllers\HomeController())->contact();
|
|
} elseif ($requestUri === '/products') {
|
|
(new Controllers\ProductController())->index();
|
|
} elseif (preg_match('#^/product/([a-zA-Z0-9_-]+)$#', $requestUri, $matches)) {
|
|
(new Controllers\ProductController())->detail($matches[1]);
|
|
} elseif ($requestUri === '/cart') {
|
|
(new Controllers\CartController())->index();
|
|
} elseif ($requestUri === '/cart/add' && $requestMethod === 'POST') {
|
|
(new Controllers\CartController())->add();
|
|
} elseif ($requestUri === '/cart/update' && $requestMethod === 'POST') {
|
|
(new Controllers\CartController())->update();
|
|
} elseif ($requestUri === '/cart/remove') {
|
|
(new Controllers\CartController())->remove();
|
|
} elseif ($requestUri === '/checkout') {
|
|
(new Controllers\OrderController())->checkout();
|
|
} elseif ($requestUri === '/order/submit' && $requestMethod === 'POST') {
|
|
(new Controllers\OrderController())->submit();
|
|
} elseif ($requestUri === '/order/success') {
|
|
(new Controllers\OrderController())->success();
|
|
} elseif ($requestUri === '/track') {
|
|
(new Controllers\OrderController())->track();
|
|
} elseif ($requestUri === '/wholesale') {
|
|
(new Controllers\WholesaleController())->index();
|
|
} elseif ($requestUri === '/wholesale/inquiry' && $requestMethod === 'POST') {
|
|
(new Controllers\WholesaleController())->submitInquiry();
|
|
} elseif ($requestUri === '/blog') {
|
|
(new Controllers\BlogController())->index();
|
|
} elseif (preg_match('#^/blog/([a-zA-Z0-9_-]+)$#', $requestUri, $matches)) {
|
|
(new Controllers\BlogController())->detail($matches[1]);
|
|
} elseif ($requestUri === '/api/wholesale/calculate') {
|
|
(new Controllers\ApiController())->calculateWholesale();
|
|
}
|
|
// Admin Routes
|
|
elseif ($requestUri === '/admin' || $requestUri === '/admin/dashboard') {
|
|
(new Controllers\AdminController())->dashboard();
|
|
} elseif ($requestUri === '/admin/login') {
|
|
(new Controllers\AdminController())->login();
|
|
} elseif ($requestUri === '/admin/logout') {
|
|
(new Controllers\AdminController())->logout();
|
|
} elseif ($requestUri === '/admin/products') {
|
|
(new Controllers\AdminController())->products();
|
|
} elseif ($requestUri === '/admin/product/save' && $requestMethod === 'POST') {
|
|
(new Controllers\AdminController())->productSave();
|
|
} elseif ($requestUri === '/admin/product/delete' && $requestMethod === 'POST') {
|
|
(new Controllers\AdminController())->productDelete();
|
|
} elseif ($requestUri === '/admin/orders') {
|
|
(new Controllers\AdminController())->orders();
|
|
} elseif (preg_match('#^/admin/order/([0-9]+)$#', $requestUri, $matches)) {
|
|
(new Controllers\AdminController())->orderDetail((int)$matches[1]);
|
|
} elseif ($requestUri === '/admin/order/update-status' && $requestMethod === 'POST') {
|
|
(new Controllers\AdminController())->orderUpdateStatus();
|
|
} elseif (preg_match('#^/admin/invoice/([0-9]+)$#', $requestUri, $matches)) {
|
|
(new Controllers\AdminController())->invoice((int)$matches[1]);
|
|
} elseif ($requestUri === '/admin/wholesale-inquiries') {
|
|
(new Controllers\AdminController())->wholesaleInquiries();
|
|
} elseif ($requestUri === '/admin/wholesale-inquiry/update-status' && $requestMethod === 'POST') {
|
|
(new Controllers\AdminController())->inquiryUpdateStatus();
|
|
} elseif ($requestUri === '/admin/settings') {
|
|
(new Controllers\AdminController())->settings();
|
|
} else {
|
|
http_response_code(404);
|
|
require __DIR__ . '/../views/pages/404.php';
|
|
}
|