From bf8b6225a330abcb10a00e74d9e7e0e3592ddb13 Mon Sep 17 00:00:00 2001 From: Myron Blair Date: Sat, 16 May 2026 23:00:37 -0500 Subject: [PATCH] v1.0.0 - Initial backup --- .htaccess | 58 ++ README.md | 208 ++++ account/addresses.php | 289 ++++++ account/includes/footer.php | 6 + account/includes/sidebar.php | 132 +++ account/index.php | 357 +++++++ account/order.php | 246 +++++ account/orders.php | 137 +++ account/profile.php | 248 +++++ account/reviews.php | 294 ++++++ account/rewards.php | 452 ++++++++ account/wallet.php | 196 ++++ account/wishlist.php | 148 +++ admin/analytics.php | 714 +++++++++++++ admin/assets/admin.css | 642 ++++++++++++ admin/assets/admin.js | 200 ++++ admin/campaigns.php | 243 +++++ admin/categories.php | 206 ++++ admin/coupons.php | 260 +++++ admin/customers.php | 391 +++++++ admin/emails.php | 218 ++++ admin/gift-cards.php | 326 ++++++ admin/includes/footer.php | 8 + admin/includes/header.php | 166 +++ admin/index.php | 197 ++++ admin/integrations.php | 523 ++++++++++ admin/inventory.php | 337 ++++++ admin/login.php | 68 ++ admin/logout.php | 10 + admin/order.php | 299 ++++++ admin/orders.php | 279 +++++ admin/payments.php | 169 +++ admin/pos.php | 1386 +++++++++++++++++++++++++ admin/product-edit.php | 293 ++++++ admin/products.php | 290 ++++++ admin/reviews.php | 198 ++++ admin/settings.php | 233 +++++ admin/shipping.php | 124 +++ admin/users.php | 267 +++++ api/cart.php | 121 +++ api/create-checkout-session.php | 119 +++ api/create-payment-intent.php | 87 ++ api/delete-account.php | 53 + api/loyalty.php | 94 ++ api/orders.php | 174 ++++ api/payment-status.php | 136 +++ api/pos-order.php | 191 ++++ api/products.php | 93 ++ api/push-subscribe.php | 83 ++ api/redeem-gift-card.php | 97 ++ api/search-customers.php | 25 + api/submit-review.php | 66 ++ api/subscribe.php | 75 ++ api/test-notification.php | 65 ++ api/validate-coupon.php | 59 ++ api/webhook.php | 147 +++ api/wishlist.php | 95 ++ assets/css/admin.css | 543 ++++++++++ assets/css/style.css | 789 ++++++++++++++ assets/icons/badge-72.svg | 5 + assets/icons/icon-128.svg | 9 + assets/icons/icon-144.svg | 9 + assets/icons/icon-152.svg | 9 + assets/icons/icon-192.png | 8 + assets/icons/icon-192.svg | 9 + assets/icons/icon-384.svg | 9 + assets/icons/icon-512.png | 8 + assets/icons/icon-512.svg | 9 + assets/icons/icon-72.svg | 9 + assets/icons/icon-96.svg | 9 + assets/images/coffee-beans.jpg | Bin 0 -> 136830 bytes assets/images/coffee-brewing.jpg | Bin 0 -> 88669 bytes assets/images/favicon.ico | 312 ++++++ assets/images/friends-coffee.jpg | Bin 0 -> 84160 bytes assets/images/hero-coffee.jpg | Bin 0 -> 117356 bytes assets/images/logo-icon.png | 312 ++++++ assets/images/logo-icon.svg | 13 + assets/images/logo.png | Bin 0 -> 137074 bytes assets/images/logo.svg | 24 + assets/images/placeholder-product.svg | 7 + assets/images/premium-coffee.jpg | Bin 0 -> 65998 bytes assets/js/main.js | 394 +++++++ cart.php | 172 +++ checkout.php | 338 ++++++ config/config.php | 62 ++ config/database.php | 18 + docs/DEPLOYMENT.md | 314 ++++++ includes/auth.php | 284 +++++ includes/db.php | 104 ++ includes/email.php | 369 +++++++ includes/footer.php | 79 ++ includes/functions.php | 378 +++++++ includes/header.php | 88 ++ includes/loyalty.php | 438 ++++++++ includes/push.php | 181 ++++ includes/sms.php | 195 ++++ includes/stripe.php | 214 ++++ index.php | 192 ++++ install/generate-icons.php | 53 + install/migrate_from_mongodb.php | 435 ++++++++ install/migration_v2.sql | 37 + install/migration_v3.sql | 96 ++ install/schema.sql | 402 +++++++ login.php | 89 ++ logout.php | 10 + manifest.json | 105 ++ offline.html | 119 +++ order-confirmation.php | 128 +++ payment.php | 287 +++++ product.php | 252 +++++ register.php | 127 +++ shop.php | 164 +++ sw.js | 269 +++++ test.php | 36 + 114 files changed, 21120 insertions(+) create mode 100644 .htaccess create mode 100644 README.md create mode 100644 account/addresses.php create mode 100644 account/includes/footer.php create mode 100644 account/includes/sidebar.php create mode 100644 account/index.php create mode 100644 account/order.php create mode 100644 account/orders.php create mode 100644 account/profile.php create mode 100644 account/reviews.php create mode 100644 account/rewards.php create mode 100644 account/wallet.php create mode 100644 account/wishlist.php create mode 100644 admin/analytics.php create mode 100644 admin/assets/admin.css create mode 100644 admin/assets/admin.js create mode 100644 admin/campaigns.php create mode 100644 admin/categories.php create mode 100644 admin/coupons.php create mode 100644 admin/customers.php create mode 100644 admin/emails.php create mode 100644 admin/gift-cards.php create mode 100644 admin/includes/footer.php create mode 100644 admin/includes/header.php create mode 100644 admin/index.php create mode 100644 admin/integrations.php create mode 100644 admin/inventory.php create mode 100644 admin/login.php create mode 100644 admin/logout.php create mode 100644 admin/order.php create mode 100644 admin/orders.php create mode 100644 admin/payments.php create mode 100644 admin/pos.php create mode 100644 admin/product-edit.php create mode 100644 admin/products.php create mode 100644 admin/reviews.php create mode 100644 admin/settings.php create mode 100644 admin/shipping.php create mode 100644 admin/users.php create mode 100644 api/cart.php create mode 100644 api/create-checkout-session.php create mode 100644 api/create-payment-intent.php create mode 100644 api/delete-account.php create mode 100644 api/loyalty.php create mode 100644 api/orders.php create mode 100644 api/payment-status.php create mode 100644 api/pos-order.php create mode 100644 api/products.php create mode 100644 api/push-subscribe.php create mode 100644 api/redeem-gift-card.php create mode 100644 api/search-customers.php create mode 100644 api/submit-review.php create mode 100644 api/subscribe.php create mode 100644 api/test-notification.php create mode 100644 api/validate-coupon.php create mode 100644 api/webhook.php create mode 100644 api/wishlist.php create mode 100644 assets/css/admin.css create mode 100644 assets/css/style.css create mode 100644 assets/icons/badge-72.svg create mode 100644 assets/icons/icon-128.svg create mode 100644 assets/icons/icon-144.svg create mode 100644 assets/icons/icon-152.svg create mode 100644 assets/icons/icon-192.png create mode 100644 assets/icons/icon-192.svg create mode 100644 assets/icons/icon-384.svg create mode 100644 assets/icons/icon-512.png create mode 100644 assets/icons/icon-512.svg create mode 100644 assets/icons/icon-72.svg create mode 100644 assets/icons/icon-96.svg create mode 100644 assets/images/coffee-beans.jpg create mode 100644 assets/images/coffee-brewing.jpg create mode 100644 assets/images/favicon.ico create mode 100644 assets/images/friends-coffee.jpg create mode 100644 assets/images/hero-coffee.jpg create mode 100644 assets/images/logo-icon.png create mode 100644 assets/images/logo-icon.svg create mode 100644 assets/images/logo.png create mode 100644 assets/images/logo.svg create mode 100644 assets/images/placeholder-product.svg create mode 100644 assets/images/premium-coffee.jpg create mode 100644 assets/js/main.js create mode 100644 cart.php create mode 100644 checkout.php create mode 100644 config/config.php create mode 100644 config/database.php create mode 100644 docs/DEPLOYMENT.md create mode 100644 includes/auth.php create mode 100644 includes/db.php create mode 100644 includes/email.php create mode 100644 includes/footer.php create mode 100644 includes/functions.php create mode 100644 includes/header.php create mode 100644 includes/loyalty.php create mode 100644 includes/push.php create mode 100644 includes/sms.php create mode 100644 includes/stripe.php create mode 100644 index.php create mode 100644 install/generate-icons.php create mode 100644 install/migrate_from_mongodb.php create mode 100644 install/migration_v2.sql create mode 100644 install/migration_v3.sql create mode 100644 install/schema.sql create mode 100644 login.php create mode 100644 logout.php create mode 100644 manifest.json create mode 100644 offline.html create mode 100644 order-confirmation.php create mode 100644 payment.php create mode 100644 product.php create mode 100644 register.php create mode 100644 shop.php create mode 100644 sw.js create mode 100644 test.php diff --git a/.htaccess b/.htaccess new file mode 100644 index 0000000..e0ec0cd --- /dev/null +++ b/.htaccess @@ -0,0 +1,58 @@ +# Tom's Java Jive - Apache Configuration + +# Enable URL rewriting +RewriteEngine On + +# Force HTTPS (uncomment in production) +RewriteCond %{HTTPS} off +RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301] + +# Remove trailing slashes +RewriteCond %{REQUEST_FILENAME} !-d +RewriteCond %{REQUEST_URI} (.+)/$ +RewriteRule ^ %1 [L,R=301] + +# Protect sensitive directories +RedirectMatch 403 /config/.*$ +RedirectMatch 403 /includes/.*\.php$ +RedirectMatch 403 /install/.*$ + +# Set default charset +AddDefaultCharset UTF-8 + +# Disable directory listing +Options -Indexes + +# Set timezone (optional) +# php_value date.timezone "America/New_York" + +# Increase upload limits (adjust as needed) +php_value upload_max_filesize 10M +php_value post_max_size 10M + +# Enable compression (optional) + + AddOutputFilterByType DEFLATE text/html text/plain text/css text/javascript application/javascript application/json + + +# Browser caching (optional) + + ExpiresActive On + ExpiresByType image/jpg "access plus 1 year" + ExpiresByType image/jpeg "access plus 1 year" + ExpiresByType image/png "access plus 1 year" + ExpiresByType image/webp "access plus 1 year" + ExpiresByType text/css "access plus 1 month" + ExpiresByType application/javascript "access plus 1 month" + + +# Security headers + + Header set X-Content-Type-Options "nosniff" + Header set X-Frame-Options "SAMEORIGIN" + Header set X-XSS-Protection "1; mode=block" + + +# Custom error pages (optional) +# ErrorDocument 404 /404.php +# ErrorDocument 500 /500.php \ No newline at end of file diff --git a/README.md b/README.md new file mode 100644 index 0000000..a2845b4 --- /dev/null +++ b/README.md @@ -0,0 +1,208 @@ +# Tom's Java Jive - E-commerce Coffee Shop + +A complete e-commerce platform built with **PHP 8.4** and **MySQL 8.0** for cPanel hosting. + +## Quick Download + +**ZIP File:** [tomsjavajive-php.zip](https://tomsjavajive.com/tomsjavajive-php.zip) + +## Features + +### Storefront +- ๐Ÿ›’ Shopping cart with session management +- ๐Ÿ“ฆ Product catalog with categories, search, and filtering +- ๐Ÿ’ณ Checkout with multiple payment options +- ๐Ÿ“ฑ PWA support (installable, offline capable) +- ๐Ÿ‘ค Customer accounts with order history + +### Admin Panel +- ๐Ÿ“Š Dashboard with sales overview +- ๐Ÿ“ˆ Advanced analytics with charts +- ๐Ÿ›๏ธ Product management (CRUD) +- ๐Ÿ“‹ Order management +- ๐Ÿ’ฐ POS (Point of Sale) system +- ๐Ÿ‘ฅ Customer management with wallet +- โญ Review moderation +- ๐ŸŽ Gift cards & coupons +- โœ‰๏ธ Email campaigns +- ๐Ÿ“ฆ Inventory tracking +- ๐Ÿšš Shipping configuration +- ๐Ÿ’ณ Payment settings +- ๐Ÿ‘ค Admin user management + +### Integrations (Placeholder Keys - Configure in Admin) +- ๐Ÿ“ง **SendGrid** - Transactional emails +- ๐Ÿ“ฑ **Twilio** - SMS notifications +- ๐Ÿ”” **Push Notifications** - Web push +- ๐Ÿ† **Loyalty Program** - 4-tier rewards system +- ๐Ÿ’ณ **Stripe Payments** - cURL-based (no Composer needed) + +## Installation + +### Requirements +- PHP 8.0+ (tested on 8.4.19) +- MySQL 8.0+ +- Apache with mod_rewrite + +### Steps + +1. **Upload Files** + - Extract the ZIP to your `public_html` folder + - Or upload via FTP + +2. **Create Database** + ``` + Log into phpMyAdmin + Create a new database (e.g., `tomsjavajive`) + ``` + +3. **Import Schema** + - Go to phpMyAdmin > Import + - Select `install/schema.sql` + - Click "Go" + +4. **Run Migrations** (for full features) + - Import `install/migration_v2.sql` + - Import `install/migration_v3.sql` + +5. **Configure Database** + - Edit `config/database.php`: + ```php + define('DB_HOST', 'localhost'); + define('DB_NAME', 'your_database_name'); + define('DB_USER', 'your_username'); + define('DB_PASS', 'your_password'); + ``` + +6. **Create Admin User** + - Visit: `https://yoursite.com/create-admin.php` + - Or import the default admin from schema.sql: + - Email: `admin@tomsjavajive.com` + - Password: `admin123!` + +7. **Configure Site URL** + - Edit `config/config.php`: + ```php + define('SITE_URL', 'https://yoursite.com'); + define('SITE_NAME', "Tom's Java Jive"); + ``` + +8. **Delete Installation Files** (Security) + ``` + Delete: create-admin.php + Delete: install/ folder (optional, keep for reference) + ``` + +## Directory Structure + +``` +/ +โ”œโ”€โ”€ admin/ # Admin panel pages +โ”‚ โ”œโ”€โ”€ assets/ # Admin CSS/JS +โ”‚ โ”œโ”€โ”€ includes/ # Admin header/footer +โ”‚ โ””โ”€โ”€ *.php # Admin pages +โ”œโ”€โ”€ account/ # Customer portal +โ”‚ โ””โ”€โ”€ includes/ # Account layout +โ”œโ”€โ”€ api/ # AJAX endpoints +โ”œโ”€โ”€ assets/ # Frontend assets +โ”‚ โ”œโ”€โ”€ css/ +โ”‚ โ”œโ”€โ”€ js/ +โ”‚ โ”œโ”€โ”€ images/ +โ”‚ โ””โ”€โ”€ icons/ +โ”œโ”€โ”€ config/ # Configuration files +โ”œโ”€โ”€ includes/ # Core PHP files +โ”‚ โ”œโ”€โ”€ auth.php # Authentication +โ”‚ โ”œโ”€โ”€ db.php # Database connection +โ”‚ โ”œโ”€โ”€ email.php # SendGrid integration +โ”‚ โ”œโ”€โ”€ sms.php # Twilio integration +โ”‚ โ”œโ”€โ”€ push.php # Push notifications +โ”‚ โ”œโ”€โ”€ loyalty.php # Loyalty program +โ”‚ โ””โ”€โ”€ functions.php # Helper functions +โ”œโ”€โ”€ install/ # Installation files +โ”‚ โ”œโ”€โ”€ schema.sql # Main database schema +โ”‚ โ”œโ”€โ”€ migration_v2.sql +โ”‚ โ””โ”€โ”€ migration_v3.sql +โ”œโ”€โ”€ manifest.json # PWA manifest +โ”œโ”€โ”€ sw.js # Service worker +โ””โ”€โ”€ *.php # Storefront pages +``` + +## Configuring Integrations + +### SendGrid (Email) +1. Get API key from https://app.sendgrid.com/settings/api_keys +2. Admin > Settings > Integrations +3. Enter API key, from email, and from name + +### Twilio (SMS) +1. Get credentials from https://console.twilio.com/ +2. Admin > Settings > Integrations +3. Enter Account SID, Auth Token, and Phone Number + +### Push Notifications +1. Generate VAPID keys at https://web-push-codelab.glitch.me/ +2. Admin > Settings > Integrations +3. Enter Public and Private keys + +## Loyalty Program Tiers + +| Tier | Points Required | Multiplier | Key Benefits | +|------|----------------|------------|--------------| +| Bronze Bean | 0 | 1x | Birthday reward | +| Silver Roast | 500 | 1.25x | Free shipping $25+ | +| Gold Blend | 1,500 | 1.5x | Free all shipping | +| Platinum Reserve | 5,000 | 2x | VIP benefits | + +**Redemption:** 100 points = $1 wallet credit + +## Security Notes + +- All passwords are hashed with `password_hash()` +- PDO prepared statements prevent SQL injection +- CSRF protection on forms +- XSS prevention via `htmlspecialchars()` +- Session-based authentication + +## Stripe Payment Integration + +The app includes a **cURL-based Stripe integration** that works without Composer: + +### Features +- **PaymentIntent API** - Inline card element payments +- **Checkout Sessions** - Hosted Stripe payment page (redirect) +- **Webhooks** - Payment confirmation handlers +- **Demo Mode** - Works without API keys for testing + +### Setup +1. Get your API keys from https://dashboard.stripe.com/apikeys +2. Edit `config/config.php`: + ```php + define('STRIPE_SECRET_KEY', 'sk_live_your_key'); + define('STRIPE_PUBLISHABLE_KEY', 'pk_live_your_key'); + define('STRIPE_WEBHOOK_SECRET', 'whsec_your_secret'); + ``` + +### Webhook Setup +1. Stripe Dashboard > Developers > Webhooks +2. Add endpoint: `https://yoursite.com/api/webhook.php` +3. Select events: `payment_intent.succeeded`, `checkout.session.completed` + +### Files +- `includes/stripe.php` - Core Stripe API class (cURL-based) +- `api/create-payment-intent.php` - Create PaymentIntent +- `api/create-checkout-session.php` - Create Checkout Session +- `api/payment-status.php` - Poll payment status +- `api/webhook.php` - Handle Stripe webhooks + +## Support + +For issues or feature requests, contact your developer. + +## License + +Proprietary - All rights reserved. + +--- + +**Version:** 2.0 +**Last Updated:** December 2025 diff --git a/account/addresses.php b/account/addresses.php new file mode 100644 index 0000000..dd568f5 --- /dev/null +++ b/account/addresses.php @@ -0,0 +1,289 @@ + $index >= 0 && isset($addresses[$index]['id']) ? $addresses[$index]['id'] : uniqid('addr_'), + 'name' => trim($_POST['name'] ?? ''), + 'phone' => trim($_POST['phone'] ?? ''), + 'address' => trim($_POST['address'] ?? ''), + 'address2' => trim($_POST['address2'] ?? ''), + 'city' => trim($_POST['city'] ?? ''), + 'state' => trim($_POST['state'] ?? ''), + 'zip' => trim($_POST['zip'] ?? ''), + 'country' => trim($_POST['country'] ?? 'USA'), + 'is_default' => isset($_POST['is_default']), + ]; + + // Validate + if (empty($address['name']) || empty($address['address']) || empty($address['city']) || empty($address['zip'])) { + setFlash('error', 'Please fill in all required fields'); + } else { + // Handle default + if ($address['is_default']) { + foreach ($addresses as &$a) { + $a['is_default'] = false; + } + } + + if ($index >= 0 && isset($addresses[$index])) { + $addresses[$index] = $address; + } else { + $addresses[] = $address; + } + + // Save + db()->query( + "UPDATE customers SET addresses = :addresses WHERE customer_id = :id", + ['addresses' => json_encode($addresses), 'id' => $customer['customer_id']] + ); + + setFlash('success', $action === 'add' ? 'Address added' : 'Address updated'); + redirect('/account/addresses.php'); + } + } + + if ($action === 'delete') { + $index = intval($_POST['index'] ?? -1); + if ($index >= 0 && isset($addresses[$index])) { + array_splice($addresses, $index, 1); + db()->query( + "UPDATE customers SET addresses = :addresses WHERE customer_id = :id", + ['addresses' => json_encode($addresses), 'id' => $customer['customer_id']] + ); + setFlash('success', 'Address deleted'); + } + redirect('/account/addresses.php'); + } + + if ($action === 'set_default') { + $index = intval($_POST['index'] ?? -1); + if ($index >= 0 && isset($addresses[$index])) { + foreach ($addresses as $i => &$a) { + $a['is_default'] = ($i === $index); + } + db()->query( + "UPDATE customers SET addresses = :addresses WHERE customer_id = :id", + ['addresses' => json_encode($addresses), 'id' => $customer['customer_id']] + ); + setFlash('success', 'Default address updated'); + } + redirect('/account/addresses.php'); + } +} + +require_once __DIR__ . '/../includes/header.php'; +require_once __DIR__ . '/includes/sidebar.php'; +?> + +
+
+

My Addresses

+

Manage your shipping and billing addresses

+
+ +
+ + +
+ +
+ + + +
+ +
+ + + +
+
+ +

No addresses saved

+

Add an address for faster checkout.

+ +
+
+ +
+ $addr): ?> +
+
+ + Default + + +

+ +

+ +

+ +

+ , +

+

+ + +

+ +

+ + +
+ + + +
+ + + +
+ + +
+ + + +
+
+
+
+ +
+ + + + + + + + diff --git a/account/includes/footer.php b/account/includes/footer.php new file mode 100644 index 0000000..ea85462 --- /dev/null +++ b/account/includes/footer.php @@ -0,0 +1,6 @@ + + + + + + diff --git a/account/includes/sidebar.php b/account/includes/sidebar.php new file mode 100644 index 0000000..2f6bd28 --- /dev/null +++ b/account/includes/sidebar.php @@ -0,0 +1,132 @@ + + + + +
+
+ +
+ + + + + diff --git a/admin/includes/header.php b/admin/includes/header.php new file mode 100644 index 0000000..537255e --- /dev/null +++ b/admin/includes/header.php @@ -0,0 +1,166 @@ + + + + + + + <?= $pageTitle ?? 'Admin' ?> - Tom's Java Jive Admin + + + + + + + + + +
+ + + + +
+
+ + + + +
+
+ + + + +
+
+
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ +
+
+
diff --git a/admin/index.php b/admin/index.php new file mode 100644 index 0000000..0dcbaa6 --- /dev/null +++ b/admin/index.php @@ -0,0 +1,197 @@ +count('orders'); +$todayOrders = db()->count('orders', 'DATE(created_at) = CURDATE()'); +$totalRevenue = db()->fetch("SELECT COALESCE(SUM(total), 0) as total FROM orders WHERE payment_status = 'paid'")['total'] ?? 0; +$todayRevenue = db()->fetch("SELECT COALESCE(SUM(total), 0) as total FROM orders WHERE payment_status = 'paid' AND DATE(created_at) = CURDATE()")['total'] ?? 0; +$totalCustomers = db()->count('customers'); +$totalProducts = db()->count('products', 'is_active = 1'); +$lowStockProducts = db()->count('products', 'stock <= low_stock_threshold AND is_active = 1'); +$pendingOrders = db()->count('orders', "order_status = 'pending'"); + +// Recent orders +$recentOrders = db()->fetchAll( + "SELECT * FROM orders ORDER BY created_at DESC LIMIT 10" +); + +// Low stock products +$lowStockItems = db()->fetchAll( + "SELECT * FROM products WHERE stock <= low_stock_threshold AND is_active = 1 ORDER BY stock ASC LIMIT 5" +); +?> + + + + +
+
+
+ +
+
+
Today's Revenue
+
+ +
+
+ +
+
+
Today's Orders
+
+ +
+
+ +
+
+
Total Customers
+
+ +
+
+ +
+
+
Pending Orders
+
+
+ +
+ +
+
+

Recent Orders

+ View All +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + +
OrderCustomerTotalStatusDate
+ No orders yet +
+ + + + + 'warning', + 'confirmed', 'processing' => 'primary', + 'shipped', 'delivered' => 'success', + 'cancelled', 'refunded' => 'error', + default => 'primary' + }; + ?> + + + +
+
+
+ + +
+ +
+
+

Overview

+
+
+
+ Total Revenue + +
+
+ Total Orders + +
+
+ Active Products + +
+
+ Low Stock Items + +
+
+
+ + + +
+
+

+ Low Stock +

+
+
+ +
+ + left +
+ + + Manage Inventory + +
+
+ + + + +
+
+ + diff --git a/admin/integrations.php b/admin/integrations.php new file mode 100644 index 0000000..d30f70f --- /dev/null +++ b/admin/integrations.php @@ -0,0 +1,523 @@ + ['sendgrid_api_key', 'sendgrid_from_email', 'sendgrid_from_name', 'email_notifications_enabled'], + 'twilio' => ['twilio_account_sid', 'twilio_auth_token', 'twilio_phone_number', 'sms_notifications_enabled'], + 'push' => ['vapid_public_key', 'vapid_private_key', 'push_notifications_enabled'], + 'loyalty' => ['loyalty_enabled'] + ]; + + if (isset($settingsMap[$section])) { + foreach ($settingsMap[$section] as $key) { + $value = $_POST[$key] ?? ''; + + // Check if setting exists + $existing = db()->fetch("SELECT id FROM settings WHERE setting_key = :key", ['key' => $key]); + + if ($existing) { + db()->query( + "UPDATE settings SET setting_value = :value, updated_at = NOW() WHERE setting_key = :key", + ['value' => $value, 'key' => $key] + ); + } else { + db()->insert('settings', [ + 'setting_key' => $key, + 'setting_value' => $value + ]); + } + } + + setFlash('success', ucfirst($section) . ' settings saved successfully!'); + } + + redirect('/admin/integrations.php'); +} + +// Load current settings +$settings = []; +$allSettings = db()->fetchAll("SELECT setting_key, setting_value FROM settings"); +foreach ($allSettings as $s) { + $settings[$s['setting_key']] = $s['setting_value']; +} +?> + + + + + + +
+ +
+ + + +
+
+
+
+ +
+
+

SendGrid Email

+

+ Send transactional emails (order confirmations, shipping updates, etc.) +

+
+
+ + + + +
+
+
+ + +
+
+ + +

+ Get your API key from + SendGrid Dashboard +

+
+
+ +
+
+ + +
+
+ + "> +
+
+ +
+ +
+ +
+ + +
+
+
+
+ + +
+
+
+
+ +
+
+

Twilio SMS

+

+ Send SMS notifications for orders, shipping updates, and promotions +

+
+
+ + + + +
+
+
+ + +
+
+ + +
+
+ + +
+
+ +
+ + +

+ Get your credentials from + Twilio Console +

+
+ +
+ +
+ +
+ + +
+
+
+
+ + +
+
+
+
+ +
+
+

Push Notifications

+

+ Web push notifications for order updates and promotions +

+
+
+ + + + +
+
+
+ + +
+ + +
+ +
+ + +

+ Generate VAPID keys at + Web Push Codelab +

+
+ +
+ +
+ + +
+
+
+ + +
+
+
+
+ +
+
+

Loyalty Program

+

+ Reward customers with points and tiers (Bronze, Silver, Gold, Platinum) +

+
+
+ + + + +
+
+
+ + +
+ +
+ +
+

Tier Structure

+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
TierMin PointsMultiplierKey Benefits
Bronze Bean01x1 point/$1, Birthday reward
Silver Roast5001.25xFree shipping $25+, Double points weekends
Gold Blend1,5001.5xFree shipping all orders, Priority support
Platinum Reserve5,0002xExpress shipping, VIP events, Account manager
+

+ 100 points = $1 credit โ€ข Points earned on every purchase +

+
+ + +
+
+
+ + + + + + + diff --git a/admin/inventory.php b/admin/inventory.php new file mode 100644 index 0000000..eef142d --- /dev/null +++ b/admin/inventory.php @@ -0,0 +1,337 @@ +fetch("SELECT name, stock FROM products WHERE product_id = :id", ['id' => $_POST['product_id']]); + $newStock = max(0, ($product['stock'] ?? 0) + $adjustment); + + db()->update('products', ['stock' => $newStock], 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', $product['name'] . ' stock adjusted by ' . ($adjustment > 0 ? '+' : '') . $adjustment . '. New stock: ' . $newStock); + } + header('Location: /admin/inventory.php'); + exit; + } + + if ($action === 'update_threshold' && !empty($_POST['product_id'])) { + $threshold = intval($_POST['low_stock_threshold'] ?? 10); + db()->update('products', ['low_stock_threshold' => $threshold], 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', 'Low stock threshold updated'); + header('Location: /admin/inventory.php'); + exit; + } + + if ($action === 'bulk_adjust') { + $adjustments = $_POST['adjustments'] ?? []; + $count = 0; + foreach ($adjustments as $productId => $adj) { + $adj = intval($adj); + if ($adj != 0) { + db()->query( + "UPDATE products SET stock = GREATEST(0, stock + :adj) WHERE product_id = :id", + ['adj' => $adj, 'id' => $productId] + ); + $count++; + } + } + if ($count > 0) { + setFlash('success', "Adjusted stock for $count products"); + } + header('Location: /admin/inventory.php'); + exit; + } +} + +// Filters +$filter = $_GET['filter'] ?? ''; +$search = $_GET['search'] ?? ''; +$category = $_GET['category'] ?? ''; + +$where = ['1=1']; +$params = []; + +if ($search) { + $where[] = '(name LIKE :search OR sku LIKE :search OR barcode LIKE :search)'; + $params['search'] = '%' . $search . '%'; +} + +if ($category) { + $where[] = 'category = :category'; + $params['category'] = $category; +} + +if ($filter === 'low') { + $where[] = 'stock <= low_stock_threshold AND stock > 0'; +} elseif ($filter === 'out') { + $where[] = 'stock <= 0'; +} elseif ($filter === 'in') { + $where[] = 'stock > low_stock_threshold'; +} + +$whereClause = implode(' AND ', $where); + +$products = db()->fetchAll( + "SELECT product_id, name, sku, barcode, category, stock, low_stock_threshold, price, is_active + FROM products + WHERE {$whereClause} + ORDER BY stock ASC, name ASC", + $params +); + +// Get categories for filter +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' ORDER BY category" +); + +// Stats +$totalProducts = db()->count('products', 'is_active = 1'); +$lowStockCount = db()->count('products', 'stock <= low_stock_threshold AND stock > 0 AND is_active = 1'); +$outOfStockCount = db()->count('products', 'stock <= 0 AND is_active = 1'); +$totalStock = db()->fetch("SELECT SUM(stock) as total FROM products WHERE is_active = 1")['total'] ?? 0; +$inventoryValue = db()->fetch("SELECT SUM(stock * price) as total FROM products WHERE is_active = 1")['total'] ?? 0; +?> + + + + +
+ + + +
+
+
+
+
+
Total Units
+
+
+
+
+
+
+
Inventory Value
+
+
+
+
+
+
+
Low Stock
+
+
+
+
+
+
+
Out of Stock
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+
+ + +
+ + + Clear + +
+
+
+ + + + + +
+
+ products +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
ProductSKU / BarcodeCategoryStockThresholdStatusActions
No products found
+ + + Inactive + + + + + + +
+ + + - + +
+ + + + + + + + + Out of Stock + + Low Stock + + In Stock + + + + + + +
+
+
+ + + + + + + diff --git a/admin/login.php b/admin/login.php new file mode 100644 index 0000000..4c1f4b7 --- /dev/null +++ b/admin/login.php @@ -0,0 +1,68 @@ + + + + + + +Admin Login โ€” Tom's Java Jive + + + + +
+ + +
โš 
+ +
+ + + + + +
+ โ† Back to Store +
+ + diff --git a/admin/logout.php b/admin/logout.php new file mode 100644 index 0000000..db5e9b3 --- /dev/null +++ b/admin/logout.php @@ -0,0 +1,10 @@ +fetch("SELECT * FROM orders WHERE order_id = :id", ['id' => $orderId]); + +if (!$order) { + setFlash('error', 'Order not found'); + header('Location: /admin/orders.php'); + exit; +} + +// Handle status update +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $action = $_POST['action'] ?? ''; + + if ($action === 'update_status') { + $status = $_POST['status'] ?? ''; + $trackingNumber = $_POST['tracking_number'] ?? ''; + + $updateData = ['order_status' => $status]; + if ($trackingNumber) { + $updateData['tracking_number'] = $trackingNumber; + } + + db()->update('orders', $updateData, 'order_id = :id', ['id' => $orderId]); + setFlash('success', 'Order status updated'); + header('Location: /admin/order.php?id=' . $orderId); + exit; + } + + if ($action === 'add_note') { + $note = trim($_POST['note'] ?? ''); + if ($note) { + $existingNotes = $order['notes'] ?? ''; + $newNote = '[' . date('M j, Y g:i A') . '] ' . $note; + $allNotes = $existingNotes ? $existingNotes . "\n" . $newNote : $newNote; + + db()->update('orders', ['notes' => $allNotes], 'order_id = :id', ['id' => $orderId]); + setFlash('success', 'Note added'); + header('Location: /admin/order.php?id=' . $orderId); + exit; + } + } +} + +$items = json_decode($order['items'], true) ?? []; +$shippingAddress = json_decode($order['shipping_address'], true) ?? []; + +$statuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded']; +?> + + + + +
+ + +
+ +
+ +
+
+

Order Items

+
+
+ + + + + + + + + + + + + + + + + + + + + + + + + 0): ?> + + + + + + 0): ?> + + + + + + 0): ?> + + + + + + + + + + +
ProductPriceQtyTotal
+ + + + + + + +
Subtotal
Shipping
Tax
Discount-
Total
+
+
+ + +
+
+

Order Notes

+
+
+ +
+ +

No notes yet.

+ + +
+ +
+
+ + +
+
+
+
+
+
+ + +
+ +
+
+

Order Status

+
+
+
+ + +
+ + +
+ +
+ + +
+ + +
+
+
+ + +
+
+

Customer

+
+
+

+

+ +

+ + + + + View Customer + + +
+
+ + + +
+
+

Shipping Address

+
+
+

+
+ , + + +

+
+
+ + + +
+
+

Payment

+
+
+
+ Method + +
+
+ Status + 'success', + 'failed' => 'error', + 'refunded' => 'warning', + default => 'primary' + }; + ?> + +
+ +
+ Stripe ID + ... +
+ +
+
+ + +
+
+

Timeline

+
+
+
+ Created + +
+ +
+ Updated + +
+ +
+
+
+
+ + diff --git a/admin/orders.php b/admin/orders.php new file mode 100644 index 0000000..e03091c --- /dev/null +++ b/admin/orders.php @@ -0,0 +1,279 @@ + $status]; + if ($trackingNumber) { + $updateData['tracking_number'] = $trackingNumber; + } + + db()->update('orders', $updateData, 'order_id = :id', ['id' => $orderId]); + setFlash('success', 'Order status updated'); + header('Location: /admin/orders.php'); + exit; + } +} + +// Filters +$status = $_GET['status'] ?? ''; +$search = $_GET['search'] ?? ''; +$dateFrom = $_GET['date_from'] ?? ''; +$dateTo = $_GET['date_to'] ?? ''; +$page = max(1, intval($_GET['page'] ?? 1)); + +// Build query +$where = ['1=1']; +$params = []; + +if ($status) { + $where[] = 'order_status = :status'; + $params['status'] = $status; +} + +if ($search) { + $where[] = '(order_number LIKE :search OR customer_name LIKE :search OR customer_email LIKE :search)'; + $params['search'] = '%' . $search . '%'; +} + +if ($dateFrom) { + $where[] = 'DATE(created_at) >= :date_from'; + $params['date_from'] = $dateFrom; +} + +if ($dateTo) { + $where[] = 'DATE(created_at) <= :date_to'; + $params['date_to'] = $dateTo; +} + +$whereClause = implode(' AND ', $where); + +// Get total and paginate +$totalOrders = db()->count('orders', $whereClause, $params); +$pagination = paginate($totalOrders, $page, ADMIN_ITEMS_PER_PAGE); + +// Get orders +$orders = db()->fetchAll( + "SELECT * FROM orders WHERE {$whereClause} ORDER BY created_at DESC LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $pagination['per_page'], 'offset' => $pagination['offset']]) +); + +$statuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded']; +?> + + + + +
+ + +
+ + + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + +
+ + + + + Clear + +
+
+
+ + +
+
+ orders found +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
OrderCustomerItemsTotalPaymentStatusDateActions
+ No orders found +
+ + + POS + + +
+ +
item + 'success', + 'failed' => 'error', + 'refunded' => 'warning', + default => 'primary' + }; + ?> + + + + + 'warning', + 'confirmed', 'processing' => 'primary', + 'shipped', 'delivered' => 'success', + 'cancelled', 'refunded' => 'error', + default => 'primary' + }; + ?> + + + + + + + + +
+
+
+ + + 1): ?> +
+ +
+ + + + + + + + diff --git a/admin/payments.php b/admin/payments.php new file mode 100644 index 0000000..2c96e61 --- /dev/null +++ b/admin/payments.php @@ -0,0 +1,169 @@ + isset($_POST['stripe_enabled']), + 'test_mode' => isset($_POST['stripe_test_mode']), + 'publishable_key' => trim($_POST['stripe_publishable_key'] ?? ''), + 'secret_key' => trim($_POST['stripe_secret_key'] ?? ''), + 'webhook_secret' => trim($_POST['stripe_webhook_secret'] ?? '') + ]); + setFlash('success', 'Stripe settings updated'); + } + + if ($section === 'methods') { + setSetting('payment_methods', [ + 'card' => isset($_POST['method_card']), + 'cash' => isset($_POST['method_cash']), + 'wallet' => isset($_POST['method_wallet']), + 'gift_card' => isset($_POST['method_gift_card']) + ]); + setFlash('success', 'Payment methods updated'); + } + + header('Location: /admin/payments.php'); + exit; +} + +$stripe = getSetting('payment_stripe', [ + 'enabled' => true, + 'test_mode' => true, + 'publishable_key' => '', + 'secret_key' => '', + 'webhook_secret' => '' +]); + +$methods = getSetting('payment_methods', [ + 'card' => true, + 'cash' => true, + 'wallet' => true, + 'gift_card' => true +]); +?> + + + + +
+ + +
+ + +
+ +
+ +
+
+

Stripe

+
+
+
+ +
+ +
+ +
+ +
+ + +
+ +
+ + +
+ +
+ + + Get this from your Stripe webhook settings +
+ + +
+
+
+ + +
+ +
+
+

POS Payment Methods

+
+
+

Select which payment methods are available in the Point of Sale system.

+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+
+
+
+
+ + diff --git a/admin/pos.php b/admin/pos.php new file mode 100644 index 0000000..44b018f --- /dev/null +++ b/admin/pos.php @@ -0,0 +1,1386 @@ +fetchAll( + "SELECT product_id, name, price, sale_price, stock, images, category, barcode, sku + FROM products WHERE is_active = 1 ORDER BY category, name" +); + +// Group products by category +$productsByCategory = []; +foreach ($products as $product) { + $cat = $product['category'] ?? 'Other'; + if (!isset($productsByCategory[$cat])) { + $productsByCategory[$cat] = []; + } + $product['images'] = json_decode($product['images'] ?? '[]', true); + $product['display_price'] = $product['sale_price'] ?? $product['price']; + $productsByCategory[$cat][] = $product; +} + +// Get held orders +$heldOrders = $_SESSION['pos_held_orders'] ?? []; + +// Get tax rate from settings +$taxRate = getSetting('tax_rate', 0) / 100; +?> + + + +
+ +
+ + +
+ + + + +
+ +
+ +
+ +

No products available

+ Add Products +
+ + 0 && $product['stock'] <= 5; + ?> +
+ +
+
+
+ +
+
+ + +
+
+ + +
+
+

Current Sale

+
+ +
+
+ +
+
+ +

Add products to start a sale

+
+
+ + +
+
+ + +
+
+ + +
+
+
+ +
+
+ Subtotal + $0.00 +
+ +
+ Tax (%) + $0.00 +
+
+ Total + $0.00 +
+
+ +
+ +
+ + + +
+
+
+
+ + + + + + + + + + + + + + + + diff --git a/admin/product-edit.php b/admin/product-edit.php new file mode 100644 index 0000000..9876b22 --- /dev/null +++ b/admin/product-edit.php @@ -0,0 +1,293 @@ +fetch("SELECT * FROM products WHERE product_id = :id", ['id' => $productId]); + if ($product) { + $isEdit = true; + $pageTitle = 'Edit Product'; + $product['images'] = json_decode($product['images'] ?? '[]', true); + $product['tags'] = json_decode($product['tags'] ?? '[]', true); + } +} + +if (!$product) { + $product = [ + 'product_id' => '', + 'name' => '', + 'description' => '', + 'price' => '', + 'sale_price' => '', + 'cost_price' => '', + 'sku' => '', + 'barcode' => '', + 'category' => '', + 'tags' => [], + 'images' => [], + 'stock' => 100, + 'low_stock_threshold' => 10, + 'weight' => '', + 'is_active' => 1, + 'is_featured' => 0 + ]; + $pageTitle = 'Add Product'; +} + +// Handle form submission +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + $name = trim($_POST['name'] ?? ''); + $description = trim($_POST['description'] ?? ''); + $price = floatval($_POST['price'] ?? 0); + $salePrice = !empty($_POST['sale_price']) ? floatval($_POST['sale_price']) : null; + $costPrice = !empty($_POST['cost_price']) ? floatval($_POST['cost_price']) : null; + $sku = trim($_POST['sku'] ?? ''); + $barcode = trim($_POST['barcode'] ?? ''); + $category = trim($_POST['category'] ?? ''); + $stock = intval($_POST['stock'] ?? 0); + $lowStockThreshold = intval($_POST['low_stock_threshold'] ?? 10); + $weight = !empty($_POST['weight']) ? floatval($_POST['weight']) : null; + $isActive = isset($_POST['is_active']) ? 1 : 0; + $isFeatured = isset($_POST['is_featured']) ? 1 : 0; + $imageUrls = array_filter(array_map('trim', explode("\n", $_POST['image_urls'] ?? ''))); + + // Validate + if (empty($name)) $errors['name'] = 'Product name is required'; + if ($price <= 0) $errors['price'] = 'Price must be greater than 0'; + + if (empty($errors)) { + $data = [ + 'name' => $name, + 'description' => $description, + 'price' => $price, + 'sale_price' => $salePrice, + 'cost_price' => $costPrice, + 'sku' => $sku ?: null, + 'barcode' => $barcode ?: null, + 'category' => $category ?: null, + 'images' => json_encode($imageUrls), + 'stock' => $stock, + 'low_stock_threshold' => $lowStockThreshold, + 'weight' => $weight, + 'is_active' => $isActive, + 'is_featured' => $isFeatured + ]; + + if ($isEdit) { + db()->update('products', $data, 'product_id = :id', ['id' => $productId]); + setFlash('success', 'Product updated successfully'); + } else { + $data['product_id'] = generateId('prod_'); + db()->insert('products', $data); + setFlash('success', 'Product created successfully'); + } + + header('Location: /admin/products.php'); + exit; + } + + // Keep form values on error + $product = array_merge($product, $_POST); + $product['images'] = $imageUrls; +} + +// Get categories for dropdown +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' ORDER BY category" +); +?> + + + + +
+ + Please fix the errors below +
+ + +
+
+ +
+
+
+

Basic Information

+
+
+
+ + + + + +
+ +
+ + +
+ +
+
+ + + + + +
+ +
+ + +
+
+
+
+ +
+
+

Pricing

+
+
+
+
+ + + + + +
+ +
+ + +
+
+ +
+ + +
+
+
+ +
+
+

Images

+
+
+
+ + + Enter full URLs to product images +
+ + +
+ + Product image + +
+ +
+
+
+ + +
+
+
+

Status

+
+
+
+ +
+ +
+ +
+
+
+ +
+
+

Inventory

+
+
+
+ + +
+ +
+ + +
+
+
+ +
+
+

Identifiers

+
+
+
+ + +
+ +
+ + +
+
+
+ + +
+
+
+ + diff --git a/admin/products.php b/admin/products.php new file mode 100644 index 0000000..844432c --- /dev/null +++ b/admin/products.php @@ -0,0 +1,290 @@ +delete('products', 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', 'Product deleted successfully'); + header('Location: /admin/products.php'); + exit; + } + + if ($action === 'bulk_delete' && !empty($_POST['product_ids'])) { + $ids = $_POST['product_ids']; + $placeholders = implode(',', array_fill(0, count($ids), '?')); + db()->query("DELETE FROM products WHERE product_id IN ($placeholders)", $ids); + setFlash('success', count($ids) . ' products deleted'); + header('Location: /admin/products.php'); + exit; + } + + if ($action === 'toggle_status' && !empty($_POST['product_id'])) { + $product = db()->fetch("SELECT is_active FROM products WHERE product_id = :id", ['id' => $_POST['product_id']]); + if ($product) { + db()->update('products', ['is_active' => !$product['is_active']], 'product_id = :id', ['id' => $_POST['product_id']]); + setFlash('success', 'Product status updated'); + } + header('Location: /admin/products.php'); + exit; + } +} + +// Filters +$search = $_GET['search'] ?? ''; +$category = $_GET['category'] ?? ''; +$status = $_GET['status'] ?? ''; +$page = max(1, intval($_GET['page'] ?? 1)); + +// Build query +$where = ['1=1']; +$params = []; + +if ($search) { + $where[] = '(name LIKE :search OR sku LIKE :search)'; + $params['search'] = '%' . $search . '%'; +} + +if ($category) { + $where[] = 'category = :category'; + $params['category'] = $category; +} + +if ($status === 'active') { + $where[] = 'is_active = 1'; +} elseif ($status === 'inactive') { + $where[] = 'is_active = 0'; +} elseif ($status === 'low_stock') { + $where[] = 'stock <= low_stock_threshold'; +} + +$whereClause = implode(' AND ', $where); + +// Get total and paginate +$totalProducts = db()->count('products', $whereClause, $params); +$pagination = paginate($totalProducts, $page, ADMIN_ITEMS_PER_PAGE); + +// Get products +$products = db()->fetchAll( + "SELECT * FROM products WHERE {$whereClause} ORDER BY created_at DESC LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $pagination['per_page'], 'offset' => $pagination['offset']]) +); + +// Get categories +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' ORDER BY category" +); +?> + + + + +
+ + +
+ + + +
+
+
+
+ + +
+ +
+ + +
+ +
+ + +
+ + + + + Clear + +
+
+
+ + +
+
+ products found + +
+
+ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + ImageProductSKUCategoryPriceStockStatusActions
+ No products found +
+ + + + + + + Featured + + + + + +
+ + + + +
+ + Out of Stock + + left + + + + + + Active + + Inactive + + + + + +
+ + + +
+
+ + + +
+
+
+
+ + + 1): ?> +
+ +
+ + + + + diff --git a/admin/reviews.php b/admin/reviews.php new file mode 100644 index 0000000..13f9225 --- /dev/null +++ b/admin/reviews.php @@ -0,0 +1,198 @@ +update('reviews', ['is_approved' => 1], 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review approved'); + } + + if ($action === 'reject' && $reviewId) { + db()->update('reviews', ['is_approved' => 0], 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review rejected'); + } + + if ($action === 'delete' && $reviewId) { + db()->delete('reviews', 'review_id = :id', ['id' => $reviewId]); + setFlash('success', 'Review deleted'); + } + + header('Location: /admin/reviews.php'); + exit; +} + +// Filters +$status = $_GET['status'] ?? ''; +$rating = $_GET['rating'] ?? ''; + +$where = ['1=1']; +$params = []; + +if ($status === 'pending') { + $where[] = 'is_approved = 0'; +} elseif ($status === 'approved') { + $where[] = 'is_approved = 1'; +} + +if ($rating) { + $where[] = 'rating = :rating'; + $params['rating'] = $rating; +} + +$whereClause = implode(' AND ', $where); + +$reviews = db()->fetchAll( + "SELECT r.*, p.name as product_name FROM reviews r + LEFT JOIN products p ON r.product_id = p.product_id + WHERE {$whereClause} ORDER BY r.created_at DESC LIMIT 100", + $params +); + +// Stats +$totalReviews = db()->count('reviews'); +$pendingReviews = db()->count('reviews', 'is_approved = 0'); +$avgRating = db()->fetch("SELECT AVG(rating) as avg FROM reviews WHERE is_approved = 1")['avg'] ?? 0; +?> + + + + +
+ + + +
+
+
+
+
+
Average Rating
+
+
+
+
+
+
+
Total Reviews
+
+
+
+
+
+
+
Pending Approval
+
+
+
+ + +
+
+
+
+ + +
+
+ + +
+ + + Clear + +
+
+
+ + +
+ +
+
+ No reviews found +
+
+ + +
+
+
+
+
+ + + Verified Purchase + + + Pending + +
+
+ on + โ€ข +
+
+
+ +
+ + + +
+ +
+ + + +
+ +
+ + + +
+
+
+ +
+ + + +
+ + +

+ + +

+ +

+
+
+ + +
+ + diff --git a/admin/settings.php b/admin/settings.php new file mode 100644 index 0000000..a194871 --- /dev/null +++ b/admin/settings.php @@ -0,0 +1,233 @@ + trim($_POST['store_name'] ?? ''), + 'email' => trim($_POST['store_email'] ?? ''), + 'phone' => trim($_POST['store_phone'] ?? ''), + 'address' => trim($_POST['store_address'] ?? ''), + 'currency' => $_POST['currency'] ?? 'USD', + 'timezone' => $_POST['timezone'] ?? 'America/New_York' + ]); + setFlash('success', 'Store settings updated'); + } + + if ($section === 'tax') { + setSetting('tax', [ + 'enabled' => isset($_POST['tax_enabled']), + 'rate' => floatval($_POST['tax_rate'] ?? 0), + 'included_in_price' => isset($_POST['tax_included']) + ]); + setFlash('success', 'Tax settings updated'); + } + + if ($section === 'checkout') { + setSetting('checkout', [ + 'guest_checkout' => isset($_POST['guest_checkout']), + 'require_phone' => isset($_POST['require_phone']), + 'order_notes' => isset($_POST['order_notes']), + 'terms_required' => isset($_POST['terms_required']), + 'terms_url' => trim($_POST['terms_url'] ?? '') + ]); + setFlash('success', 'Checkout settings updated'); + } + + header('Location: /admin/settings.php'); + exit; +} + +// Get current settings +$store = getSetting('store', [ + 'name' => "Tom's Java Jive", + 'email' => '', + 'phone' => '', + 'address' => '', + 'currency' => 'USD', + 'timezone' => 'America/New_York' +]); + +$tax = getSetting('tax', [ + 'enabled' => false, + 'rate' => 0, + 'included_in_price' => false +]); + +$checkout = getSetting('checkout', [ + 'guest_checkout' => true, + 'require_phone' => false, + 'order_notes' => true, + 'terms_required' => false, + 'terms_url' => '' +]); +?> + + + + +
+ + +
+ + + + +
+ +
+ +
+
+

General Settings

+
+
+
+ + +
+ +
+
+ + +
+
+ + +
+
+ +
+ + +
+ +
+
+ + +
+
+ + +
+
+ + +
+
+
+ + +
+ +
+
+

Tax Settings

+
+
+
+ +
+ +
+ + +
+ +
+ +
+ + +
+
+
+ + +
+ +
+
+

Checkout Settings

+
+
+
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ +
+ + +
+ + +
+
+
+
+
+ + diff --git a/admin/shipping.php b/admin/shipping.php new file mode 100644 index 0000000..de20dae --- /dev/null +++ b/admin/shipping.php @@ -0,0 +1,124 @@ + isset($_POST['flat_rate_enabled']), + 'flat_rate_amount' => floatval($_POST['flat_rate_amount'] ?? 0), + 'free_shipping_enabled' => isset($_POST['free_shipping_enabled']), + 'free_shipping_threshold' => floatval($_POST['free_shipping_threshold'] ?? 0), + 'local_pickup_enabled' => isset($_POST['local_pickup_enabled']), + 'processing_time' => trim($_POST['processing_time'] ?? '') + ]); + setFlash('success', 'Shipping settings updated'); + header('Location: /admin/shipping.php'); + exit; +} + +$shipping = getSetting('shipping', [ + 'flat_rate_enabled' => true, + 'flat_rate_amount' => 5.99, + 'free_shipping_enabled' => true, + 'free_shipping_threshold' => 50, + 'local_pickup_enabled' => false, + 'processing_time' => '1-2 business days' +]); +?> + + + + +
+ + +
+ + +
+
+
+
+

Shipping Methods

+
+
+ +
+
+ +
+
+ +
+ $ + +
+
+
+ + +
+
+ +
+
+ +
+ $ + +
+
+
+ + +
+
+ + Allow customers to pick up orders at your location +
+
+ + +
+ + + Displayed to customers during checkout +
+ + +
+
+
+
+
+ + diff --git a/admin/users.php b/admin/users.php new file mode 100644 index 0000000..eb609c8 --- /dev/null +++ b/admin/users.php @@ -0,0 +1,267 @@ + isset($_POST['perm_dashboard']), + 'pos' => isset($_POST['perm_pos']), + 'products' => isset($_POST['perm_products']), + 'orders' => isset($_POST['perm_orders']), + 'customers' => isset($_POST['perm_customers']), + 'settings_payment' => isset($_POST['perm_settings']), + 'settings_shipping' => isset($_POST['perm_settings']), + 'settings_email' => isset($_POST['perm_settings']), + 'admin_management' => isset($_POST['perm_admin']) + ]; + + if (empty($email) || empty($name)) { + setFlash('error', 'Email and name are required'); + } else { + $data = [ + 'email' => strtolower($email), + 'name' => $name, + 'is_master' => $isMaster, + 'permissions' => json_encode($permissions) + ]; + + if ($action === 'update' && $userId) { + if (!empty($password)) { + $data['password_hash'] = hashPassword($password); + } + db()->update('admin_users', $data, 'user_id = :id', ['id' => $userId]); + setFlash('success', 'Admin user updated'); + } else { + if (empty($password)) { + setFlash('error', 'Password is required for new users'); + } else { + $existing = db()->fetch("SELECT id FROM admin_users WHERE email = :email", ['email' => strtolower($email)]); + if ($existing) { + setFlash('error', 'Email already exists'); + } else { + $data['user_id'] = generateId('admin_'); + $data['password_hash'] = hashPassword($password); + $data['is_admin'] = 1; + db()->insert('admin_users', $data); + setFlash('success', 'Admin user created'); + } + } + } + } + + header('Location: /admin/users.php'); + exit; + } + + if ($action === 'delete' && !empty($_POST['user_id'])) { + // Don't allow deleting self or last master + $user = db()->fetch("SELECT is_master FROM admin_users WHERE user_id = :id", ['id' => $_POST['user_id']]); + if ($user && $user['is_master']) { + $masterCount = db()->count('admin_users', 'is_master = 1'); + if ($masterCount <= 1) { + setFlash('error', 'Cannot delete the last master admin'); + header('Location: /admin/users.php'); + exit; + } + } + + db()->delete('admin_users', 'user_id = :id', ['id' => $_POST['user_id']]); + setFlash('success', 'Admin user deleted'); + header('Location: /admin/users.php'); + exit; + } +} + +$users = db()->fetchAll("SELECT * FROM admin_users ORDER BY is_master DESC, name ASC"); +?> + + + + +
+ + +
+ + +
+
+ + + + + + + + + + + + + + + + + + + + + +
NameEmailRoleCreatedActions
+ + + You + + + + Master Admin + + Admin + + + + +
+ + + +
+ +
+
+
+ + + + + + + diff --git a/api/cart.php b/api/cart.php new file mode 100644 index 0000000..990de9c --- /dev/null +++ b/api/cart.php @@ -0,0 +1,121 @@ + 'Product ID required'], 400); + } + + // Verify product exists and is active + $product = db()->fetch( + "SELECT product_id, stock FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); + } + + if ($product['stock'] < $quantity) { + jsonResponse(['error' => 'Not enough stock'], 400); + } + + addToCart($productId, $quantity); + + jsonResponse([ + 'success' => true, + 'cart_count' => getCartCount(), + 'message' => 'Item added to cart' + ]); + break; + + case 'update': + $productId = $input['product_id'] ?? ''; + $quantity = intval($input['quantity'] ?? 0); + + if (!$productId) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + updateCartItem($productId, $quantity); + + jsonResponse([ + 'success' => true, + 'cart_count' => getCartCount(), + 'subtotal' => getCartTotal() + ]); + break; + + case 'remove': + $productId = $input['product_id'] ?? ''; + + if (!$productId) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + removeFromCart($productId); + + jsonResponse([ + 'success' => true, + 'cart_count' => getCartCount(), + 'subtotal' => getCartTotal() + ]); + break; + + case 'clear': + clearCart(); + jsonResponse(['success' => true, 'cart_count' => 0]); + break; + + case 'get': + $cart = getCart(); + $items = []; + $subtotal = 0; + + foreach ($cart as $productId => $quantity) { + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock, images FROM products WHERE product_id = :id", + ['id' => $productId] + ); + + if ($product) { + $images = json_decode($product['images'] ?? '[]', true); + $unitPrice = $product['sale_price'] ?? $product['price']; + $total = $unitPrice * $quantity; + $subtotal += $total; + + $items[] = [ + 'product_id' => $product['product_id'], + 'name' => $product['name'], + 'price' => $unitPrice, + 'quantity' => $quantity, + 'total' => $total, + 'image' => !empty($images) ? $images[0] : null, + 'stock' => $product['stock'] + ]; + } + } + + jsonResponse([ + 'items' => $items, + 'count' => getCartCount(), + 'subtotal' => $subtotal + ]); + break; + + default: + jsonResponse(['error' => 'Invalid action'], 400); +} diff --git a/api/create-checkout-session.php b/api/create-checkout-session.php new file mode 100644 index 0000000..4406b34 --- /dev/null +++ b/api/create-checkout-session.php @@ -0,0 +1,119 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$orderId = $input['order_id'] ?? ''; +$originUrl = $input['origin_url'] ?? ''; + +if (empty($orderId)) { + jsonResponse(['error' => 'Order ID required'], 400); +} + +if (empty($originUrl)) { + $originUrl = SITE_URL; +} + +// Get order +$order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); +} + +if ($order['payment_status'] === 'paid') { + jsonResponse(['error' => 'Order already paid'], 400); +} + +// Check if Stripe is configured +if (!isStripeConfigured()) { + // Demo mode - simulate successful payment + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'stripe_payment_intent' => 'demo_' . bin2hex(random_bytes(8)) + ], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'demo_mode' => true, + 'message' => 'Payment simulated (Stripe not configured)', + 'redirect' => '/order-confirmation.php?order=' . $orderId + ]); +} + +// Build line items from order +$items = json_decode($order['items'], true) ?? []; +$lineItems = []; + +foreach ($items as $item) { + $lineItems[] = [ + 'name' => $item['name'], + 'price' => floatval($item['price']), + 'quantity' => intval($item['quantity']), + 'currency' => 'usd' + ]; +} + +// Add shipping if applicable +if ($order['shipping_cost'] > 0) { + $lineItems[] = [ + 'name' => 'Shipping', + 'price' => floatval($order['shipping_cost']), + 'quantity' => 1, + 'currency' => 'usd' + ]; +} + +// Build success/cancel URLs +$successUrl = rtrim($originUrl, '/') . '/order-confirmation.php?order=' . $orderId . '&session_id={CHECKOUT_SESSION_ID}'; +$cancelUrl = rtrim($originUrl, '/') . '/payment.php?order=' . $orderId . '&cancelled=1'; + +try { + $session = stripe()->createCheckoutSession( + $lineItems, + $successUrl, + $cancelUrl, + [ + 'customer_email' => $order['customer_email'], + 'metadata' => [ + 'order_id' => $orderId, + 'order_number' => $order['order_number'] + ] + ] + ); + + // Store checkout session ID + db()->update('orders', + ['stripe_checkout_session' => $session['id']], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'url' => $session['url'], + 'session_id' => $session['id'] + ]); + +} catch (Exception $e) { + error_log('Stripe Checkout error: ' . $e->getMessage()); + jsonResponse(['error' => 'Failed to create checkout session: ' . $e->getMessage()], 500); +} diff --git a/api/create-payment-intent.php b/api/create-payment-intent.php new file mode 100644 index 0000000..ae8ca5a --- /dev/null +++ b/api/create-payment-intent.php @@ -0,0 +1,87 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$orderId = $input['order_id'] ?? ''; + +if (empty($orderId)) { + jsonResponse(['error' => 'Order ID required'], 400); +} + +// Get order +$order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); +} + +if ($order['payment_status'] === 'paid') { + jsonResponse(['error' => 'Order already paid'], 400); +} + +// Check if Stripe is configured +if (!isStripeConfigured()) { + // Demo mode - simulate successful payment + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'stripe_payment_intent' => 'demo_' . bin2hex(random_bytes(8)) + ], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'demo_mode' => true, + 'message' => 'Payment simulated (Stripe not configured)', + 'redirect' => '/order-confirmation.php?order=' . $orderId + ]); +} + +// Create Stripe Payment Intent using cURL-based API +try { + $paymentIntent = stripe()->createPaymentIntent( + $order['total'], + 'usd', + [ + 'metadata' => [ + 'order_id' => $orderId, + 'order_number' => $order['order_number'] + ], + 'receipt_email' => $order['customer_email'], + 'description' => 'Order #' . $order['order_number'] + ] + ); + + // Store payment intent ID + db()->update('orders', + ['stripe_payment_intent' => $paymentIntent['id']], + 'order_id = :id', + ['id' => $orderId] + ); + + jsonResponse([ + 'client_secret' => $paymentIntent['client_secret'] + ]); + +} catch (Exception $e) { + error_log('Stripe error: ' . $e->getMessage()); + jsonResponse(['error' => 'Payment initialization failed: ' . $e->getMessage()], 500); +} diff --git a/api/delete-account.php b/api/delete-account.php new file mode 100644 index 0000000..83c31c3 --- /dev/null +++ b/api/delete-account.php @@ -0,0 +1,53 @@ +query("START TRANSACTION"); + + // Delete wallet transactions + db()->query("DELETE FROM wallet_transactions WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + // Delete reviews + db()->query("DELETE FROM reviews WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + // Delete wishlist + db()->query("DELETE FROM wishlist WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + // Anonymize orders (keep for records but remove personal info) + db()->query( + "UPDATE orders SET customer_name = 'Deleted User', customer_email = 'deleted@example.com', + shipping_address = NULL, billing_address = NULL WHERE customer_id = :id", + ['id' => $customer['customer_id']] + ); + + // Remove from email subscribers + db()->query("DELETE FROM email_subscribers WHERE email = :email", ['email' => $customer['email']]); + + // Delete customer + db()->query("DELETE FROM customers WHERE customer_id = :id", ['id' => $customer['customer_id']]); + + db()->query("COMMIT"); + + // Logout + CustomerAuth::logout(); + + setFlash('success', 'Your account has been deleted. We\'re sorry to see you go!'); + redirect('/'); + +} catch (Exception $e) { + db()->query("ROLLBACK"); + setFlash('error', 'Failed to delete account. Please contact support.'); + redirect('/account/profile.php'); +} diff --git a/api/loyalty.php b/api/loyalty.php new file mode 100644 index 0000000..4224f3d --- /dev/null +++ b/api/loyalty.php @@ -0,0 +1,94 @@ + 'Authentication required'], 401); +} + +$customer = CustomerAuth::getUser(); +$method = $_SERVER['REQUEST_METHOD']; +$input = json_decode(file_get_contents('php://input'), true); +$action = $input['action'] ?? $_GET['action'] ?? ''; + +switch ($action) { + case 'status': + // Get customer's loyalty status + $status = loyalty()->getCustomerTier($customer['customer_id']); + $conversion = loyalty()->getConversionInfo(); + + jsonResponse([ + 'tier' => $status['tier'], + 'tier_name' => $status['info']['name'], + 'tier_color' => $status['info']['color'], + 'tier_icon' => $status['info']['icon'], + 'benefits' => $status['info']['benefits'], + 'multiplier' => $status['info']['multiplier'], + 'points' => $status['points'], + 'lifetime_points' => $status['lifetime_points'], + 'points_value' => $status['points'] * $conversion['points_value'], + 'next_tier' => $status['next_tier'], + 'next_tier_name' => $status['next_tier_info']['name'] ?? null, + 'points_to_next' => $status['points_to_next'], + 'progress_percent' => $status['progress_percent'], + 'conversion' => $conversion + ]); + break; + + case 'history': + // Get loyalty transaction history + $limit = min(50, intval($_GET['limit'] ?? 20)); + $history = loyalty()->getHistory($customer['customer_id'], $limit); + + jsonResponse(['transactions' => $history]); + break; + + case 'redeem': + // Redeem points for credit + if ($method !== 'POST') { + jsonResponse(['error' => 'POST required'], 405); + } + + $points = intval($input['points'] ?? 0); + + if ($points < 100) { + jsonResponse(['error' => 'Minimum 100 points required for redemption'], 400); + } + + $result = loyalty()->redeemPoints($customer['customer_id'], $points); + + if ($result['success']) { + jsonResponse([ + 'success' => true, + 'points_redeemed' => $result['points_redeemed'], + 'credit_value' => $result['credit_value'], + 'new_points_balance' => $result['new_points_balance'], + 'new_wallet_balance' => $result['new_wallet_balance'], + 'message' => 'Successfully redeemed ' . $points . ' points for ' . formatCurrency($result['credit_value']) + ]); + } else { + jsonResponse(['error' => $result['error']], 400); + } + break; + + case 'tiers': + // Get all tier information + $tiers = loyalty()->getTiers(); + $conversion = loyalty()->getConversionInfo(); + + jsonResponse([ + 'tiers' => $tiers, + 'conversion' => $conversion + ]); + break; + + default: + jsonResponse(['error' => 'Invalid action'], 400); +} diff --git a/api/orders.php b/api/orders.php new file mode 100644 index 0000000..4fef865 --- /dev/null +++ b/api/orders.php @@ -0,0 +1,174 @@ +fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] + ); + + if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); + } + + $order['items'] = json_decode($order['items'], true); + $order['shipping_address'] = json_decode($order['shipping_address'], true); + unset($order['id']); + + jsonResponse($order); + } elseif ($orderNumber) { + $email = $_GET['email'] ?? ''; + + $order = db()->fetch( + "SELECT * FROM orders WHERE order_number = :num AND customer_email = :email", + ['num' => $orderNumber, 'email' => strtolower($email)] + ); + + if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); + } + + $order['items'] = json_decode($order['items'], true); + $order['shipping_address'] = json_decode($order['shipping_address'], true); + unset($order['id']); + + jsonResponse($order); + } else { + // List orders (admin only or customer's own) + $customer = CustomerAuth::getUser(); + + if ($customer) { + $orders = db()->fetchAll( + "SELECT order_id, order_number, total, payment_status, order_status, created_at + FROM orders WHERE customer_id = :cid ORDER BY created_at DESC LIMIT 50", + ['cid' => $customer['customer_id']] + ); + } else { + jsonResponse(['error' => 'Authentication required'], 401); + } + + jsonResponse(['orders' => $orders]); + } + break; + + case 'POST': + // Update order status (admin) + if ($action === 'update_status') { + // Admin check would go here + $orderId = $input['order_id'] ?? ''; + $status = $input['status'] ?? ''; + $trackingNumber = $input['tracking_number'] ?? null; + + if (empty($orderId) || empty($status)) { + jsonResponse(['error' => 'Order ID and status required'], 400); + } + + $validStatuses = ['pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded']; + if (!in_array($status, $validStatuses)) { + jsonResponse(['error' => 'Invalid status'], 400); + } + + $updateData = ['order_status' => $status]; + if ($trackingNumber) { + $updateData['tracking_number'] = $trackingNumber; + } + + db()->update('orders', $updateData, 'order_id = :id', ['id' => $orderId]); + + // If status is shipped or delivered, send email + $order = db()->fetch("SELECT * FROM orders WHERE order_id = :id", ['id' => $orderId]); + if ($order && in_array($status, ['shipped', 'delivered'])) { + sendStatusUpdateEmail($order, $status, $trackingNumber); + } + + jsonResponse(['success' => true, 'status' => $status]); + } + + // Cancel order + if ($action === 'cancel') { + $orderId = $input['order_id'] ?? ''; + $customer = CustomerAuth::getUser(); + + if (!$customer) { + jsonResponse(['error' => 'Authentication required'], 401); + } + + $order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id AND customer_id = :cid", + ['id' => $orderId, 'cid' => $customer['customer_id']] + ); + + if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); + } + + if (!in_array($order['order_status'], ['pending', 'confirmed'])) { + jsonResponse(['error' => 'This order cannot be cancelled'], 400); + } + + db()->update('orders', + ['order_status' => 'cancelled'], + 'order_id = :id', + ['id' => $orderId] + ); + + // Restore stock + $items = json_decode($order['items'], true) ?? []; + foreach ($items as $item) { + db()->query( + "UPDATE products SET stock = stock + :qty WHERE product_id = :id", + ['qty' => $item['quantity'], 'id' => $item['product_id']] + ); + } + + jsonResponse(['success' => true]); + } + + jsonResponse(['error' => 'Invalid action'], 400); + break; + + default: + jsonResponse(['error' => 'Method not allowed'], 405); +} + +function sendStatusUpdateEmail($order, $status, $trackingNumber = null) { + $statusMessages = [ + 'shipped' => 'Your order has been shipped!', + 'delivered' => 'Your order has been delivered!' + ]; + + $tracking = $trackingNumber ? "

Tracking #: {$trackingNumber}

" : ''; + + $html = << +
+

Tom's Java Jive

+
+
+

{$statusMessages[$status]}

+

Hi {$order['customer_name']},

+

Order #{$order['order_number']} has been updated to: {$status}

+ {$tracking} +
+
+ HTML; + + sendEmail($order['customer_email'], "Order Update - #{$order['order_number']}", $html); +} diff --git a/api/payment-status.php b/api/payment-status.php new file mode 100644 index 0000000..4e97c76 --- /dev/null +++ b/api/payment-status.php @@ -0,0 +1,136 @@ + 'Method not allowed'], 405); +} + +$orderId = $_GET['order_id'] ?? ''; +$sessionId = $_GET['session_id'] ?? ''; + +if (empty($orderId) && empty($sessionId)) { + jsonResponse(['error' => 'Order ID or Session ID required'], 400); +} + +// Get order by ID or session +if (!empty($orderId)) { + $order = db()->fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] + ); +} else { + $order = db()->fetch( + "SELECT * FROM orders WHERE stripe_checkout_session = :session OR stripe_payment_intent = :session", + ['session' => $sessionId] + ); +} + +if (!$order) { + jsonResponse(['error' => 'Order not found'], 404); +} + +// If already marked as paid, return success +if ($order['payment_status'] === 'paid') { + jsonResponse([ + 'status' => 'complete', + 'payment_status' => 'paid', + 'order_id' => $order['order_id'], + 'order_number' => $order['order_number'], + 'redirect' => '/order-confirmation.php?order=' . $order['order_id'] + ]); +} + +// Check if Stripe is configured +if (!isStripeConfigured()) { + jsonResponse([ + 'status' => 'demo_mode', + 'payment_status' => $order['payment_status'], + 'message' => 'Stripe not configured - running in demo mode' + ]); +} + +try { + // Check with Stripe + if (!empty($order['stripe_checkout_session'])) { + // Check checkout session status + $session = stripe()->getCheckoutSession($order['stripe_checkout_session']); + + if ($session['payment_status'] === 'paid') { + // Update order + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'stripe_payment_intent' => $session['payment_intent'] ?? null + ], + 'order_id = :id', + ['id' => $order['order_id']] + ); + + jsonResponse([ + 'status' => 'complete', + 'payment_status' => 'paid', + 'order_id' => $order['order_id'], + 'order_number' => $order['order_number'], + 'redirect' => '/order-confirmation.php?order=' . $order['order_id'] + ]); + } + + jsonResponse([ + 'status' => $session['status'], + 'payment_status' => $session['payment_status'] + ]); + + } elseif (!empty($order['stripe_payment_intent'])) { + // Check payment intent status + $paymentIntent = stripe()->getPaymentIntent($order['stripe_payment_intent']); + + if ($paymentIntent['status'] === 'succeeded') { + // Update order + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed' + ], + 'order_id = :id', + ['id' => $order['order_id']] + ); + + jsonResponse([ + 'status' => 'complete', + 'payment_status' => 'paid', + 'order_id' => $order['order_id'], + 'order_number' => $order['order_number'], + 'redirect' => '/order-confirmation.php?order=' . $order['order_id'] + ]); + } + + jsonResponse([ + 'status' => $paymentIntent['status'], + 'payment_status' => 'pending' + ]); + } + + // No Stripe reference found + jsonResponse([ + 'status' => 'pending', + 'payment_status' => $order['payment_status'] + ]); + +} catch (Exception $e) { + error_log('Payment status check error: ' . $e->getMessage()); + jsonResponse([ + 'status' => 'error', + 'payment_status' => $order['payment_status'], + 'error' => 'Failed to check payment status' + ]); +} diff --git a/api/pos-order.php b/api/pos-order.php new file mode 100644 index 0000000..398dc43 --- /dev/null +++ b/api/pos-order.php @@ -0,0 +1,191 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); + +if (empty($input['items']) || !is_array($input['items'])) { + jsonResponse(['error' => 'No items provided'], 400); +} + +$items = $input['items']; +$paymentMethod = $input['payment_method'] ?? 'cash'; +$notes = $input['notes'] ?? ''; +$customerId = $input['customer_id'] ?? null; +$customerEmail = $input['customer_email'] ?? null; +$discountAmount = floatval($input['discount'] ?? 0); +$couponCode = $input['coupon_code'] ?? null; + +// Calculate totals +$subtotal = 0; +$orderItems = []; + +foreach ($items as $item) { + // Verify product exists and has stock + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $item['product_id']] + ); + + if (!$product) { + jsonResponse(['error' => 'Product not found: ' . $item['name']], 400); + } + + if ($product['stock'] < $item['quantity']) { + jsonResponse(['error' => 'Insufficient stock for: ' . $product['name']], 400); + } + + $price = $product['sale_price'] ?? $product['price']; + $lineTotal = $price * $item['quantity']; + $subtotal += $lineTotal; + + $orderItems[] = [ + 'product_id' => $product['product_id'], + 'name' => $product['name'], + 'price' => $price, + 'quantity' => $item['quantity'], + 'total' => $lineTotal + ]; +} + +// Apply coupon if provided +$couponDiscount = 0; +if ($couponCode) { + $coupon = db()->fetch( + "SELECT * FROM coupons WHERE code = :code AND is_active = 1 + AND (starts_at IS NULL OR starts_at <= NOW()) + AND (expires_at IS NULL OR expires_at > NOW()) + AND (max_uses IS NULL OR times_used < max_uses)", + ['code' => strtoupper($couponCode)] + ); + + if ($coupon) { + if ($coupon['min_order_amount'] && $subtotal < $coupon['min_order_amount']) { + // Coupon minimum not met, ignore + } else { + if ($coupon['discount_type'] === 'percentage') { + $couponDiscount = $subtotal * ($coupon['discount_value'] / 100); + } else { + $couponDiscount = min($coupon['discount_value'], $subtotal); + } + + // Update coupon usage + db()->query("UPDATE coupons SET times_used = times_used + 1 WHERE coupon_id = :id", + ['id' => $coupon['coupon_id']]); + } + } +} + +// Calculate final total +$discount = $discountAmount + $couponDiscount; +$taxRate = 0; // Adjust based on settings +$tax = ($subtotal - $discount) * $taxRate; +$total = $subtotal - $discount + $tax; + +// Handle wallet payment +$walletUsed = 0; +if ($paymentMethod === 'wallet' && $customerId) { + $customer = db()->fetch( + "SELECT wallet_balance FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer || $customer['wallet_balance'] < $total) { + jsonResponse(['error' => 'Insufficient wallet balance'], 400); + } + + $walletUsed = $total; + + // Deduct from wallet + db()->query( + "UPDATE customers SET wallet_balance = wallet_balance - :amount WHERE customer_id = :id", + ['amount' => $walletUsed, 'id' => $customerId] + ); + + // Log wallet transaction + $newBalance = $customer['wallet_balance'] - $walletUsed; + db()->insert('wallet_transactions', [ + 'transaction_id' => generateId('wt_'), + 'customer_id' => $customerId, + 'amount' => -$walletUsed, + 'balance_after' => $newBalance, + 'type' => 'purchase', + 'description' => 'POS Purchase' + ]); +} + +// Generate order +$orderId = generateId('ord_'); +$orderNumber = generateOrderNumber(); + +try { + // Create order + db()->insert('orders', [ + 'order_id' => $orderId, + 'order_number' => $orderNumber, + 'customer_id' => $customerId, + 'customer_email' => $customerEmail ?? 'pos@store.local', + 'customer_name' => $input['customer_name'] ?? 'POS Customer', + 'items' => json_encode($orderItems), + 'subtotal' => $subtotal, + 'tax' => $tax, + 'discount' => $discount, + 'wallet_amount_used' => $walletUsed, + 'total' => $total, + 'payment_method' => $paymentMethod, + 'payment_status' => 'paid', + 'order_status' => 'confirmed', + 'notes' => $notes, + 'is_pos_order' => 1 + ]); + + // Insert order items + foreach ($orderItems as $item) { + db()->insert('order_items', [ + 'order_id' => $orderId, + 'product_id' => $item['product_id'], + 'name' => $item['name'], + 'price' => $item['price'], + 'quantity' => $item['quantity'], + 'total' => $item['total'] + ]); + + // Update stock + db()->query( + "UPDATE products SET stock = stock - :qty WHERE product_id = :id", + ['qty' => $item['quantity'], 'id' => $item['product_id']] + ); + } + + // Award reward points if customer + if ($customerId) { + $pointsEarned = floor($total); // 1 point per dollar + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $pointsEarned, 'id' => $customerId] + ); + } + + jsonResponse([ + 'success' => true, + 'order_id' => $orderId, + 'order_number' => $orderNumber, + 'total' => $total, + 'items' => $orderItems + ]); + +} catch (Exception $e) { + jsonResponse(['error' => 'Failed to create order: ' . $e->getMessage()], 500); +} diff --git a/api/products.php b/api/products.php new file mode 100644 index 0000000..be9abae --- /dev/null +++ b/api/products.php @@ -0,0 +1,93 @@ +fetch( + "SELECT * FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); + } + + $product['images'] = json_decode($product['images'] ?? '[]', true); + $product['tags'] = json_decode($product['tags'] ?? '[]', true); + unset($product['id']); + + // Get reviews + $reviews = db()->fetchAll( + "SELECT review_id, customer_name, rating, title, comment, is_verified_purchase, created_at + FROM reviews WHERE product_id = :id AND is_approved = 1 ORDER BY created_at DESC", + ['id' => $productId] + ); + + $product['reviews'] = $reviews; + $product['average_rating'] = !empty($reviews) + ? round(array_sum(array_column($reviews, 'rating')) / count($reviews), 1) + : 0; + + jsonResponse($product); + } else { + // Get products list + $category = $_GET['category'] ?? ''; + $search = $_GET['search'] ?? ''; + $featured = $_GET['featured'] ?? ''; + $limit = min(100, intval($_GET['limit'] ?? 20)); + $offset = intval($_GET['offset'] ?? 0); + + $where = ['is_active = 1']; + $params = []; + + if ($category) { + $where[] = 'category = :category'; + $params['category'] = $category; + } + + if ($search) { + $where[] = '(name LIKE :search OR description LIKE :search)'; + $params['search'] = '%' . $search . '%'; + } + + if ($featured === '1') { + $where[] = 'is_featured = 1'; + } + + $whereClause = implode(' AND ', $where); + + $products = db()->fetchAll( + "SELECT product_id, name, description, price, sale_price, category, images, stock, is_featured + FROM products WHERE {$whereClause} + ORDER BY is_featured DESC, created_at DESC + LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $limit, 'offset' => $offset]) + ); + + foreach ($products as &$p) { + $p['images'] = json_decode($p['images'] ?? '[]', true); + } + + $total = db()->count('products', $whereClause, $params); + + jsonResponse([ + 'products' => $products, + 'total' => $total, + 'limit' => $limit, + 'offset' => $offset + ]); + } +} + +jsonResponse(['error' => 'Method not allowed'], 405); diff --git a/api/push-subscribe.php b/api/push-subscribe.php new file mode 100644 index 0000000..ca1c219 --- /dev/null +++ b/api/push-subscribe.php @@ -0,0 +1,83 @@ + 'Invalid subscription data'], 400); + } + + $customerId = null; + if (CustomerAuth::isLoggedIn()) { + $customerId = CustomerAuth::getUser()['customer_id']; + } + + // Check if subscription already exists + $existing = db()->fetch( + "SELECT id FROM push_subscriptions WHERE endpoint = :endpoint", + ['endpoint' => $endpoint] + ); + + if ($existing) { + // Update existing + db()->query( + "UPDATE push_subscriptions SET + customer_id = :cid, p256dh_key = :p256dh, auth_key = :auth, + is_active = 1, updated_at = NOW() + WHERE endpoint = :endpoint", + ['cid' => $customerId, 'p256dh' => $p256dh, 'auth' => $auth, 'endpoint' => $endpoint] + ); + } else { + // Create new + db()->insert('push_subscriptions', [ + 'customer_id' => $customerId, + 'endpoint' => $endpoint, + 'p256dh_key' => $p256dh, + 'auth_key' => $auth, + 'is_active' => 1 + ]); + } + + jsonResponse(['success' => true, 'message' => 'Subscribed to notifications']); + break; + + case 'DELETE': + // Unsubscribe + $endpoint = $input['endpoint'] ?? ''; + + if (empty($endpoint)) { + jsonResponse(['error' => 'Endpoint required'], 400); + } + + db()->query( + "UPDATE push_subscriptions SET is_active = 0 WHERE endpoint = :endpoint", + ['endpoint' => $endpoint] + ); + + jsonResponse(['success' => true, 'message' => 'Unsubscribed from notifications']); + break; + + case 'GET': + // Get VAPID public key + require_once __DIR__ . '/../includes/push.php'; + jsonResponse(['publicKey' => pushNotify()->getPublicKey()]); + break; + + default: + jsonResponse(['error' => 'Method not allowed'], 405); +} diff --git a/api/redeem-gift-card.php b/api/redeem-gift-card.php new file mode 100644 index 0000000..eed231c --- /dev/null +++ b/api/redeem-gift-card.php @@ -0,0 +1,97 @@ + 'Method not allowed'], 405); +} + +if (!CustomerAuth::isLoggedIn()) { + jsonResponse(['error' => 'Please log in to redeem a gift card'], 401); +} + +$customer = CustomerAuth::getFullUser(); +$input = json_decode(file_get_contents('php://input'), true); + +$code = strtoupper(str_replace(['-', ' '], '', trim($input['code'] ?? ''))); + +if (empty($code) || strlen($code) < 8) { + jsonResponse(['error' => 'Invalid gift card code'], 400); +} + +// Find gift card +$giftCard = db()->fetch( + "SELECT * FROM gift_cards WHERE code = :code AND is_active = 1", + ['code' => $code] +); + +if (!$giftCard) { + jsonResponse(['error' => 'Gift card not found or already used'], 404); +} + +if ($giftCard['balance'] <= 0) { + jsonResponse(['error' => 'This gift card has no remaining balance'], 400); +} + +if ($giftCard['expires_at'] && strtotime($giftCard['expires_at']) < time()) { + jsonResponse(['error' => 'This gift card has expired'], 400); +} + +$amount = $giftCard['balance']; + +try { + // Start transaction + db()->query("START TRANSACTION"); + + // Update gift card balance to 0 + db()->query( + "UPDATE gift_cards SET balance = 0, is_active = 0, updated_at = NOW() WHERE gift_card_id = :id", + ['id' => $giftCard['gift_card_id']] + ); + + // Log gift card transaction + db()->insert('gift_card_transactions', [ + 'gift_card_id' => $giftCard['gift_card_id'], + 'amount' => -$amount, + 'balance_after' => 0, + 'type' => 'redeem', + 'description' => 'Redeemed by customer: ' . $customer['email'] + ]); + + // Add to customer wallet + $newWalletBalance = ($customer['wallet_balance'] ?? 0) + $amount; + + db()->query( + "UPDATE customers SET wallet_balance = :balance, updated_at = NOW() WHERE customer_id = :id", + ['balance' => $newWalletBalance, 'id' => $customer['customer_id']] + ); + + // Log wallet transaction + db()->insert('wallet_transactions', [ + 'transaction_id' => generateId('wt_'), + 'customer_id' => $customer['customer_id'], + 'amount' => $amount, + 'balance_after' => $newWalletBalance, + 'type' => 'gift_card', + 'description' => 'Gift card redeemed: ' . $code + ]); + + db()->query("COMMIT"); + + jsonResponse([ + 'success' => true, + 'amount' => $amount, + 'new_balance' => $newWalletBalance, + 'message' => formatCurrency($amount) . ' has been added to your wallet!' + ]); + +} catch (Exception $e) { + db()->query("ROLLBACK"); + jsonResponse(['error' => 'Failed to redeem gift card. Please try again.'], 500); +} diff --git a/api/search-customers.php b/api/search-customers.php new file mode 100644 index 0000000..e52bbd3 --- /dev/null +++ b/api/search-customers.php @@ -0,0 +1,25 @@ +fetchAll( + "SELECT customer_id, email, name, phone, wallet_balance, reward_points + FROM customers + WHERE (email LIKE :q OR name LIKE :q OR phone LIKE :q) AND is_active = 1 + ORDER BY name ASC + LIMIT 20", + ['q' => '%' . $query . '%'] +); + +jsonResponse($customers); diff --git a/api/submit-review.php b/api/submit-review.php new file mode 100644 index 0000000..cbb54be --- /dev/null +++ b/api/submit-review.php @@ -0,0 +1,66 @@ + 'Method not allowed'], 405); +} + +if (!CustomerAuth::isLoggedIn()) { + jsonResponse(['error' => 'Please log in to submit a review'], 401); +} + +$customer = CustomerAuth::getFullUser(); +$input = json_decode(file_get_contents('php://input'), true); + +$productId = $input['product_id'] ?? ''; +$rating = intval($input['rating'] ?? 0); +$title = trim($input['title'] ?? ''); +$content = trim($input['content'] ?? ''); + +if (empty($productId) || $rating < 1 || $rating > 5 || empty($content)) { + jsonResponse(['error' => 'Invalid input. Rating and review content are required.'], 400); +} + +// Check if product exists +$product = db()->fetch("SELECT product_id FROM products WHERE product_id = :id", ['id' => $productId]); +if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); +} + +// Check if already reviewed +$existingReview = db()->fetch( + "SELECT review_id FROM reviews WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] +); + +if ($existingReview) { + jsonResponse(['error' => 'You have already reviewed this product'], 400); +} + +// Create review +$reviewId = generateId('rev_'); + +db()->insert('reviews', [ + 'review_id' => $reviewId, + 'product_id' => $productId, + 'customer_id' => $customer['customer_id'], + 'customer_name' => $customer['name'] ?? explode('@', $customer['email'])[0], + 'customer_email' => $customer['email'], + 'rating' => $rating, + 'title' => $title, + 'content' => $content, + 'status' => 'pending' // Reviews require admin approval +]); + +jsonResponse([ + 'success' => true, + 'message' => 'Review submitted successfully. It will be visible after approval.', + 'review_id' => $reviewId +]); diff --git a/api/subscribe.php b/api/subscribe.php new file mode 100644 index 0000000..a6e5808 --- /dev/null +++ b/api/subscribe.php @@ -0,0 +1,75 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$email = trim($input['email'] ?? $_POST['email'] ?? ''); + +if (empty($email)) { + jsonResponse(['error' => 'Email is required'], 400); +} + +if (!filter_var($email, FILTER_VALIDATE_EMAIL)) { + jsonResponse(['error' => 'Please enter a valid email address'], 400); +} + +// Check if already subscribed +$existing = db()->fetch( + "SELECT id FROM email_subscribers WHERE email = :email", + ['email' => strtolower($email)] +); + +if ($existing) { + jsonResponse(['error' => 'This email is already subscribed'], 400); +} + +// Add subscriber +try { + db()->insert('email_subscribers', [ + 'email' => strtolower($email), + 'source' => 'website', + 'is_active' => 1 + ]); + + // Send welcome email + $html = << +
+

Tom's Java Jive

+
+
+

Welcome to the Java Jive Family!

+

Thanks for subscribing to our newsletter. You'll be the first to know about:

+
    +
  • New coffee releases
  • +
  • Exclusive discounts and promotions
  • +
  • Brewing tips and recipes
  • +
  • Behind-the-scenes at our roastery
  • +
+

As a thank you, enjoy 10% off your first order with code: WELCOME10

+

+ Shop Now +

+
+
+

Tom's Java Jive | Premium Coffee

+
+
+ HTML; + + sendEmail($email, 'Welcome to Tom\'s Java Jive!', $html); + + jsonResponse(['success' => true, 'message' => 'Successfully subscribed!']); + +} catch (Exception $e) { + jsonResponse(['error' => 'Subscription failed. Please try again.'], 500); +} diff --git a/api/test-notification.php b/api/test-notification.php new file mode 100644 index 0000000..abd90f6 --- /dev/null +++ b/api/test-notification.php @@ -0,0 +1,65 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$type = $input['type'] ?? ''; +$recipient = $input['recipient'] ?? ''; + +if (empty($recipient)) { + jsonResponse(['error' => 'Recipient is required'], 400); +} + +switch ($type) { + case 'email': + if (!filter_var($recipient, FILTER_VALIDATE_EMAIL)) { + jsonResponse(['error' => 'Invalid email address'], 400); + } + + $result = sendEmail()->send( + $recipient, + "Test Email from Tom's Java Jive", + "
+

Test Email

+

This is a test email from your Tom's Java Jive store.

+

If you received this, your SendGrid integration is working correctly!

+

+ Sent at: " . date('Y-m-d H:i:s') . " +

+
" + ); + + if ($result['success']) { + jsonResponse(['success' => true, 'message' => 'Test email sent to ' . $recipient]); + } else { + jsonResponse(['success' => false, 'error' => $result['error'] ?? 'Failed to send email']); + } + break; + + case 'sms': + $result = sendSMS()->send( + $recipient, + "Tom's Java Jive: This is a test message. If you received this, your Twilio integration is working! Sent at " . date('g:i A') + ); + + if ($result['success']) { + jsonResponse(['success' => true, 'message' => 'Test SMS sent to ' . $recipient]); + } else { + jsonResponse(['success' => false, 'error' => $result['error'] ?? 'Failed to send SMS']); + } + break; + + default: + jsonResponse(['error' => 'Invalid notification type'], 400); +} diff --git a/api/validate-coupon.php b/api/validate-coupon.php new file mode 100644 index 0000000..957c697 --- /dev/null +++ b/api/validate-coupon.php @@ -0,0 +1,59 @@ + 'Method not allowed'], 405); +} + +$input = json_decode(file_get_contents('php://input'), true); +$code = strtoupper(trim($input['code'] ?? '')); +$subtotal = floatval($input['subtotal'] ?? 0); + +if (empty($code)) { + jsonResponse(['error' => 'Coupon code required'], 400); +} + +$coupon = db()->fetch( + "SELECT * FROM coupons WHERE code = :code AND is_active = 1", + ['code' => $code] +); + +if (!$coupon) { + jsonResponse(['error' => 'Invalid coupon code']); +} + +// Check if expired +if ($coupon['expires_at'] && strtotime($coupon['expires_at']) < time()) { + jsonResponse(['error' => 'Coupon has expired']); +} + +// Check if not started yet +if ($coupon['starts_at'] && strtotime($coupon['starts_at']) > time()) { + jsonResponse(['error' => 'Coupon is not yet active']); +} + +// Check usage limit +if ($coupon['max_uses'] && $coupon['times_used'] >= $coupon['max_uses']) { + jsonResponse(['error' => 'Coupon usage limit reached']); +} + +// Check minimum order +if ($coupon['min_order_amount'] && $subtotal < $coupon['min_order_amount']) { + jsonResponse(['error' => 'Minimum order of ' . formatCurrency($coupon['min_order_amount']) . ' required']); +} + +jsonResponse([ + 'valid' => true, + 'code' => $coupon['code'], + 'type' => $coupon['discount_type'], + 'value' => floatval($coupon['discount_value']), + 'description' => $coupon['discount_type'] === 'percentage' + ? $coupon['discount_value'] . '% off' + : formatCurrency($coupon['discount_value']) . ' off' +]); diff --git a/api/webhook.php b/api/webhook.php new file mode 100644 index 0000000..2bd72c4 --- /dev/null +++ b/api/webhook.php @@ -0,0 +1,147 @@ +verifyWebhookSignature($payload, $sigHeader, STRIPE_WEBHOOK_SECRET); + $event = json_decode($payload, true); + } catch (Exception $e) { + error_log('Stripe webhook signature verification failed: ' . $e->getMessage()); + http_response_code(400); + exit(); + } +} else { + $event = json_decode($payload, true); + if (!$event) { + http_response_code(400); + exit(); + } +} + +$eventType = $event['type'] ?? ''; +$data = $event['data']['object'] ?? []; + +switch ($eventType) { + case 'payment_intent.succeeded': + $paymentIntentId = $data['id'] ?? ''; + $orderId = $data['metadata']['order_id'] ?? ''; + + if ($orderId) { + db()->update('orders', + [ + 'payment_status' => 'paid', + 'order_status' => 'confirmed' + ], + 'order_id = :id', + ['id' => $orderId] + ); + + // Send confirmation email + $order = db()->fetch("SELECT * FROM orders WHERE order_id = :id", ['id' => $orderId]); + if ($order) { + sendOrderConfirmationEmail($order); + } + } + break; + + case 'payment_intent.payment_failed': + $orderId = $data['metadata']['order_id'] ?? ''; + if ($orderId) { + db()->update('orders', + ['payment_status' => 'failed'], + 'order_id = :id', + ['id' => $orderId] + ); + } + break; + + case 'charge.refunded': + $paymentIntentId = $data['payment_intent'] ?? ''; + if ($paymentIntentId) { + db()->update('orders', + [ + 'payment_status' => 'refunded', + 'order_status' => 'refunded' + ], + 'stripe_payment_intent = :pi', + ['pi' => $paymentIntentId] + ); + } + break; +} + +http_response_code(200); +echo json_encode(['received' => true]); + +/** + * Send order confirmation email + */ +function sendOrderConfirmationEmail($order) { + $items = json_decode($order['items'], true) ?? []; + $shippingAddress = json_decode($order['shipping_address'], true) ?? []; + + $itemsHtml = ''; + foreach ($items as $item) { + $itemsHtml .= sprintf( + '%s x%d$%.2f', + htmlspecialchars($item['name']), + $item['quantity'], + $item['total'] + ); + } + + $html = << +
+

Tom's Java Jive

+
+ +
+

Order Confirmed!

+

Thank you for your order, {$order['customer_name']}!

+ +
+

Order #: {$order['order_number']}

+

Total: \${$order['total']}

+
+ +

Order Details

+ + {$itemsHtml} + + + + +
Total\${$order['total']}
+ +

Shipping To

+

+ {$shippingAddress['address']}
+ {$shippingAddress['city']}, {$shippingAddress['state']} {$shippingAddress['zip']} +

+ +

+ We'll send you tracking information once your order ships. +

+
+ +
+

Tom's Java Jive | Premium Coffee

+
+ + HTML; + + sendEmail($order['customer_email'], "Order Confirmed - #{$order['order_number']}", $html); +} diff --git a/api/wishlist.php b/api/wishlist.php new file mode 100644 index 0000000..3f3565a --- /dev/null +++ b/api/wishlist.php @@ -0,0 +1,95 @@ + 'Please log in to manage your wishlist'], 401); +} + +$customer = CustomerAuth::getFullUser(); +$input = json_decode(file_get_contents('php://input'), true); +$action = $input['action'] ?? $_GET['action'] ?? ''; +$productId = $input['product_id'] ?? $_GET['product_id'] ?? ''; + +switch ($action) { + case 'add': + if (empty($productId)) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + // Check if product exists + $product = db()->fetch("SELECT product_id FROM products WHERE product_id = :id", ['id' => $productId]); + if (!$product) { + jsonResponse(['error' => 'Product not found'], 404); + } + + // Check if already in wishlist + $existing = db()->fetch( + "SELECT id FROM wishlist WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] + ); + + if ($existing) { + jsonResponse(['success' => true, 'message' => 'Already in wishlist']); + } + + db()->insert('wishlist', [ + 'customer_id' => $customer['customer_id'], + 'product_id' => $productId + ]); + + jsonResponse(['success' => true, 'message' => 'Added to wishlist']); + break; + + case 'remove': + if (empty($productId)) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + db()->query( + "DELETE FROM wishlist WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] + ); + + jsonResponse(['success' => true, 'message' => 'Removed from wishlist']); + break; + + case 'check': + if (empty($productId)) { + jsonResponse(['error' => 'Product ID required'], 400); + } + + $exists = db()->fetch( + "SELECT id FROM wishlist WHERE customer_id = :cid AND product_id = :pid", + ['cid' => $customer['customer_id'], 'pid' => $productId] + ); + + jsonResponse(['in_wishlist' => (bool)$exists]); + break; + + case 'list': + $items = db()->fetchAll( + "SELECT p.product_id, p.name, p.slug, p.price, p.sale_price, p.images, p.stock + FROM wishlist w + JOIN products p ON w.product_id = p.product_id + WHERE w.customer_id = :id + ORDER BY w.created_at DESC", + ['id' => $customer['customer_id']] + ); + + foreach ($items as &$item) { + $item['images'] = json_decode($item['images'] ?? '[]', true); + } + + jsonResponse(['items' => $items]); + break; + + default: + jsonResponse(['error' => 'Invalid action'], 400); +} diff --git a/assets/css/admin.css b/assets/css/admin.css new file mode 100644 index 0000000..6d71986 --- /dev/null +++ b/assets/css/admin.css @@ -0,0 +1,543 @@ +/** + * Tom's Java Jive - Admin Panel Styles + */ + +:root { + /* Admin Colors */ + --admin-sidebar-bg: #1F2937; + --admin-sidebar-hover: #374151; + --admin-sidebar-active: var(--color-primary); + --admin-header-bg: #FFFFFF; + --admin-content-bg: #F9FAFB; + --admin-text-light: #9CA3AF; +} + +/* ================================ + Admin Layout + ================================ */ +.admin-layout { + display: flex; + min-height: 100vh; +} + +.admin-sidebar { + width: 260px; + background: var(--admin-sidebar-bg); + color: white; + display: flex; + flex-direction: column; + position: fixed; + top: 0; + left: 0; + bottom: 0; + z-index: 100; + transition: transform 0.3s ease; +} + +.admin-sidebar-header { + padding: 1.5rem; + border-bottom: 1px solid rgba(255,255,255,0.1); +} + +.admin-logo { + display: flex; + align-items: center; + gap: 0.75rem; + color: white; + font-family: var(--font-heading); + font-size: 1.25rem; + font-weight: 600; +} + +.admin-logo img { + height: 32px; +} + +.admin-nav { + flex: 1; + padding: 1rem 0; + overflow-y: auto; +} + +.admin-nav-section { + margin-bottom: 1.5rem; +} + +.admin-nav-title { + padding: 0.5rem 1.5rem; + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; + letter-spacing: 0.05em; + color: var(--admin-text-light); +} + +.admin-nav-item { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.75rem 1.5rem; + color: rgba(255,255,255,0.8); + transition: all 0.2s ease; +} + +.admin-nav-item:hover { + background: var(--admin-sidebar-hover); + color: white; +} + +.admin-nav-item.active { + background: var(--admin-sidebar-active); + color: white; +} + +.admin-nav-item i { + width: 20px; + text-align: center; +} + +.admin-nav-badge { + margin-left: auto; + padding: 0.125rem 0.5rem; + font-size: 0.75rem; + font-weight: 600; + background: var(--color-error); + color: white; + border-radius: 9999px; +} + +.admin-main { + flex: 1; + margin-left: 260px; + background: var(--admin-content-bg); + min-height: 100vh; +} + +.admin-header { + background: var(--admin-header-bg); + padding: 1rem 1.5rem; + display: flex; + align-items: center; + justify-content: space-between; + border-bottom: 1px solid var(--color-border); + position: sticky; + top: 0; + z-index: 50; +} + +.admin-header-left { + display: flex; + align-items: center; + gap: 1rem; +} + +.admin-search { + display: flex; + align-items: center; + gap: 0.5rem; + padding: 0.5rem 1rem; + background: var(--color-background); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + min-width: 300px; +} + +.admin-search input { + border: none; + background: transparent; + outline: none; + width: 100%; +} + +.admin-header-right { + display: flex; + align-items: center; + gap: 1rem; +} + +.admin-user { + display: flex; + align-items: center; + gap: 0.75rem; + padding: 0.5rem; + border-radius: var(--radius-md); + cursor: pointer; +} + +.admin-user:hover { + background: var(--color-background); +} + +.admin-avatar { + width: 36px; + height: 36px; + border-radius: 50%; + background: var(--color-primary); + display: flex; + align-items: center; + justify-content: center; + color: white; + font-weight: 600; +} + +.admin-content { + padding: 1.5rem; +} + +/* ================================ + Admin Cards + ================================ */ +.admin-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-border); + margin-bottom: 1.5rem; +} + +.admin-card-header { + padding: 1rem 1.5rem; + border-bottom: 1px solid var(--color-border); + display: flex; + align-items: center; + justify-content: space-between; +} + +.admin-card-title { + font-size: 1rem; + font-weight: 600; + margin: 0; +} + +.admin-card-body { + padding: 1.5rem; +} + +/* ================================ + Stats Cards + ================================ */ +.stats-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); + gap: 1.5rem; + margin-bottom: 1.5rem; +} + +.stat-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-border); + padding: 1.5rem; + display: flex; + align-items: flex-start; + gap: 1rem; +} + +.stat-card-icon { + width: 48px; + height: 48px; + border-radius: var(--radius-md); + display: flex; + align-items: center; + justify-content: center; + font-size: 1.25rem; +} + +.stat-card-icon.primary { + background: rgba(232, 106, 51, 0.1); + color: var(--color-primary); +} + +.stat-card-icon.success { + background: rgba(16, 185, 129, 0.1); + color: var(--color-success); +} + +.stat-card-icon.warning { + background: rgba(245, 158, 11, 0.1); + color: var(--color-warning); +} + +.stat-card-icon.error { + background: rgba(239, 68, 68, 0.1); + color: var(--color-error); +} + +.stat-card-value { + font-size: 1.5rem; + font-weight: 700; + color: var(--color-text); +} + +.stat-card-label { + font-size: 0.875rem; + color: var(--color-text-muted); +} + +/* ================================ + Admin Tables + ================================ */ +.admin-table { + width: 100%; + border-collapse: collapse; +} + +.admin-table th, +.admin-table td { + padding: 0.875rem 1rem; + text-align: left; + border-bottom: 1px solid var(--color-border); +} + +.admin-table th { + font-weight: 600; + font-size: 0.875rem; + color: var(--color-text-muted); + background: var(--color-background); +} + +.admin-table tbody tr:hover { + background: var(--color-background); +} + +.admin-table td a { + color: var(--color-primary); + font-weight: 500; +} + +/* ================================ + Page Header + ================================ */ +.page-header { + display: flex; + align-items: center; + justify-content: space-between; + margin-bottom: 1.5rem; +} + +.page-title { + font-size: 1.5rem; + margin: 0; +} + +/* ================================ + Form Improvements for Admin + ================================ */ +.admin-form-grid { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 1.5rem; +} + +.admin-form-grid .full-width { + grid-column: 1 / -1; +} + +/* ================================ + Responsive Admin + ================================ */ +.sidebar-toggle { + display: none; + background: none; + border: none; + font-size: 1.5rem; + cursor: pointer; + color: var(--color-text); +} + +@media (max-width: 1024px) { + .admin-sidebar { + transform: translateX(-100%); + } + + .admin-sidebar.open { + transform: translateX(0); + } + + .admin-main { + margin-left: 0; + } + + .sidebar-toggle { + display: block; + } + + .admin-search { + min-width: 200px; + } +} + +@media (max-width: 768px) { + .stats-grid { + grid-template-columns: repeat(2, 1fr); + } + + .admin-form-grid { + grid-template-columns: 1fr; + } + + .admin-table { + display: block; + overflow-x: auto; + } +} + +/* ================================ + POS Specific Styles + ================================ */ +.pos-layout { + display: grid; + grid-template-columns: 1fr 400px; + gap: 1.5rem; + height: calc(100vh - 140px); +} + +.pos-products { + overflow-y: auto; +} + +.pos-cart { + background: var(--color-surface); + border-radius: var(--radius-lg); + border: 1px solid var(--color-border); + display: flex; + flex-direction: column; +} + +.pos-cart-header { + padding: 1rem; + border-bottom: 1px solid var(--color-border); +} + +.pos-cart-items { + flex: 1; + overflow-y: auto; + padding: 1rem; +} + +.pos-cart-item { + display: flex; + gap: 0.75rem; + padding: 0.75rem 0; + border-bottom: 1px solid var(--color-border); +} + +.pos-cart-footer { + padding: 1rem; + border-top: 1px solid var(--color-border); + background: var(--color-background); +} + +.pos-totals { + margin-bottom: 1rem; +} + +.pos-total-row { + display: flex; + justify-content: space-between; + margin-bottom: 0.5rem; +} + +.pos-total-row.grand-total { + font-size: 1.25rem; + font-weight: 700; + padding-top: 0.5rem; + border-top: 1px solid var(--color-border); +} + +.pos-product-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(150px, 1fr)); + gap: 1rem; +} + +.pos-product-card { + background: var(--color-surface); + border: 1px solid var(--color-border); + border-radius: var(--radius-md); + padding: 0.75rem; + cursor: pointer; + transition: all 0.2s ease; +} + +.pos-product-card:hover { + border-color: var(--color-primary); + box-shadow: var(--shadow-md); +} + +.pos-product-card img { + width: 100%; + aspect-ratio: 1; + object-fit: cover; + border-radius: var(--radius-sm); + margin-bottom: 0.5rem; +} + +.pos-product-name { + font-size: 0.875rem; + font-weight: 500; + margin-bottom: 0.25rem; +} + +.pos-product-price { + font-size: 0.875rem; + color: var(--color-primary); + font-weight: 600; +} + +/* Payment Buttons */ +.payment-methods { + display: grid; + grid-template-columns: repeat(2, 1fr); + gap: 0.75rem; + margin-top: 1rem; +} + +.payment-btn { + padding: 1rem; + display: flex; + flex-direction: column; + align-items: center; + gap: 0.5rem; + border: 2px solid var(--color-border); + background: var(--color-surface); + border-radius: var(--radius-md); + cursor: pointer; + transition: all 0.2s ease; +} + +.payment-btn:hover { + border-color: var(--color-primary); +} + +.payment-btn.selected { + border-color: var(--color-primary); + background: rgba(232, 106, 51, 0.05); +} + +.payment-btn i { + font-size: 1.5rem; + color: var(--color-primary); +} + +@media (max-width: 1024px) { + .pos-layout { + grid-template-columns: 1fr; + height: auto; + } + + .pos-cart { + position: fixed; + bottom: 0; + left: 0; + right: 0; + height: 50vh; + transform: translateY(calc(100% - 60px)); + transition: transform 0.3s ease; + z-index: 100; + border-radius: var(--radius-lg) var(--radius-lg) 0 0; + } + + .pos-cart.expanded { + transform: translateY(0); + } +} diff --git a/assets/css/style.css b/assets/css/style.css new file mode 100644 index 0000000..83d4f5a --- /dev/null +++ b/assets/css/style.css @@ -0,0 +1,789 @@ +/** + * Tom's Java Jive - Main Stylesheet + * Matching original React design + */ + +:root { + --color-primary: #FF5E1A; + --color-primary-dark: #E54D0D; + --color-secondary: #8B4513; + --color-accent: #FF5E1A; + --color-background: #FDFBF7; + --color-surface: #FFFFFF; + --color-text: #1B1B1B; + --color-text-muted: #6B7280; + --color-text-light: #9CA3AF; + --color-border: #E8E2D9; + --color-success: #10B981; + --color-warning: #F59E0B; + --color-error: #EF4444; + + --font-primary: 'Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, sans-serif; + --font-display: 'Playfair Display', Georgia, serif; + + --radius-sm: 6px; + --radius-md: 8px; + --radius-lg: 12px; + --radius-xl: 16px; + --radius-full: 9999px; + + --shadow-sm: 0 1px 2px rgba(0,0,0,0.05); + --shadow-md: 0 4px 6px -1px rgba(0,0,0,0.1); + --shadow-lg: 0 10px 15px -3px rgba(0,0,0,0.1); + --shadow-xl: 0 20px 25px -5px rgba(0,0,0,0.1); + + --transition: all 0.2s ease; +} + +* { + box-sizing: border-box; + margin: 0; + padding: 0; +} + +html { + scroll-behavior: smooth; +} + +body { + font-family: var(--font-primary); + font-size: 16px; + line-height: 1.6; + color: var(--color-text); + background: var(--color-background); + -webkit-font-smoothing: antialiased; +} + +a { + color: var(--color-primary); + text-decoration: none; + transition: var(--transition); +} + +a:hover { + color: var(--color-primary-dark); +} + +img { + max-width: 100%; + height: auto; +} + +/* Container */ +.container { + width: 100%; + max-width: 1200px; + margin: 0 auto; + padding: 0 1.5rem; +} + +/* Header / Navigation */ +.header { + background: var(--color-surface); + border-bottom: 1px solid var(--color-border); + position: sticky; + top: 0; + z-index: 100; +} + +.nav { + display: flex; + align-items: center; + justify-content: space-between; + height: 70px; +} + +.logo { + display: flex; + align-items: center; + gap: 0.75rem; + font-weight: 700; + font-size: 1.25rem; + color: var(--color-text); +} + +.logo:hover { + color: var(--color-text); +} + +.logo-img { + height: 45px; + width: auto; +} + +.logo-text { + font-family: var(--font-display); + font-size: 1.5rem; + color: var(--color-secondary); +} + +.nav-links { + display: flex; + align-items: center; + gap: 2rem; + list-style: none; +} + +.nav-links a { + color: var(--color-text); + font-weight: 500; + font-size: 0.9375rem; + padding: 0.5rem 0; + position: relative; +} + +.nav-links a:hover { + color: var(--color-primary); +} + +.nav-links a.active { + color: var(--color-primary); +} + +.nav-links a::after { + content: ''; + position: absolute; + bottom: 0; + left: 0; + width: 0; + height: 2px; + background: var(--color-primary); + transition: width 0.3s ease; +} + +.nav-links a:hover::after, +.nav-links a.active::after { + width: 100%; +} + +.nav-actions { + display: flex; + align-items: center; + gap: 1rem; +} + +.cart-btn { + position: relative; + display: flex; + align-items: center; + justify-content: center; + width: 44px; + height: 44px; + border-radius: var(--radius-full); + background: var(--color-background); + color: var(--color-text); + font-size: 1.25rem; + transition: var(--transition); +} + +.cart-btn:hover { + background: var(--color-primary); + color: white; +} + +.cart-count { + position: absolute; + top: -4px; + right: -4px; + background: var(--color-primary); + color: white; + font-size: 0.75rem; + font-weight: 600; + min-width: 20px; + height: 20px; + border-radius: var(--radius-full); + display: flex; + align-items: center; + justify-content: center; +} + +/* Hero Section */ +.hero { + background: linear-gradient(135deg, rgba(27,27,27,0.7) 0%, rgba(27,27,27,0.4) 100%), + url('/assets/images/hero-coffee.jpg'); + background-size: cover; + background-position: center; + min-height: 600px; + display: flex; + align-items: center; + text-align: center; + color: white; + padding: 4rem 0; +} + +.hero h1 { + font-family: var(--font-display); + font-size: 3.5rem; + font-weight: 700; + margin-bottom: 1rem; + line-height: 1.2; +} + +.hero p { + font-size: 1.25rem; + margin-bottom: 2rem; + opacity: 0.9; + max-width: 600px; + margin-left: auto; + margin-right: auto; +} + +/* Buttons */ +.btn { + display: inline-flex; + align-items: center; + justify-content: center; + gap: 0.5rem; + padding: 0.75rem 1.5rem; + font-size: 1rem; + font-weight: 600; + border-radius: var(--radius-md); + border: none; + cursor: pointer; + transition: var(--transition); + text-decoration: none; +} + +.btn-primary { + background: var(--color-primary); + color: white; +} + +.btn-primary:hover { + background: var(--color-primary-dark); + color: white; + transform: translateY(-2px); + box-shadow: var(--shadow-lg); +} + +.btn-secondary { + background: white; + color: var(--color-text); + border: 2px solid var(--color-border); +} + +.btn-secondary:hover { + border-color: var(--color-primary); + color: var(--color-primary); +} + +.btn-outline { + background: transparent; + color: white; + border: 2px solid white; +} + +.btn-outline:hover { + background: white; + color: var(--color-text); +} + +.btn-lg { + padding: 1rem 2rem; + font-size: 1.125rem; +} + +.btn-sm { + padding: 0.5rem 1rem; + font-size: 0.875rem; +} + +.btn-block { + display: flex; + width: 100%; +} + +/* Sections */ +.section { + padding: 5rem 0; +} + +.section-header { + text-align: center; + margin-bottom: 3rem; +} + +.section-header h2 { + font-family: var(--font-display); + font-size: 2.5rem; + font-weight: 700; + margin-bottom: 0.5rem; + color: var(--color-text); +} + +.section-header p { + font-size: 1.125rem; + color: var(--color-text-muted); +} + +/* Product Grid */ +.product-grid { + display: grid; + grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); + gap: 2rem; +} + +/* Product Card */ +.product-card { + background: var(--color-surface); + border-radius: var(--radius-lg); + overflow: hidden; + transition: var(--transition); + box-shadow: var(--shadow-sm); +} + +.product-card:hover { + transform: translateY(-4px); + box-shadow: var(--shadow-xl); +} + +.product-card-image { + position: relative; + padding-top: 100%; + overflow: hidden; +} + +.product-card-image img { + position: absolute; + top: 0; + left: 0; + width: 100%; + height: 100%; + object-fit: cover; + transition: transform 0.5s ease; +} + +.product-card:hover .product-card-image img { + transform: scale(1.05); +} + +.product-card-badge { + position: absolute; + top: 1rem; + left: 1rem; + background: var(--color-primary); + color: white; + padding: 0.25rem 0.75rem; + border-radius: var(--radius-full); + font-size: 0.75rem; + font-weight: 600; + text-transform: uppercase; +} + +.product-card-body { + padding: 1.25rem; +} + +.product-card-category { + font-size: 0.8125rem; + color: var(--color-primary); + text-transform: uppercase; + letter-spacing: 0.05em; + margin-bottom: 0.5rem; +} + +.product-card-title { + font-size: 1.125rem; + font-weight: 600; + margin-bottom: 0.5rem; + color: var(--color-text); +} + +.product-card-title a { + color: inherit; +} + +.product-card-title a:hover { + color: var(--color-primary); +} + +.product-card-price { + display: flex; + align-items: center; + gap: 0.5rem; + margin-bottom: 1rem; +} + +.product-card-price .current { + font-size: 1.25rem; + font-weight: 700; + color: var(--color-primary); +} + +.product-card-price .original { + font-size: 0.9375rem; + color: var(--color-text-muted); + text-decoration: line-through; +} + +.product-card-rating { + display: flex; + align-items: center; + gap: 0.25rem; + color: #F59E0B; + font-size: 0.875rem; + margin-bottom: 1rem; +} + +.product-card-rating span { + color: var(--color-text-muted); + margin-left: 0.25rem; +} + +/* Features Section */ +.features-grid { + display: grid; + grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); + gap: 2rem; +} + +.feature-card { + text-align: center; + padding: 2rem; +} + +.feature-icon { + width: 64px; + height: 64px; + background: linear-gradient(135deg, var(--color-primary), var(--color-primary-dark)); + border-radius: var(--radius-lg); + display: flex; + align-items: center; + justify-content: center; + margin: 0 auto 1.5rem; + color: white; + font-size: 1.5rem; +} + +.feature-card h3 { + font-size: 1.25rem; + font-weight: 600; + margin-bottom: 0.75rem; +} + +.feature-card p { + color: var(--color-text-muted); + font-size: 0.9375rem; +} + +/* Cards */ +.card { + background: var(--color-surface); + border-radius: var(--radius-lg); + box-shadow: var(--shadow-sm); + overflow: hidden; +} + +.card-header { + padding: 1.25rem; + border-bottom: 1px solid var(--color-border); +} + +.card-body { + padding: 1.5rem; +} + +/* Forms */ +.form-group { + margin-bottom: 1.25rem; +} + +.form-label { + display: block; + font-size: 0.875rem; + font-weight: 500; + margin-bottom: 0.5rem; + color: var(--color-text); +} + +.form-input, +.form-select, +.form-textarea { + width: 100%; + padding: 0.75rem 1rem; + font-size: 1rem; + border: 2px solid var(--color-border); + border-radius: var(--radius-md); + background: var(--color-surface); + transition: var(--transition); + font-family: inherit; +} + +.form-input:focus, +.form-select:focus, +.form-textarea:focus { + outline: none; + border-color: var(--color-primary); + box-shadow: 0 0 0 3px rgba(255,94,26,0.1); +} + +.form-textarea { + min-height: 120px; + resize: vertical; +} + +.form-error { + color: var(--color-error); + font-size: 0.8125rem; + margin-top: 0.25rem; +} + +.form-checkbox { + display: flex; + align-items: center; + gap: 0.5rem; + cursor: pointer; +} + +/* Alerts */ +.alert { + padding: 1rem 1.25rem; + border-radius: var(--radius-md); + margin-bottom: 1rem; + display: flex; + align-items: center; + gap: 0.75rem; +} + +.alert-success { + background: rgba(16, 185, 129, 0.1); + color: var(--color-success); + border: 1px solid rgba(16, 185, 129, 0.3); +} + +.alert-error { + background: rgba(239, 68, 68, 0.1); + color: var(--color-error); + border: 1px solid rgba(239, 68, 68, 0.3); +} + +.alert-warning { + background: rgba(245, 158, 11, 0.1); + color: var(--color-warning); + border: 1px solid rgba(245, 158, 11, 0.3); +} + +/* Badges */ +.badge { + display: inline-flex; + align-items: center; + padding: 0.25rem 0.75rem; + font-size: 0.75rem; + font-weight: 600; + border-radius: var(--radius-full); +} + +.badge-primary { + background: rgba(255,94,26,0.15); + color: var(--color-primary); +} + +.badge-success { + background: rgba(16, 185, 129, 0.15); + color: var(--color-success); +} + +.badge-warning { + background: rgba(245, 158, 11, 0.15); + color: var(--color-warning); +} + +.badge-error { + background: rgba(239, 68, 68, 0.15); + color: var(--color-error); +} + +/* Newsletter Section */ +.newsletter { + background: linear-gradient(135deg, var(--color-secondary) 0%, #5D2E0A 100%); + color: white; + padding: 4rem 0; + text-align: center; +} + +.newsletter h2 { + font-family: var(--font-display); + font-size: 2rem; + margin-bottom: 0.5rem; +} + +.newsletter p { + opacity: 0.9; + margin-bottom: 1.5rem; +} + +.newsletter-form { + display: flex; + gap: 0.75rem; + max-width: 450px; + margin: 0 auto; +} + +.newsletter-form input { + flex: 1; + padding: 0.875rem 1rem; + border: none; + border-radius: var(--radius-md); + font-size: 1rem; +} + +.newsletter-form button { + padding: 0.875rem 1.5rem; + background: var(--color-primary); + color: white; + border: none; + border-radius: var(--radius-md); + font-weight: 600; + cursor: pointer; + transition: var(--transition); +} + +.newsletter-form button:hover { + background: var(--color-primary-dark); +} + +/* Footer */ +.footer { + background: var(--color-text); + color: white; + padding: 4rem 0 2rem; +} + +.footer-grid { + display: grid; + grid-template-columns: 2fr 1fr 1fr 1fr; + gap: 3rem; + margin-bottom: 3rem; +} + +.footer-brand p { + color: rgba(255,255,255,0.7); + margin-top: 1rem; + font-size: 0.9375rem; +} + +.footer h4 { + font-size: 1rem; + font-weight: 600; + margin-bottom: 1.25rem; + color: white; +} + +.footer-links { + list-style: none; +} + +.footer-links li { + margin-bottom: 0.75rem; +} + +.footer-links a { + color: rgba(255,255,255,0.7); + font-size: 0.9375rem; + transition: var(--transition); +} + +.footer-links a:hover { + color: var(--color-primary); +} + +.footer-bottom { + padding-top: 2rem; + border-top: 1px solid rgba(255,255,255,0.1); + display: flex; + justify-content: space-between; + align-items: center; + font-size: 0.875rem; + color: rgba(255,255,255,0.5); +} + +.footer-social { + display: flex; + gap: 1rem; +} + +.footer-social a { + color: rgba(255,255,255,0.7); + font-size: 1.25rem; +} + +.footer-social a:hover { + color: var(--color-primary); +} + +/* Utilities */ +.text-center { text-align: center; } +.text-muted { color: var(--color-text-muted); } +.text-success { color: var(--color-success); } +.text-error { color: var(--color-error); } + +.mb-0 { margin-bottom: 0; } +.mb-1 { margin-bottom: 1rem; } +.mb-2 { margin-bottom: 1.5rem; } +.mt-1 { margin-top: 1rem; } +.mt-2 { margin-top: 1.5rem; } + +/* Loading Spinner */ +.loading { + display: inline-block; + width: 20px; + height: 20px; + border: 2px solid currentColor; + border-radius: 50%; + border-top-color: transparent; + animation: spin 0.8s linear infinite; +} + +@keyframes spin { + to { transform: rotate(360deg); } +} + +/* Responsive */ +@media (max-width: 1024px) { + .footer-grid { + grid-template-columns: 1fr 1fr; + } +} + +@media (max-width: 768px) { + .hero h1 { + font-size: 2.5rem; + } + + .hero p { + font-size: 1.125rem; + } + + .section-header h2 { + font-size: 2rem; + } + + .nav-links { + display: none; + } + + .footer-grid { + grid-template-columns: 1fr; + gap: 2rem; + } + + .footer-bottom { + flex-direction: column; + gap: 1rem; + text-align: center; + } + + .newsletter-form { + flex-direction: column; + } +} + +@media (max-width: 480px) { + .hero h1 { + font-size: 2rem; + } + + .product-grid { + grid-template-columns: 1fr; + } +} diff --git a/assets/icons/badge-72.svg b/assets/icons/badge-72.svg new file mode 100644 index 0000000..b26a584 --- /dev/null +++ b/assets/icons/badge-72.svg @@ -0,0 +1,5 @@ + + + + TJ + \ No newline at end of file diff --git a/assets/icons/icon-128.svg b/assets/icons/icon-128.svg new file mode 100644 index 0000000..6aeb221 --- /dev/null +++ b/assets/icons/icon-128.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-144.svg b/assets/icons/icon-144.svg new file mode 100644 index 0000000..26bd20c --- /dev/null +++ b/assets/icons/icon-144.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-152.svg b/assets/icons/icon-152.svg new file mode 100644 index 0000000..39a72d1 --- /dev/null +++ b/assets/icons/icon-152.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-192.png b/assets/icons/icon-192.png new file mode 100644 index 0000000..764bac8 --- /dev/null +++ b/assets/icons/icon-192.png @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-192.svg b/assets/icons/icon-192.svg new file mode 100644 index 0000000..2d3676b --- /dev/null +++ b/assets/icons/icon-192.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-384.svg b/assets/icons/icon-384.svg new file mode 100644 index 0000000..275b40f --- /dev/null +++ b/assets/icons/icon-384.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-512.png b/assets/icons/icon-512.png new file mode 100644 index 0000000..f79da4b --- /dev/null +++ b/assets/icons/icon-512.png @@ -0,0 +1,8 @@ + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-512.svg b/assets/icons/icon-512.svg new file mode 100644 index 0000000..a25dcb0 --- /dev/null +++ b/assets/icons/icon-512.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-72.svg b/assets/icons/icon-72.svg new file mode 100644 index 0000000..708eaf1 --- /dev/null +++ b/assets/icons/icon-72.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/icons/icon-96.svg b/assets/icons/icon-96.svg new file mode 100644 index 0000000..2b3fe58 --- /dev/null +++ b/assets/icons/icon-96.svg @@ -0,0 +1,9 @@ + + + + + + + + + \ No newline at end of file diff --git a/assets/images/coffee-beans.jpg b/assets/images/coffee-beans.jpg new file mode 100644 index 0000000000000000000000000000000000000000..877b17e4b8874744db63a0e8bfcac50c6cc1937c GIT binary patch literal 136830 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 }P%l*wjOnM1R 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 T?j{xfX^5xZFC@TXj8p&FvT22v literal 0 HcmV?d00001 diff --git a/assets/images/coffee-brewing.jpg b/assets/images/coffee-brewing.jpg new file mode 100644 index 0000000000000000000000000000000000000000..ff76a374a9cda592742a84091b5fc37bfcf5c111 GIT binary patch literal 88669 zcmbrl1#lzH5}+x|%#34?nVFfHne8z%GuvZkW@ct)W@g4QGmL4Bv;OzRz4z`ScJE@Z zTI%?enbn<@m8~vGslRJ~_W(#zVv=G25D*Z6#McJ+yAP)!DJ-m~pd>FQDI@x&007`5 zWGrm$fJgvl-~M*;vAX(bd02>v7g|3t_}_KwZ~0EohuHM6malhGFkeX+Hhv;9Bv+b>2lwEBmE zVE?e=mxEu7^$(la?=!?T#T}-|hROX9ATrEu8 zzIf@2NvvILEWY^97o*vj7&rj{U~vD)olT6)znI~R;T%v0Dyus`!6>9FLpL@ z|MC+65Vo`TaI`QpcP5}Pq9kDCVzbx(*|L2^6U`+i-_Mg80k=Ydh z0345Bv5EVS%rG4QXblDcur~f9Bgq2*5Q6}Kmf8Or55_`10(}70J(r7KslfW&;V!!bOHJSBY;W39AFu+ z3D^T10WJWyfG5D)*Bcom2s{WX2sQ{l2q_3P2oneg2p@d|Ie>ydX`l*F z7ib1_0D1z0fHA-{U;(fS*aGYaP6C&Kd%z3eBPakA78C=N5R?{_15_AP9#jj|6x0#a z7c>Gi1+)OP2DAfo6m$`E5A+iB1q=cV6^sCk7K|HA0!$Um2+RS@7c2@a1FQ_J1#Adx z5$qS(E!ZbGJUA{mH8>ZzB)A5+8MqsG2zUy333xO3F!(a~5%?1X1Ox^IIRra|1cWAp zC4?756ht;eEkqy0Jj4OSBP1jwHY7D9FQh!A0i-iz2xK~B6=W~u0^||oA1GKTd?+R; zF(@r4Tc`l26sQWQ9;gMV6R0<6Bxq7-E@*jZV`vZPSm+|?4(M6vBj`66WEgT7UKkY^ zOBjEcG?*HgVVEtLdstXlB3MpXMOX{ipRj4Lb+BWwzhGbBP~fQGgyD4HT;O8hO5yt8 z*5U5q;o-^P1>m*do#A8P%i#y%ci{gZpd!#ANFo>`_#tE>v>+@XTq8mwk|GKs{y_9Z zOhIf!oJG7uf<_`k5=JsW@<`Ghls zZ$#uoszd=qwM5&*FvJ|hro>6a1H`u^_$0C<-XxVI8>G;r9Hi!?sidQ%&t&9e>SUp0 ztz@U}-x~HEd_> zB<%X^S?sGEXdDV0Q5<8O;G9C7ew zpd#WT5h639D59#O8KOI4L}F%Qm14Kztm0nceG=dj(h~6!tCDzq|rYeQ1i|T+HqMD9cx!SY3h!kH(}Xj;4iXn--*& znpTO{qqeAavi6Y-E{p|?lZ?+ycuf*aPE2`C6HHIdc+C>c&dmAEQ_L?dge@{G?kpuNb1k2( zW zT1-v3P`CuU{Bq@U&2;_arsme@j_hvhKIK8>5$FUarcr})n@e;9u&|LFjRfP{dDK=r_mAiSWTK?lL&!IdEhA&w!dq1>Ul zVPIhvVKd>(;pyR@5ylY{kqnV3k?&DPQ4`UO(P`0tV@zXaV%cJI;vnK|<5uGN%gZZpD`G2wl`fTMRXSC3)gskxHMBMPwHURLb$~jTy7PMd`jrOhhJi+o#+oM5 zrmSYv=7<)M7LS(OR`b@qHqEyAcB%G(4(^WTPP)$0F2b(NZuIWh9+;k>p1-}Gy^nqN zeV6@a{Rabj1Dk^ygG)n-Lo>tD!($_2BZH%YqrGFiV_oB1tOOwlT%kwL$D{HGdt9xt4Yp3hh>vtQj z8*iIGx4^d|wvo0|c5rtJb}4sj_t^Hje~J8>+E?D+JTN-AICMIEKMFdAKTbKpKPf+D zI_)|WJDWS#K0ms!zj(V0xkA3mx~8~px)HdUy4AQnx^uky`#b6$`@ZynCdgdHh=&A-2?;yfS{nDV4z^&;9y_3 zE(i!HC`d>sD0pa?uMHj*4gv1#fr^ZVjQI8Zj)jhn^_>_G7mt{Vl$45fEu76L;xT%2q-eh-ys0U*SZA=`n7iW_o@aQ0t^xe3Izaxh5`AP?wo{63+q(!yY}1?hmOpqrn6orW_Z}^ zMrqh-y#!5TvVZ<|G+)z8U5kV&c?%nV0(rA6Hq_c4eG{%LZRq}AKp)x1S%ccB?xe|j z;kVRZ64ElHR}~g|a9bs)ao^z20{0JfHfJW@fQ#-&$d8NGnyfFO)l(7a9=GXyed|V$ z66=Kd(l1p!R4>JbL;W^c3eZTKG)Lz>y-DLD2Xu=tzY~!*UE!{WLX(W?P&>{`SzXormBs5=_r-N&iLGmVy?>5nj4Nuv| zVT(a=V2fm|y?|O4D@7ytzN~&Eh#TP4-kcW(jzY%WS{P6?!%5cr&~xPFk&xs=Nj%r7 zc@U(K!-+urz@ap85G6qPG#6EW^$d-ufN%B&T6BTNSE43o;#DKat%|E<3Om?x|Ii>vbA3ag1b;il@~ zxrZPnv)u3|Fd)|VlAStik?0bPv$#5cE`AzvvhnyAhGFK`>AlKWl#Msrb&SRmjZZgA z>2M4ukub?Mnd!r0Hv%5cqKU<~eYNG=O4{UtE;XH(KfY6wuM|qEz&OK`_FNWP&)-bS z?V~W|B|18dZkUM7iXn^q#!;hS0b?d2l-YcC?WYi}Uptc7A}1pgm=(uBj3yGw3`AV` zZ6rRTqh5%G+7%LY=Vz*l>^2lkjZFlD#fpb9bh^K)8{(fYt)BoFTemttR3Fu+wtW;T zk9W|*^NV(YY|PRh)*Q$42g(Aa4Vst*Ybz>FDNd{PjIs)cvW~2cw&IxLVL$U@eC6GC z@f9`8C1J||${&nhNX5lKA4GN2%DTfl!}k@QBT-B`xAl1NXgYp5>9kU-%a ztkj{ztC#9^>*+`=(g3719hg4lE+6Na{-U`3`-=w{N|1_yAE+scALPSXP5g#c7G^R_ zRkpglq$o@dv&$hun`|Zqyw;7b%U;bXe1}FwB@Tsxq*rjsUKQi}9E#i+iW7#B)(%QX z-??xlH#m(ZtL6N8B&AZTJjV3{=j&*Khq|M4N{n`@7SNkCk*~^|4xcL)qC)A}hVh&@ z5;iAjlGEW12@gn!^ydoqB`se8DYkORp@H!3xLfns9Z^$Z?2-m#poM3cFvhz9ZbX7n z_HjlSuCvvG<^9D{;VgFZQ}98_VWiQ%*k=wDA{VTV87swX%iZf~EgWkU%-H16l^@=j z88y$`=PS#{Y-4z<0+;T2Yjho%w-~`1bCu1ut3_Rx$P(LYsRO=moVc7=2S?fjV81 ziD(t5))3)j9ZA>4f?C67foNj20g<#OcMPP5dfiayV|2+tkAm2aK?&X zkYOWd5sBO@V?rIQjD%C+?1b=B{DCQ3>!o6BzQJU+dLfqS#^AT#Xq@%Ho)IX2>q(O( zz_E`vPao9=6WidWCnu2mIE|^skzq4mM7QDO)X%w_Dj4@rG#gr=XGjq^L`og<9i_7U z;|ORRgj;%NMH=f9Q7T;Ne``LZ?Q;mzUT7PYAlOjLKU0y8=&C?P}U-xD@EB> zYt;SnJu5C469KbCLazPl`~1E#*C0W0t*~W16T}*|zLRX;0^j92Lo97YoC2Xrj~b(E z@nTp%ZS&N6r5K$4p?>*+1_=)@_1pH|L`3Or-C+wIs^iMgu<>dd!)HLX+PKH4;j@K5 zhzuzjT`^A&!(n-6^G%Xr2X6xb*7|~LP9THH zbN6C^)ie$?w}l}|0|Uw;a4>*wZ8-YYTEIaL z3Q11J4m)nkl*0W%)KY(;1uV}mR!(k*X=!H*?tI!r9%=!GYrxpWw_GIM;y$C$C+Aaw zLY^thN*gtOe-goIDSFmN4AQp(#u>B3G7SQGJ?UPGYp{r5o^rTa^YYqou<#C z4YhsBGR4kfEVo=JWGeM*I%)8qgkJ zrEVm4MuByr{a;?t`vh&mz9Y2P^W}OI@OfhG>r~%fe_zENsYqoHT5YNNI<0@4JUykx z<8hIHv&?W_j%=|;pf_so)#X^3ueJ4EeWBZx? zlWXFZ0-TK*HBIQHm!LoBNRv9&*vT)L-oX(K*p7yS#%>n0@&|I=`oJJkE{=CZ1bs^i z{L^@jjUoo1`$^JD5I#wIeXMXVIBwQ?OK4vEd7 z=($%qeC-iVeKZTbN@s{{!|q{2Qo1Y{g2m9rXoe=CYe`hXpM-Vn(`F$9=0%qzaYV=CQ4PkHi zq0Yo=v$)Cknw#$ZT(Guk8^kR}?d=}PnuxQkaCh)pj(#NivUsu+xb<}N3sHgb1HO+} zog}Q4e0SL<+9q(sXI5VKep~BgmYp1Y`?sC`r@kvLe$Wnx;fJtqVEZv&Zu~ zU~YeWlhscV`aRI6pBql&eUp-95i}|@#AZ7EL7o?ZYsct;rvWQL@uMzS)k-(E z4&y+RIzxJ=64v~8CeuM9Llv^K68EpC<}0>N*lWJVBj1;w;v)$qxXmi#XW?;wdKy`S z`5aET)Po@1Jf)Xo9M2-CbI)F4GOw4t#=_M(FBWqW5ElJeRap)y!!z$*~%(<_NIq>t1(%{{@ujOJ49b{Cc%>?k&rxkk)D+qWknro?Cci zbMeVM$A#P&S?o_A>hxs#xyOA}v}$~M8Apl`?<&otmt6jhu2 z2nhTT%T_kp$a%T^!5Gt(l8Z@-HHn*jC#n@jp6hlHpcZ-{<=qTD6->w>{k?;lG>+Ur zGOR}7&t`|Ilgrb3oK~?a98}z5L|HRae_EUdj2pU3!67v?ObbLtq!eq$@+NRLsERr= z+4B|WTQj6;YO^k=Q7OZ{n-7y+Vn=PkvE=#$^9?1PChN5SY1R)_lj^F-u$7w*&~aWv zIxV}f1!~{udI?YQtn^LvFkgX z{{jGp>3&5;ehk$VwIAP7UsmVmbXVicBYOg7hp{&}dt$@0uWly3SEO8>^AVn%rm&yT zFLpsL-1jay@Q>6k*94~4ZzA(8YVUL+`eVNS}$~*YZ^XUD-S} zvGaUgHDX8TDV1xH5W1g=J{yj9VO<`kHj5R8V)%fJU%~GbbQw()Px^=^1Z7e{I%Ih+n)Eh*6I&z$XWjKCQQFDy?o2iNA^c4zZ3Rz7S-Iwat!GS zt6Ds-ZrCXJvNkaywY!BURJXI;l9PJ@5Hj>5XDlUIr}Q{qv$Kd#lSkV9&0zhhJbQ7n zkd~Tp9a0>Z2m^}-5v+#D9~dsHUI^}Q?D2aohFu!NC9(JTF`oGoJ~I#Hod?$g_~z5q zm6whe^r2v;Ysk9Y?&rhN8a-B>F9;gz&V}gMRyr{ezvQ-urz%Vp z@hbc>Y_kQ)p3439)AIUlmcLN;QJOr}%?I~m)@`@m!#KXE*_oy9NNmL+3KF5I1y85u z!dJVrZV}|-7x(?$;6y0PO^@e5XM98<^}_D9y=B6LPdK44dUn{^EDe0*Vt4KE_RZOM zhbzsPt3SoVhAMvn_;bs-iM@GCv$?PEk*?t-mma@Tgwb&^;p{#TC)fYc(l!sKi z!zi7Oii+I{PE5sQ2lp7oJ4{FxEr^5@Pt+Gl`fY@MX<9Wv5>|wY!Btn$(h%X<` z17zMrm>fNj$@vV7=A!4-uIj>%rP3_vyIakMk8CB5Lj-HE9-&`J1;S!e$@!&Y?Bxy} zTUDJUg6lF@YD)F~kAZ$ug%1-S31K*q>EK7+C=&7u1Z(d#E&!%TCbVe+v!Z-NsW`u? z4?0s@mH4{o8WBz5!o6VZPow9$WNEQs_kOWlJT~=i2oRK8E8s3N3O_DJ6UkMX=W$YbP;s+@?c;Jf`7Wi&|!) z4lQ`ysr|ieaaEdnWrg9!7|t9uUR}4b{W|zk|EhcT-6pQUpfd-i?6@cNkRJO{Z~B|$ z=Vb8({hMu@Nhs1yzheiVt%@vzJ){T&iZfUQ*-F)6X>MgEMBAyQrRBy_}wt{M{?&!*|?c|D2hdjt@ zGq~M1g9o?Sfw!bP*A$k~Fq%(A=yP;&?`|@a5&^$aIp719k;`JXK#knp!Oh~eHue06 zfzE{oPU?MVJ3sw9`vyP1pZp)&`|R3<)N6#BYeS(x{ubx1O9@lrdIgn8bw^@ibqrY> zT68?6do5>lsAl-NT00P7TwN_BJurTec-GMotKuOk8_{`Hb2y2W(+yQQ*un*Bf zu$OJ=8<-M83l!G0ymb3)%Sgn%sN7-1JOMI@fFMj&qZk4kIte z#eW|;*DS4{^PRsU~F!Oj>O>Ei7sh?AsIr>_9@N z?Ik@zX>Q}{4mBx^?*nnIPL`N5YL2V3SRECbVxeFft>;4MJ&}#cDr>o<0+I{nEM=BC zJRlL1Cxe{v1oglHW~g)kfvgdiP>)Oet9R7qVNc?`zC{jwyZD9Gk)jiv_--%n#izly zfX>zc58pH$Vg(M{#R~uv?INc=c-4iOmt9T<6l1op*H-oT4!4*_L_NxK>MQ6==PUB5 zukRQ|m7U-o6`jgO2ma^>djK|dh#dJGca6!9ME=Y(Ma9v2Qg~=iCnY?>Us58LZ&{v> z>858*f%UY%iX%N@&D0V>Lg11Pj92L$iZpJZQdnhHcufz46Y6!h_u<-JxXVtpC6))8 zW6JGxYS{;%>zbyV(F-tWL1mwx+cIK#Rr zwrqX0LPw!_8{T4YGP+VT0$ZzUlxp-3c@8t3R+WU(bN&J@ppw=y^LS3tGv#M7wya;z zN2+pmi8$9v!M@GoZi{O<7bqP$iP|hJR|k0fWSvU&QdXf|A7gW=G{Sc6Hph3hNW@WV zUtBsY1#nFpZzsPBfz4cA9ya|2u-yE~EQ_buG!N+&p{A>L_>;+5u61Lr2HLq1w_uG4v61 z|A4&nk9$PSajjL+@7|->3&fMv5HEfs?cD5aOhpHCOws!5_TrMgF(w0@FVA95Bc_O| z@`}i`9w#wk@7l>!^e0Up#-#cxG0=)`ob=2hN!v2sJYA>L^)gqITP(1gr`_h0w=A-v zLg&NW>^Xfb`z21x6$!bE61yaVp6V^)JcMBpoy^nQuQi|MUcxpq=+Nupp%%3i#OMsEm(ac)i zMOpMY;wm=>?<2kGj*;yG2W#oM(;*_qkEz-bQR&_}wWLgTTo}Dr;1jFe38$R!I3jC@W z7wBj$r(T`GRo|apCpm~kq78n`e*tRN5P4^R0kan^hP|r0fqX|+rkW#< zxh$gr+^F~RDd$j(l`Rh0{?#2%jEsC!JE<0%KQ9M%)P8TMyJkDzA0m*)Sc|uKF+;ms zt;|00BW~*AA({^D-mi4k-O3@FUXvI0*f~ey{$(-Pg9{ zU&$%o-#NaISucL7aZARc#WcQUYnE14y0C3YkZ=g7vEqWQ?&aDltKrw!Zab;`a}oNR zAV!=rO8=OHBpayYY$2U^*zO{VJ^wHyxphCWtva~Pg4ERb@}s1rL-*8DNLE5tv2@D6 zv)w)Rfj{kQoXQ?%b?u;2-I%eH(1-ZKhg^RFPrkif9B+fqFpar|FFRaJ>Sr(4w#V!Q zJ&Nb~)7H5VD(UmZ%}zx_X-gMD;xxnb%pSDWz$LHB<6SUI8nsCxRydC5#f+D0#^6iw zoUt3d>Xh7L{Ik$SkF*4mu@W_ zfhS$V+Gy2;RSvyJ+DCTkWz1K6htb9Ps`kaWN@K__YI2KqX3C+*=k4x3-DybtA{$Ds zI-P(tNuf-{xfnH`kNHPFOq5&pQ^fDvE#VBhekEnTc~xl8E;z;+i$oYXJIA)4huqXR z_qC6Ofn9HNe|Ed95$9+A0;Z*!#TpbF+O4C{a(u2Cd;bD>J+4DF2}9iJ&XU5;=wqpM zK-LS8mx)MchAw`uv0(;y>il5x_-WWN>TU>JxQ#@VvRiQ5+LMhmz?Y}g7(%VLJUpBEC?|D6s&<7&6A0bc zVE0lmwefMWV-Q5yWmUZtu5b2ITf~H-5Z7ghQCAymYAHZj#ogr`weCm^GZxK1$8)Hx z*lL&Gg~1p}!-^*s@V&2`364CNmYwLwIPALqquqJ!FGLsTtkF|r`3CO406wLY&mzs@ zro&ImD?X>YSgrT9`X{x864wi}lkNKny_M$hX&*AAizHyz;b38nHb&VBeUJAGRcl4* z3Ix}ukm4tID~(kR?@~-r$NfZ9MB^#4#`Oxl5JN*&F=u2CXHCOJzy2*%-eZkJv z>LWha!*+11|0S@lfpc{&eWP@Kdl!+g^*Yw&?&{TLrNM~i*5I+0=Rx#tbLG4`CSK9r zo9BRebecAPy{h@Pifx5_RKjo>{`LkGiJ3bay-kVfy`{3Idt{*e&RvWd6poOSYMrm& zP_Q7&YBlftdh=cNif%Rb8p`APilf<5ya;qvb{~H_cVmNkl-KHa#$+!)FLiBAvL$uC z$@*q?^Y~vt(fj0?=lA*j?}_0b8i{`bw}xxd*_3*YJIFEyek*4J<9j$=Z<=Z?Pb_!u zdW%nb3)PJAx=MvUN4~E4brs!u{fYcm4XdtR8Ge+u;dEgCfN|UUhhrx%eh}EzC2!#b zQ)o|fBBtMQ#<1O>TS`|DO0p}YtH-s7!qgDR9wO*7h^b?Xn6e}j;SA6l0}dNum;MjV zl7x4M$8GSb5L2BHsXQ$<9&Q<1JJAeS!$cj`>Sc`4Jo>%D=_={f*iFyXyVj-LVC?lY zNSc=%iSmK%;+b@z2CL`k^0Pfnd?i4IpP#P?X0j>F8z>*@)x6rn~05WjhmCtLRJ=?V#chq^a zUwkm#vc8tp^?Sy>^EjbnKH6a%rH{Jgxu<^L-(ah3+LyO%275bu(^~5ISyue?DP}5@ zN|So!UbHjL`I&56Y=57fQeTsOjEMifkv*gvtgq72?%?Zd%c0|pFll+>JmtapwsPr% z8Z@ca?WAvqDE?`oqU{okO^bH$CP5vYK`dD#y5^PDu@$&SG#)cfU%6>TH&Sef)fZmIGFOMB_H-JklRc=jVs~>0iKrwpZn0uhGZ2F5Zg6<;LAE702?Z zHSu^UwQt2>)~WlVoxyNP+X07e24BKz@}4UhH6OS2S-PD(Etj6-HC22DjM@5c#Y2Oj zQ|-G5o+M>i$q|cJ+Z@ApN zD_Jbq1~Ik97qmoYm;U8(3Wcl`X#>mXNpNL=>^r;&%mQJbk3hG0;GVMtui{ImC#Q}KG`a~Ww=?%W~zoHq94fTdP8d3 zGhWYevj^QbHnOkOu_Rh*%j{|rA*KVy{@;9WWAolTvmbP1<}cCIQe1s|Oo}cpy^i>Q z9|x4Re=r<;s_rU!n42~j*31PexEQqPBzH1(_!Us_@D#;VD?K4J=n|g} zhfZLrhK*1+h>5BavWi;=B0Pe2#Dkr@@S?=fC#C2t@rH4WV`PyN(_SJ43r`rB*n=_$ z91S0Pk~4Hvy^J%GhBlXL3?__sY1Fu#soB)!C`SyzteQn&ubP#NuH4u$ys$n2M7rR6c*6T!d7)Q38 zPoXs#ggI-mAT-#IXV{R6Kx#2CrwD)(&N-CSa@`x*azZ{{|LGDLQzjRdWXE4W2u9N7 z4@o1=QzFKw(x-kQiN}RiK&Fo6%CtZFRPVyqubPmZQY>i@qFum#A*aa7I;$ZEm|~P_ zlH(%m=ub9f9&itvpUNe>@=b@zS%o&q$I|}F(f~oA;K^}Jx^luW|BG=XiWEXvdIL7x zZu89yC-24ORga~(r+m0~cc*09*B6z?cEaCi85ag%7xPjiZ~r6^;pwj6d##qJC_0-@ zYR8IXs_ibVRp+w)OjjUkBdc(gG@b}QwR#)fCLTLZQPpZeR_moX6-{1ozoTii;gDS)eWRo=Edue081V=QwYXXB(P zaIf!sq5(4~G%~6A7On>3a&R4CTt}%yJO+y`AloYIiqEu5E+D$o!D53W&1(7Dczf<) zk{xHt04uMH(T!2S#*3MD9^!SN*+!3{IW^``)V47l*3_a-I}utRRAQMB!uCf#)ZHQ) zOOsW9NH;ER#iDCsdv3kErY-5Ff;-`v*=pq=;nh^coMQsB8w5oKi5tnO9~o59@f#_n zBaPv-Dk;kQd}fjBrhjYLs1EKE3`Dlu6|1qdnd|SYNNd3zHGbs|f5=_JBPdH@29=1)09`7--0ZL$c${onP%`J0qAe5p^aK9dE zmJIwW-3V!v>D^I&J*a?4ib>RD^*%H^j<>TDi8#$?4bDa6l_3zw_8Vw;Ma4u47l7g#hkISKPoeg3{Tt{ z+vBZHqe@_;rHpiz&bb$aiXt)lPvOfo%gsZvR~#w^)<0$u%^DKBt*n4`T529XDogE> zy%uq8t0*Qu0}F!))7B8{$gT=dPI!!Zu`JaxiM5q#9P3G`_J$)7D!e!=1>pBng58QK z1B_qfO9mHio9g@wob<~L=R(FkV%jOC2}583;~NpOYY{tUlGWa0QEQcGmPIMVc7<=E zqge9MRv_3~8*)j(2?>m}ami0Zk(9PWacZbr&@;5(fF;i03aQ_k&tQwgqyiiF@vQ8| zO|7Bb{SDzOj)l?NoU8Afg998%!%$2T6&=ml-!Q3onKDk6cp*}B z?2n7Gn9>-!RFN1PGK>)^udj>8BypCfSLUB}*fY!GzPqIfgeyk74}X&y^JtvLca7<0;Eb zQUV~fF-*8+f;Q;Vjx1rbne#?u^n?1aB9sTQuDziqM%etBSnQ6)Scmju;sD(KpiQjRjh|I;VvV{GD?T<2HnS4WQ`Qrbv+Qn)!3egOAJfs z6a9ON{zRDh&?$DDnzr`bM4h#PfZ1`Ytoo~voCLC=bsMb>sQVIltZ&( zW6m=z#|%Aj(jq@)=pw`4c7rr>!~|oA-qRCKX%gWxh2Fx0ckr?i6^U-*0Xfu(&DwxU zpmy?1_lr4%u@Y=4%fXS)djN2As8Nqf$g3GgncjMS)U_}O*O&EmvljJYleb;FJNy%{ zDH$57aTbIW)I7XHCL7fUhtq0{F|8{4jWxWo6Po4FN5d&FqXw1sj_AAuzQP~JS}`hD z@L?^I1MH6(Z!g7f34`)TVLiGX1)QEA6X$QlDshpP8Maf5%MC?D%e#sn!nU9f!ZaSd zXw%XgNNEdBf(~j`(ibQ{LO{4>n;w7!oQ)ei!i|GGMxN(toMc5%B_dO>XtvEGG!56) zn)Pu`%O!~$M3k1s6gW-BkJe<3qz!`k!;~0VQRsQsaVtYYHpBwkXc{gk`!d-CO-_oQF zqu5bdh=!X8uUs&5dCI8~R1lXk1W`M21X@ovER8ZN2jy9~4~>;nE>R5hF{igskCEsn0Ik zI1FMP??^?q8Uzf+<>$B`m_{Ix5BVl{5~mnu*T5N!lhP&$aaGkUJ{b?k3i;j^;`sU9 zQ@`DGr}M;i=VOiEn2yzYjbbb?-iUfG#CEkirtw}?hpl!OVN%~n2=aVf#m?v4;^OB# zXgV3ZO)LEQe#>Ab-yNJr@9u)Y-_>gQasx`v=`|%;^>OCl()S#6@V28(bZ`Uhulwv@ zfWdp|i{-WHQQh;jBBs|J7_aB0m5aDz*pmGm_4RvI3o5kNf`ar-Hye^jtS4H1&vW6} zS1~*Z5&-o7Du@49Mf_LQJpc?G1p*lr2@MjR0E6MH@Ez)_RvrWhlFiMWK^;oFt*g^k zUf!X=QCHWXeX+%_zx^4ItN7zrr`z@HZkz94fP7i)a^({`Izs7PefWSJE?ir0&&S&c z9O6k!e;}z{eXV`}hJPT8Pqf_Vh70CrY{#}OP4lbU&2F#lucZLJtB0FF1TQ-6vnNY8 zE$Yg`(95Z*rPpUVD3d(!|8&Jab(3 zUU$T13a|N%NfmuTYm$1y;Ylw9ie{~d56$hJ?6+rxZ>O}6uNfbFyK1$IZRF5!RJ0Fo zu2<{)upeG2gv<>MdsIG^2DO?22leJZITX#Nax`|$P37c{gs zjP%--uAW9!O=+La$sdv+>l2X)m+DF7gG~*T!Jd9!G$~!Z*y3=p-Coayg~*hQi!zWY z@p^xP!t*ifqEJk%{n4#}!dM@OXkL+R|LKY2H^Ms7``eGcuU7Bp3QnP}DT&eD3(co> z`flqS*Zxo5)YoTPf73*jK8?9fTvhBFOkS_|=OFey;#>B`OUoIl@F)&B&zYWXSw%it z$W^X0bpOD~3PfE`nokoPF)}}rgo4^1Az~(;50XVG1`hRul-L(}ia9g5w41%Aw!`yp zUWVGxaQ3x}k9>TD(X+f8^r9xN1&@`q~sgU z$F4yQU5hl#2cQ2iY$K)=samgrUG03C9vaA5U3;nBtY1!#9#gQytdC5OW#u1XM5}CF z+FVJb8muTRtcGQ(CMz6b$;ifbYmTG6Ft6TE(}I-XiNrAK(0ifZ%DoHweVF zwmg&msA)0RuWak|x^8-9#r}*q6H6}GxXYMHU_^QG2J;2g-v51pO%kQ2Gc+aq(gRN) zJ0@uwh8}Xx;w)KJyyyJMW|jg?isbovnp0Y~}p+PFxWGEj-< zK8^|fgs0bQI1*Cx5g+1WYz>Fs$v>@Js)P0I?6gcYgUCN;?fL5R*FZM}+&L1tP&XGe z0I|jF9kQ;}@k+kgPBz2VPvX1;5X3C7O!_el=V5tJH>5Fv5U5r z)>%!0%;nSx5*cox+bd|;{nv=ir_TSRrJquO_`s2tSv+VJbK{zDNZR&yzbQ4LS+a_% zj*z)rT$H_Y`0>6y@l#dfA4@<%XK{?qB@7WCNdN@}6iQF6q!^r4+#k|3!=Rn5Et@CJ z^1}vs4G?3*C}8L4t4M-XGRhP~pLgvBUoP&#InT(D11o)rh`=aSjggU!302Gr|2UOp zgMtn5ZG8P_&( zUiy>SlY0*(J<^ED(qY2iOem+y^Rt#DWqDv4?+A?-Jl}1(iJx4JF6NvIxO)Ba3l-0o z>0+8+Kfu)ncGdFzEC)(<1;)lBx~)ENhED45rVheyCYf0@#V$;cxoA1gy1 z95GJA`a+WDr4GJ)0^POS3l(E)@_9KC@N`sE_;7EYShcFjB@IziO=sg12|-l;2LQ`J zG`}jc)hJtM`qOPThSAtIH*1}fadoQQc9&{5l@WuQJ*#S2oSYaj0w6;_lS#v#{`1$M zy-KolS&12dh$hl$nJk2a(PNXw%N13bohH)$aUP7cOG>h20Wciu>s&NiD+l^Dr+8X4 zOMTAGFIv0n@zL>Fcx?PhJZNw~@xS994EX!_)x28%HC{WZQ=Nk=3}E=bhXx}n5=Wpt zc1li&^rMi{a?b4CIvM<%UYeBAwu#eCW!4&lRke0CA60cmxAUEUgh0_%b%-01)0rV58MO0;GEr3fLx)ty5-W+22Twu6? zP$N#zuCR)t&0+k%%CK2Oj@0pJY5xH0-gfQVx4(b+IkU&^c!tj!QP4^{$*)K}x(O`4 zeSUv4Fo6{U{FMeAVC(%OXl;L4-TuR{?n>m!Fkhil4)Z9Co`$u&-6ulr{Uz3)=d?Ysa8^6Ua55fp+Z0xMRhZViKz`a6+3aWCCNBWJl z+*^H@U~DDUq5ZZr_>US@{PxaU8ST9LyS#*agj2`-+m`a~bCvKc^Ub~kmFBrG96aZk z_&=BPo^#{ANlQy-`xK2?Z>4fk$Dbv^0vKV(##TV6#=XOKEDE1v1`SWPk zt?h9{!smX{PA`W2W@pExHjc){(|+8y1I_sNBgIo&j@03Ni)+a>IN$T{Ak^X^&+&if zTyLK6{u9Uf&mrSH*Nk)D-7Asq9FkM;j#Gv+RqE*2aN)o~_w+PYQa=>@OiZaN%F$>U zcAL)?Q2-_o<2bLvXAxlc#Tbi4-M zTW=lbIKF#>^BrD8SD!~$dCPBGa2z?w@qa&5$`Wv|UqLkZ4PP3s4ZXyS1Fuq!uC`ha zRuwR5QCT191mif*!f8gwuGZR}J>6~-mf(ap$>Up2HP?o;79|WPs&%$FOu`ni^gwt-Z%`zkjc-9z-^JSU~$uLfzjhY{{Y{t<>MOQENJD+Gb;3^SnxbVWuEIo zZC*!zk8ksiGI{(!)}GJduEyKF_pi)vax1di&42EF(X~tI@923PHud>VKWTN>Ut#>` zZ~U%XTnGBKsw&N*C|x0}DS-9O1tmtZ3ds zV6DgT5T=@z#%{*97rhr|+^;8XiZ|2fadB9)5s9%5LL9#z$ZKr-<~&cC^Da|o$o!jz zY<&ucZ4r6J-RC*w1=*2ecL-b-C? zC*JVA>|6oIYaOcZay*6a$ZlTG_JKLCm0^fFduEJ#X!1N3{43-{ehl(h79aOJ4YxwCFNjp29> zOloVZttiM?(B~)4?7r3Z3m(@I2$Y&z<2J5*=4{5l)8pIH+~T<{{eS7?xLwTRJjT3- zn{j%2-V5e?FB8Y?emL|qv)$gC8ylU;#ZE1c5Sf5i-9(~(0$ZZgA|<~A8NPNZ5~G4r;m9O@*JkOA-&1I zmG-=sh4K$E@?RD5%W7-q7jMmg_u1sDz3z{@v!N-t5?rqA_I9haW@jKx+N8>jjWkbHrLrtGot#Hnj~&(7;(UjT=0DPW zf5SLu;knH|6FjGf<+H=NWWo^Rj#|S4b#K9eLQQsZt@K(YJC;M@8hB2{8M|`+Gd)k{ z+1sNiwm7~1x4$oDJNBs|nX{w9acEJ_7NrQ0Tsf?*lXnjAwT~OkYV#gP<6Pdgx3nhw z-v0m_{(Hy5(#==Ho>QwZ0me9(6e2Fwt5HBh3|!;&^<|EB&nI3|5%N9{UHLa!H5jT2 z%;olX>A79XyA=5u(n0<*U71H2LV&Y_@5{5%Q3XV(0nI*7Q^~bF!%vQH58!{#bo_Ua z=e$>t)25g2C9g5*v(QN*s0ub3g%uGMB(m`hAIB!Nw!Zft#A)kvXZF|t36wi~J9OK7 zWmQ#LnI`rON+<;TYb~wGx^=^m%ZgK^0IwbJ(AQI&1>!E)pl!YyLNPiNck+%4vYEP z^r)^Ji&5O`@*7r1-@s#iXl)zPTK@okKbPS=z4x`>LD%r-lFYcEU_n;|X2v!o#N64U6S{FThTGzNuZXU@O#XQ+j(Qo`I#O&iWy?Wgsg7BA`D5nm^Lrjqq7i^eS)!Sz_gzqBORrw6)`7F^`mPczF*Q;VH+}9Wjr-!!{Ff_XX*) zYHO25l(l0yMp6^a%Drt#jf5K$nF+{GYLu0EOqA`ffDBUXNE(&-@bvL*s@sjH(Ny)aUhy)qIDBqa^NHRO!dy^2cfU3WQiRLD9D1FmD@WRwOxa-)C|$hQyEQl)3r|S z#mT``Mx0Myl~hWG=2ok+1j5Ia%|3GRm8Kd>=1`x(s@3<(BJw*gHD%e~eZOt)Dl|ymWjh^Zq@(c)q%^dD8E( z_z!QdA2A@Tt44ZL zW$fFo>p`$)(bY|Oq*6h~>+GxD_9@>8Tz=a_x0(m z(1^8a@R~*z)?xnuqWG(iJ#pgN5!B^5B+fVWvy~$|dl&-er&%h3gmv-n+hudhc+F+t z_}&c^?{G&0I{oLB6gzK5sCj(kWHs?$Omx~y#A(t(BL^RGX^uv_XZPRb7XY3B4u-#q zacVE(dl2IP023QIH|^P66~Xw@Ra|0RHwM^pxv;)R$j?hbxKmo&7ZnV|HZyE)=F(no zmBA*+9kWvo13hjFgW|M@C(1iZiyw`fjBu1? zWFfGU{{U8eT;iy>aGj;*b<>aW&l=I1fNQ@DbO6?~*`3|gEobP?NU_vdVQZ!U4Cav{+}D68F7pGQpBgA7Z(=*cW3$vhg{Qn9A(=c zK`FzF<5p)I7|%Ue^t9=-vMRe6ric%-k#~j;JJcRd6Rkt8Hs)ZbSInU8h9;=(x>{Qp5^m+1^K59zDhB>vBAQ zH^uTF=fCBAR2Nu&c@Vb9N!^GR~t_k{6r%_(6!R{DeMp$ZoUdx#3* z)XkLSZKG@>c6_#n{2dLgZbQd3c_TXN?PU->(5;iU&D#FygCmp4Ws+0s3N>~22Hf|S z(X58LKJ4|~r?;UHnc`es>AHA6HbH8}KRuKbn#NlAlbqp`#SYGm4c$&bH+5>2 zEoI+HJ0rSr{BIqp&hj$yO_*!{0IzWVQOD}YC^&P;H&jhV5_70M{)UEygDpFg>x#M) zj5%0&S0DcXGhc(-*YRfO_&!35hZ7!K39{~+eBkBvdA%Koq=d{>T1g`c4A{zxYjPVq zR@pp^&U;@edF-%p~@ zKM%KuHl?$#&2T)AB0Ss0Jiq-M_X6?r-EKrT&~|Exy#pUYrPp4UfRQe=X%cl6+>NtuFVvi zLzt&6f2?iOdZb1wd@7&W=Dde7;7L9wkCN)g^LuL6ARt8p0|xDcQ)BuP=FPM=#=~Fw zlWT?KFy_R$4R7>55*qxrkNL&;+4EoM+)oqP_V+h8vu`$5pan>-nkSNJ?0fmvK?u)J zE%VAxes4IWpKM269tq-5=9kKOU4J9-t`QefD5nm2KPUA@LF+xW1-{Eg#@dy|+iLrR zZ~Mm~{VTKMT+FC(ha;=Gp~!!oZTQCx$8o$Wa9pG7?B0LJyqn6}kRLCGriP}cBjY|d z#OU%-#+rjKbzs};%cmf&BAb-B<3U9pEjq`S;&@N1b(XB0gm=c8zZb2;PshftzNwXE zs5nLHGp!{!IM|OXufM6eEd}IfEp16lk4+y5)*4mf>8~7wN9F6xa!LSPF4kKb;;v5# z5k@E53N29;D3(X#`5r5g!YwV$Um@4$xJBVPo^!?gqiHIsv%9(QO%&1Aob{o{%Rx0y z9-L^@7?=^U#RbPDt;p)^YAiO6j;6$To;Op+c9mvJh1b#u@ zR{Hz&P?susSpNVf?zMD|pC86*c-F5HlF`u(42%^?&VQM+7d87O4s=n27bZHn1gJwd zM^+|l405?O@joD)JrQ_qX?Y(Pso)!&)inPA`cEg`j@G;y`Wn{YhmXeke4gw1Z<%t{ z@tz-z;bqFc(r#rWR`R0k>Hh%1*5D_{d_*<0-n!7!)AaA0zbSo}$_7+f$K{7TD#~iE z^naO+zPs@V z^`ATAUQ6d34=ug5r?*#Uh%K=U+K}_=^J@3iulI2`o5nVugPfeS`e2T%1NsRN>}KRO>p{reD(c%&Rdq| zJcMi}$I@*q?Q1hIS{leHO)h_m=Yx8}wb$I@HuWK;%0rUzy>ABp0F&eVXBFgp?-@N$0k4lzAWes2BpBpY3 zT4Dh`d-v?WAb_@vga0O+>nn@S8e`Q%;@$$Hp zN`_3EiqmIvZq?MDoYJA6J*z%2Y3u-`HYtW`b6UP(t>#hk6y%q0?ey>8=x*D!=61Zp zZ_jr8zi)h*;$Wm%0h>tTIAcL}X8h{2R7UPuS$_kXGaT+3!l5fVE;;KpyOy^qyx^uZv4Y^=$YbARa200od=nUI-ZOM?a~`s$<8ew_IP>Z>Mgm)LSaO2_2{nkEtT8ygop zA9_0?s8va+pIWPrWYZ|&{^J7nY^>R0`tFIbEybZmm`s*M7D*I9imf*M_AmttgYe=1 z0LP_Xy;|SX^`0gfx;k~5&7RG6s=b|$S*+pw_M0>)EAD`!3NsR&F&SLvS4Wx+b2?r2 zgT-VfxeV3{pkT$y8Xo@uMX;c%&@jXK)BqJamCvfOiOW5fZ0b*YTfeb-Te?h6C62`z zqJ8~)Wpab(^XN4Wpo(j>T}pf5hP?IV7MY*R<({+I!IO2XZ2tgS z-#?t{oi@}uvDKENX??|>=KlcM{Q~Jke|aK?`Sq2-&i?>suWVg;=^b^7DW6iK0Yc7R zn8lc@z-lKRym#>b02|1x#HJ(j{$J#6W2OA94}jHObcf2r)JkB(j9(unWZ{Fm-qpKa zc9kXoLJj8_7MM^4=5y71!F*EEC9jQS^ zEENK(07VnzsqeeFa^$8+hh}Y!ow`(j(WbqnL5j_tR!y!ZiUPoEfSA$s+_U1cGtu@_ z1U@AcK6Li+$D22HDZ z)m-c)*JJ2|r_vQCW#dWOk6H_zgH=Bf00Hk}x9l7rWgK3Sy3x)sgrl$Wq`l(?nR#9` z6t(TS{eRv4e{$W!7VRQ2v75EB!@twC*k-e9mByfH>}#^k%`;t>Q+Mb>B-`unYzjALae zsni5baTlHle;s3_!0p}-88BtaQBuLGbu%&$U3b+@Q4WI{p9lq-`v$Qqu)AN- z^m9B__?i5Sf01;*nV@1Ml3A*J+B+!dlPTz9sha0$2%F%J{+9QEra7z@M_;>ql`k`LsWlnOSS-Y;oW7>8CA7i6rE8rK*~*ttlu0 z15H3hMu*8H$WcQmTxGU(SfE*YW%WEOcT3Kb0X%hhg?tX*W}OIRUu$HIqn4 zbfQ@O<6wQwR(}tHU**!*+Jmk2znOL8uA0$_MaG#eRWo<6Gs(Zvo9bQcwreX)wOjYGb z$s$n)Ltgz@3{S&}o|cCg_iXw#6FvU`LRGPum##i_U4ypwv1$frq9RsCG@T(Ss5qHC zn|3UZCr4VBb!7BZkAFnB)#X@(og5+}{M8wKwruRS^scNE6cC`UPab}~Q9X=xX-N(y zNh>-nPsyY70+85A35-fqmaDm3F4vyQ?T$ci{{VEhSc56+}7Rg~p#9IKUlhu*0#Rq)X{3GEqUvmMAcLjXQO7)?IDno!{9aNudbTPrL5aD+Otkl zm&fE$(RKm2$-d6VcSC~>KGYusip6!(Gu8Mqe4kljfr4Si!UlWx)%%OJj>BxZxag3U zq~SQK_325F11Vdjq+>V;8Kf2|DUW2nbxBSNpa4UGNZszO(#WQSziSzklElpxY8T&j zaZjT&+wQjd`|b6m&CRHSHtn_u)BX?9-Ai{{T~Iuw#yfYM>&rvQZK#u3#4%2`q+7 zG4HW=K9>oj{X3eq8w&bV_=zmOKQR#x=Mi0X)?H8Lc+oycg*yH_OFj0UTNfaG(-G8_>M&rzoqZ-R;;<@1cB!j7 zfB(b)LJ$A}0|EpE0s{sF1p)^E0{{U40ucit1P~H21tLLFVG|%Sae)RDBSMj(Fj8W% z6(lpk(Q@G>Ktof4lJG=h@&DQY2mt{A13v+gzr5rl+;a2nGLP_1L-=F(r`Qlf*fI!a z5k(&P6mmHcmz4;gVaR4O84SGUG9SPwqKYz)w0o!j03=37F&UI2D=5f&0`vScna;@O z?|95*Og7Sh1stUf@Ny|=G&8xStdnepNjLImhW>H5dM>2{i=X6z( z_D8S~92qBm~P|E0J5GW`>WCl`(W7skX_E4QU7)K{3Cnu*Pm9la$tWohjKAMnfWV zg?x%|%g#e1?!H6We858@ioRhtGLNt(8A4E2MiHF6W)5W;y4hQ7iZhg;RAy1i5zMEA z&sYGNyf>fcAUVWn@>+A&?%+tDu4idj?m@s34k#SIi)XY=BUqM^)ts z-Aa*}$Q5FbW#ilwE9|a^yT(NsM$5`6$dpk|&Oh?OUm@%s!i=Jix==wkF_rQNATzd3 zMR;Bj?7U>;QAHGUk6_B%Wj^td2!$wn0rvzlY_AEOlPzQrQS5GGFoM7Eg7BN!4#}t> zo9`a*atM1yK{Wt|a*w#@?u=&$ry_C+aw_|+y@f_@PVAl8IT=9ZbQ4ohO-(@zuai(i*nR#{ z{vlF;zn1)wDG^^xtDafOdQS2z9 zQ9%rc@Pd%8f@%6(s_K2xJh; z&S%(iKEk6So}bwqyk{j{7|F@W=%S8Np)~~55I`Z6pn_^@6PQg+K}pIoj-JAbKJ)A- zqd8k6k;*a%WD{}<%HG@iiYTU(6d?(zp);~;kU<30)75!Hx)Hudx+tsrZ&SeGV9E7IM$OJOF35a)4kG|QQ!U?IUA__kEP@x>f{e&l{Cnq8iQ;`YC z&dO7>^OccOeU3-l6PJ~Itbzz8_f7BY0S@cR1q2X51ly*enf8P;Avqkv85Dhox-yP# zPxcgYwpT@4H+Dy|{*~c)_7HbZMLjt=5h>om3j41s%01EUt-AA*lgY4LO25H}dHO=) zuZ=;h`IP?v&x!p4!Hk;~t|!RVTXP_Y<;6xdImijci`&-8_bpxCEPt^No>1V4Zl7ZBK~Nv`>-cQhX#(pD=B z@5H1>o{0M(ZIMpwit+3yYLp&x?$>?hqaGv5C~KsCXvv4bXBMr zsL1otF#v!;1$=@CAcATWm{IKrWMMitPDMFAIT`m3*+MdpbylejU?i=dh(G*QI&A^1 zf$WcCik-<+`zn2cq&kH}x^?wbS|d`S{K}0({;5sV%Jd?22~)U7U6p2SDx-HzJy1P; ztb0gs1QomR_WpzZ$@Jb>_LjJGKEQ{tW<8EYITTS-*V+)sAfw;mL0GI&)Ol(5D-VTa zF~45E^OG65RL4Z}U_z|cf?w7Xp6k^qw3r6KGLBwQ$LpG8YcS zlj&j_;(VrI@WtOx0t<*qq1CUJ>YdrZr4?v;3iO{=boFAt8q5}0G1)5OgY8_qjiU;LcS*tiWN;Z z9Zd&S$3?_=i!olk5Hz~Lw`TtU%Ht>P1D?!PRxy=7(`kUQ*q^hn1R9St`(Ns~h8v8u zxvp(8+mqc^HEY!`EDdIs0p(&TVswYQTcbt#t|N}%6)@BZCHi$n{#HMP@Q1dm^)yR> zJN%a!!{TX=RNdN^Gl=4;Vd{|WRNZmVgvJ{mhh+=GIS*w@uMKFDRXjUG>J3#tx4o_0qGw1=bzLr~ur!(jsx^)$mQLkkuzz}f zDeVo`?@iOZ>>+WA7#<@0Wp7c&q4eO$(pDyhEW6Zj5N$TP!eFUaW)#P);^)bkD~#d> zAmYU^b#iFzu%e|$)X~c__cj;WM{)lER8!=|ebIBTx4?cqX}HN(|?IC=88?OrDB zSSR*wn}VIe>ek0`D$K*SA&hgc^IS)XXs^SX+W2aY)aNzbR}kR*LZy6H;kF|up#^l`vPie386vGav4>xR5F;7RV*bw z@9KS;M(NKyyLU}vZdRK&>Q=1|1Oe#i-7nkn||uI+?sSeoAQgUBZc*Y+VO{W?RL}h zSdZ~1>#HYGAWp-g#kPxe16i%xS4CHe)~Mn5PP<}l3Z4ePq;Sm*)>%=YZVKSjMureK z59$X${;vUHaa=~G1-Ov+w!{N*3WLdLsi=+ng(l9J?h|SNVhY6J3x7L1c2ui2T5}MY zh#H$}gRgY&kC* z-s$*?!ksZBs#rQ*-gh~G5DC>E&9tg?n!gdPal5_{s#T*_ttYg=a1H*TvGl1u*x01d z*!3Rq%;Vd_;hYl{iN{vPa^fn70Pp51j}xtht6Hncqb3`%l*XA((9qGkad|w+!LI;Z zb(DQ5rqkf08$ldILcHoxLq`@9J{CB-$}Haq#oT$ zqw0!emezA6v%Hmw#Ztv#c$FSjRGJQ+aq@+L;CMbIiotr7aejl#9Z=2uD*P{oGZ--@ zuC@YR?cC$pR>g4aEq065W~e>(UxeLl(()79>wrgYsOt47ohPzwUPp4gZWQL)?bO>m ze&~xhLHFV-!Hq5MRud2TbvwC0X4;G*5usT2MIT^W=Vb*!-45x$%$wai5m~h9f?VTZ zsooL37&3HUe)RD@}c zXHCPF1B{=$S7kufJXYnf)$>?K;i<9I8s;-hNSKX^gKmplk`?wsOc?p9Pm|cJE*-p- z+TB~MGf1~h&;zguq)0s76XQ#pGCC^1%WmoZm#DyPV5)|KSZ~>LbHpK2Ofq5r0HWd) zc<{lq15xzDXH!-n(_}F73BN_^25O`nX3{o7Ky?xGSVy&^(HyrHToZ?J>>eW%S0^2yn&WKyOdg ze@fwXYE@meu#J;Gc#`2bFnJ@~ch-3X)TOWx-!Dh!}{{Shk zAdwGl$^QTg$Jf8JSoIh=hW>qlVlgg;Hr>?~a!MI1= zxO;0q)o?loU{@G(aFpmY=?6gu$0GFYqyYr zYk-kGx0LQ+0425|0alwD$rrk)Ug69%?tCW)hw8ETM6OwLyje5|mX|2Dpb0_EgJn*o zoWb=>Gq^p}zfd5av%l)AIiv9GKX};_JfcG6agKk6bHkLh= zUiwtA4!d<7#?nx)g~d=57|HkyAIM}bDNhOk!xH}hP%+H_#`~&_rTCIMhW=z6Cr{M} z5ws&o`dznmBRw-&g5R8fx@vpfrLB^Qhu8lA>X}WTG(i3Yh3VJSI^<{BIg*LUAv>Vw zjBR$bu!OUf!a>(o`nVg-s`Zs zfFMoKbw>z4HK4Oj#KBD+EeWO29i(owGR8}{zR2O<>afe+&^!d}JuX_hwOFc+p~(-E z@RJ%qSb;>%S!^42D1)aF%6j%v$fr;`UAg|sfT~+n$5H9oP;<2FAan_lFRTMqD!=-o z;@7&XuS7u8ZFq5#l{%Ik{bn3#9^`75KpnG8N;P_a42NlAf z@S^(lW1mjKV|Dgt4NaU&6@-`5hZ5FmEhnnL{iVe-ig3;%ZBIkke=pHj!{LJ};vUdF zHnp}BAM&u+YI+}tdmGH>YIkeedMpkrjXI7U&J6snf9LrsRag$K{{VE>9YbPnf#i44 zttUw;at;I?m0!NY58*oh051xL9ikh4{{X|)h9|a6O-)TfH8nJ*CPHHW021N>k@#)9 z&-*4(q}DV*0wXXMvnV!iWv_?g{_5ar)1>V!^9r{R52p7$^$BsUt9d3>MsTb^An1M} z-i`Ne)Ae4HoYyuW#^{`NI)<~oKTbV9g!e&_*eU7|0&iu`5AD%u0mHBEsnZ&qB;Tx} zT21~_WZGfQHC*=-VHO?Jb^5QHn3%F@uc$TJ7!w}nFbKY>Dx)8+6U!Y22{%sk?%-o$ zp90}Jtxt=klY!+`H8A>;I)y@;H8s4!R&Fuvs!5vz*-#jN^*$S(P=whyRZtd!tnQp@)s5zJ8dev{{YMoLus3IDfF>8dS&whAK_u~w6!tZy;d3I z=skZ_&no&Izf9#v@aeM*^?Z-8smd~aT8(1_l3)bR8-QbDo!5Eu?5OuyMS{n(1ovT> zYCJiz!MO?a-%_@c9BJt#!X?MI$zW^ocj7SgD3^m3ou^2t{>lEV>Varz9}IR(II7QR z+{=o8tV~0CASD3rJpyTtrBTpl@|}|$(g>KlerfEQZSTzJ?w(yx)OhD`j@+x7TN+#6 zsVM05_i0b`%(@Rnq)h!&i+(MaD%32TQ*I?5RCny0*0iG6$?BZIE~%EVzW4nVHff0e z0F~+nx_MzW#g<$n8;`^BJX4;>VMj+;fMiPhIf&vku$YV)sY;=NR?YyP>x6I)7$5j_ zSUw-hK8qV$7R*);iPxkYEZuy85489f@U9}tZm!OHH5*{)`6~EE>8V50a2*VYRIB4^ zL@}bmEwZguxavfb(i^0mfeQpG(4@xHk-QK2Om;B5^6RD>^CPM*V_wgQFH)F2dj9|n z1lFen{6n|0GMy-=BAlHm$1;QQ2NL$#zYnrZCesiN%B6>;iL0(nCK6b<>-dW?6sow> z^)%LR<++P2Pu}U&elzgHehK`=aXuTuTKql;wbd&_%Xx@zb;U6pDvR+9hn-g}Qxcg;AT3teL7zDPP<9TjFc%xEy*hq|W0wDSSqbOQ<2K>V&kmr4|Hbf#3wcG1sx-*-bK^uvRly| zQP--gMWPSFsaK}hdwjJpmbX+vRd}ZY#bBva(E8Mf5A0XkmT?R|5AKz3j>N{u(d}{{U{TKkSY*>}7Y~^A3vxi^D`j>_%_>bvehh1Ue@j$_-DbZ8){dn!4Tfbg&}JGIjZY;8#Ya>PXfo#= zp;N5PL+e#*n^upeOMjI0`K%TP1xAbi029+bq_|$DorzR<-a8SgheS2>#fY)~{uL)# z%$sgk6g*O`BZs6gLXgu^dG+>$0Sy*R4(_VFZ=?;ECYZT}%cq<4+J0%&*g+%$E}4eL z(ZjN*s9x)`B!u93ekQcU1otok(Q$d`k9mZ{WY*Rll`R8hHAtR{r>g_1EqUs-H%C=h zK(&-q@UOnBD8J~8$!ObjTK-CtC!#LU(%x-XO{85H9c5^6czhm#9YUcIv6RZ-4RYng z11VIaji$!7zo}T&Zm+`|v~3Gh@i@x(>@{8)R+Bvd2Yv6<74{p8RHyfPbl%|Osvbs< zqTpXFKstE8b}>Cj|&rt`(0K(7gDBL z@96>)_;U-WwsbJaDusGY!&P>djio)+-RZEqkV#&nG;IjIrH=TU?g4g3sZ4C5c0}%S z2q;BcCnN0DRMkJ1Z0xnw@Qd8$G{gk@?X9h?{M7HX_f;_?34~+IsWy(1;OKOZ%(!du z9)ljoR;0ik&CC$M7P|w5pu<+M^{u8ydv#QGdRp|nwnuncSliuhdZw2RJ$F=%Co-IA zXDE*y5RJUwqIar6Cdt5lV&naSZ9XC~6i$~L&D?bqDbjD^xWvqx-8I^TeLIB8r^iL< zzQ?NW6P(EEs~UQTME1MSROdT;s;oMLR<2VH5!F-m3x`61t*fGR+@j_^qRNr{*X)|z zOsF}c$&VI*Tl=p??Yx!uoH%b-RVd?O+|F<8nTw_ai(JAFFVCS|NN~Om+%Ocd^ePbc z(z9D`Rf}&FZ>Le-uc!lKd05P57YzDiU3OABnK!!Pbn#xkCXc4ZUhco_oc3zL({)n% zvf>sWiC{2neQ!$_gl{cQhr3UOjKX0lFjI8Z-OadxYhQSwvf zpQKK|Re=1C=jgFm{v%qA2g7MQMJ6=I%&sK<6;7>5)Y$}^$OaY{561CW@m1Rlw)lhrY=hYLCr+F`Gso#8R?$>*2_%{zqc zT<<4D+z7w@m2lap;bD7jxruX~+$RuI zzNJuONe&6(rJPKvgz407s#3nBT=hw`nWXbaH1|TYhp1iIbMlA_WGehc1q8H6SB)2pSwbzY@f zG%Hj!DZaoy<*OIN@wD(bO)M1J((7+3qj3~nh-rsANe26>6zVe-NuiTezXG>A=z| z-0SNe6Pc%x&X)mho=`4=3gsXPPN-l!i`>WTwLCOCW6k9@thLNB8ccNsQ}oD!Wunr9 zYhsxFbm`Ee>N>P?$5AM|15ULXt$jDnhY7oS3-#`wE}q*V)EQn+T$uKorw5ig>YG`h z-Dn~TZkQ_Ey{xt-5cM>LLY+~os8kEN59USMiE#LODr}}nDW&XbvqGTe+U9o%blE=A z=(=bvi%#gYX+Nr|M9h-aU5$}jPL}Mc;;7SMEqIwNa9F%+spD|0H9rh9Lr%*b!>|?3 zFYupO{u>EgLy3Kt#o)2Urn{f2kel+E3Z4%P)?5-`50`bTiDB3oCC&k0pU3G`cgFlX z3rGDuP{NveAIx2=NbtYJI4%|S2oAeU_vop%thcA=y()sEb~~vV0u^c)%9OsN0^rYu+BYPsZ*}d=jk)Ib&AL1HC6$-UJD=CP1mE( zPLO-u4gUb*y(UHyg)-w*8k29C`K&e;o~o4^#*ze{?yylXw2r;hi-U8}_D=M{VLF?B zm+^J!`f+zW-uobHN2GN|<7+1CYXtl*J(FrN)JbS#j)STQcZErqX0e}!%58?Q2!&RE zG5MpdJ5rX~EQ4lxpz;W@Pt+#ro4z9mh|*KwYzlD#1lb*7%@=Oz?>dN03@+2UYw0-Z z+hC=-G^3=B#Zzq_XM9NdTYud(#5A>5YrY+m`48-!9SBZg{5g)wttSiZ2Kto$&ePoLBp-gavS>jlJkrXv8>Jeq9y{{SoE#uptNQxN<~Ev2dAn`T3V z@}Cf$f~$nXRuwA05mC)+*vmJsGHC#5SAbC#08i|yX?f@hBul5q)lwR{Mxq7w*)Ts; z&dwvxbRdnYZy)ljMJN9NSepX@Q-WsQ&~(jBp#m1MAgS}61kDRmA|)}cmq}3T z1y$nGoWU|xNJ8J&r@z%Yvx$o5+JhH5N^1)Jpyj|dcfP~MRd z*))dEsUrPRmc5#bWA(ZP<582cjcs*6;4d4MOl#P*T6-Y&$TAJ}NA9)kWPH#kWvi~p z>Yj;*msQkG=x+yf*DxC>ZQvEI<#I%ILiW008x&d*1Q4T8*z{5~yK!}Ys?jhR9lFtGpdNMXu+Yt*)@aiviA;44FaLjcVRKq=`yB_G` zIQ?E7_jqGNwA2PnvwcISg!VK*)=9ra8X(C)jn70kO>3mwcTneVwYgM0bJ%w1v}%Jd z1L-Os+?n}&ti4v5)+F^2`ykU%y>#AtCjoZ-6{Q2RGGLKwDKqLp36kMe{S_F9kg40J zgwoxZ^8`6j%MXeq(Y2I}Yvjh(uz8L%SZ7QCWdz~=o_h^E_=Tn4Zu zekeU53o0$8C%UBp+kf+L%uRp`_`*Q@EZjQl|wy!@B1Ksk;0 zd9J3DUHu_`A^H0>*QHQ?VIQZodm}0AiXssS;Tl{bhjQ8dasBuZP1NnD=mOi?Hz##d)_d6`kUDb2^eL0b*O$5a#m<=)zhU8eY;6G?RV`j}- z$S4CT&t{#IjnM~nT8qp+;^8^^=$76_nDT{QA54R?EyPcSEg9;-YW_z9k<9006r7ve zBMHx{*7tA-Q^HbjX6H2;)#;N0bcMsP_?FXkGf;?|d?~oP^bIDoQ+0^{0CkA_(+H>q zAkrMq>Q8e6oWjYG2XzPk0L60|Dei8NOMIu6v>Q5AO_=7F2AjBbMUAFjbj^cWs#7h} zTw37iGja4q?lS5AkamuxJ;B0Z#ri?&M}$Q-wa)0RZ>n+plm5xU!hcnwppgl$>0lKz zOb~bP(4%jLS1snr(j%!=U94$_j;pr)SLF*C%^4o!o~6Uh)cN-e79mVpVC9Xmp6 zgRLGyqQ?meRCG)Y8k(vW#H!kZb*h?RkqQn@jgiXxro0~LHxkWGfOlAW*qUXQyj#CT z=wJZVs!Xj1ZnjfNx%!w4Lw}&D3d#{z&d9kvJ-ty1RIgKrVZ?rLqMLqMhhrf<^P2x)n^?2;7>3FK`Qc3zAiho4t6PPlI)5@6^|qAExx?t5=Cekocw3?#o$0?}-BqXv z1SS$WuAS*rd7UC)B3RQF?1qq2bQnRc1!!!=&CmouB2&Ph*%vxoAOM4(0G&Ql8tDgq z$guK~g+{oEl~Jx7s;IW@?5R|{njkDN_+$jvJO?%>Wl5#2ZP0V?ve5)=Q71PVSJ_`> zD(SSII@vhX2kT{CohQ101<`5l6<5+Cplp$_GQScd;WD*Q2g%M@;oL1Gj>LpLfR< zE(ckg_*i;ainW@@YpJ9->bEA=Ddww7T>t|3;X*quKwD7f9yofFwos6HriEI-XF@kxtc=zu0%6Lf~j7D3Jv z+5l9UsA*bQVm^!0Xe3PR6-LyTHYH2V*9^zt{0wGx2>Y8Y{3A4SLaaG6lpJ>bk07D?5f8s6qXJUb;SoW1to)Z-I#Xq3ygMZ!*O08 zOBX@^0Ebgnkml(&G1UXgJM5{!FK`3TlmkwlQR(S`ECL<=eO9MbaBI669Rh7p_aL7s-et&kQ!AGc7feVJhSBXTey_h z)F3onYOA0fKlV&vBjP>N-q?N4XTC!)=KL$hLS(`WYkfO^bn4`nNRGcXg27R1T=3HJ zKB_I{55yg#GDX6UAzXh}cJ_hnC@IJP0P)Y1tu*n2=BQJwUiQ3-q8%UIQL9kv8i4p+ zwU-QjEa6yT(WD;n(Q({g7{p=gVMAyz9WN7T{{WN=A;1+;wJC~hq#32dYxn_Ff&mlL zz)jLY8=Im-ghXzOAEk|9nbmlYDx0102RKYRV|~F*3~2|H0s*>f83STxCEjBZorIx5Y5w}o5c zlc+33PEck7d&p~qLTeg%f@Y~|0if7fGNu0jGUh(vs_U4OY|5vx3XY$N54_PE%Yqc> za{;SFZ@L)zxEl2_HL14_`>}^esTUgjN_(E^u`L!yRb%9TZ)g4`U+4S~t?d5*Jb&rV z#Y1s+-Fo!Etp5N=QhxhSWl`^8Wl;dM_#trmRet?mrkZqI>Y4}rx-J{UX*l6(OF`0G z5d~^{{VE|E_FvVUfypKwCWCmX5S^Lp+{e$E_JOPP;7KvKzNUlnO{`!G^gWZH zPW@1;N*c&;De&O`0Q)B}hf|xU192YftxW**>yh3qk#AX)=R9@^)$#N-4p~&aG8`NP zj-A#EQ?OuSTQJjFnB}JapH#{Zr%O>fX*5aP{M76Af8urie#VqC3FxEjjBxp9WFop{ zYEdHNmPb{M6tNT@3rs-2RZ+BYbg@q&g?%kxalQ9g9tFdyI-NSTKM*y>CCBoFT}`LB z>bPb*ir}%eK{fDmqnmAg)iTEqQVU!r5A41vRUXQ2anq->y7oR5H&J2NA@1!GfMeUI zY3tE?UZAGkAXp#xPGE1S{cakd>@KO*s6imyBI=K@ZTj{=jZ0W5ty=;|h0Sl7QQmL* zAl_!(#7I@W7J7|`9mkcZl0GMNp2`~&a|x=)Pb0 zjwAl8quvw@?!V77<(-$}RSOYKl^AJRhm@vcu$60ik)v`-;n=1f6@KvQQObwiM7Afo zsLF107-|uHJ13TsEo9o*QBM>bRqYLX!&*hf#1Eo696<93F^!kTr%n6zO)f5g9BfQ{ zLTnTcZ7qj>sOTZYfFuGus4YEEHUaD5G?0OH zk#??aA|gAkQZMz{RSX(HusSkOe&s;t}NMrtNdnk^$QPOvLjGW4}w2M>CZ`f zl{CORPUz~6=)SEv5*=cyVZ9cx8v{Ky+EYzqN7rZGTSULmoyYThmlSibXAIV!aq10G z9(=FrCV9R~<37z;%t8ME`w#F3x-qoAYS|em`lrZ1uIm`>2f0nuHUO08H*jDe;NfoP$UwQwFd}UWONHl}8_T!VFbZD_T>C-lcd{%1 zIwiyl_4z7N3~SzJs$pQ#NdU$ADx+9GB~(la=!;wobyPhgt5FkR6T@U4Q+ZSYmf2Dw z;C#{0(Rkb=3}_&aDy=hdZSyr6;tj_|R58XB6-}gm>XCa+o>|=uPIGog6;KjBN`?ah z%I-AS#zv<&=z-Sj3^)cS)WubyNRancrsrz{X5D^@hYc;=qn zm)dMM8p70P7^#fcSTd~06E_-6{>q~P*Hc-&(G-u*IB7kC)c2n5IbS1`I!MMII0zTlpe-d%Hn_Fn9VeF)M5NN8_M-?_%~w+Wns`5y3*E;h=SM>*ILL30Df5c zCOWHQ;=HXT%xE_M0DG-LwwN29=(dA&u)6R-?7s+0U1KoYBO#;^N;Ppfj6F&&rfIrZ z{lmxnpvq@OGX%#d-2VXGa?l!Gs`LK&rVY~kT-F!vOF#g^U zdt51jq#3^In;3r&npTt3N_NGf%L$>?97}8=qsnM#sNx~Vm&&MpLK!+l!lzxpOnG-e zy(+`gGCQYgEiAb1nO2#8bk%m#>C%b8NHe15Ncb#lw2J$HK>kRr|x9>3*iWuueFt%xxVHYjpxmozXX2K_^igf3jh8 z$?g%{{d(@49pj>r`lmqw+Iy;E94tf#K2zJPN%&p!nOa^T3(WrjHl)v2Nvv)FYa+{D zrWSIWT{V!}U^v)G?7k~a>{TW|(tCNMVb)b$M%^cLbsKN8d9ye!X@LUWi+I+TopidYM$xS5h>56Mz|wjjqh{0Ualx> zvIp+eXlZw(HB|%{EIp#yrB>tI0kmm)*jF0HMQ0YgfP1xLX#JVtydsV=uBz1=hpmYG z+5j$bzkvz3N<+}b`tKDTs+k&2o{{BZ@b&SJh@)1Rw~^KpSp7r+rJuP`NxA6Z?;p%S z_D{4RydtlV3tk1jEu65YIgkuW!s9B2J>%6ZjZmA0t4@tGtJC(cv_54*?2pHZ5F3t;S38Z6QP+?fM%sgO1umWR4clM7xVLEoxxt?Fwg z1U0j1?xLgV=ykqP^Hi&S-07cA;QY|0G+#v9%I0}%%b|s$d#Y_Mcce#Jgx)+ZQvD=M zTd_dFA6EHJ54(4{>=XhFcSO%v20|KvA~(1Ds-pV&Ej{nqKUFatwD+5reN$WbhG0vG zpZ@?^RP-4%<;PQizTG8Ne!A5|J~A2_4Va!@)@~l_+hp3+wN#?lIidr*LiIi|X3Wi$ z2sUUk4DBef&JcVmyXmxUgr_z@Dz>A2m0FH*1LmT!6R_&FweNvs+Kgat#VO!jzco-Z zP#fA6AxxJI`XFB*K(cYJ!KFB1uGlfSi9w8T^bHZM{Dvd|Y;FA8t|wO=R<09{I-A($ z>B6!brM^#BE;Yw~#$oCgvX(cSMMpM7i)xP{aeOu_6@E7O3>LXIDxFS|wxv^NT0l!O~4&Gl8?mb{IO{XuOw+d_C_WN zb8a2}$a(?}uAp~S$u1RIH4tt#9h9;ixg-)gbz6tiv=Rxulj$|Z?$@wCRZ@*N9W&US z?yFl?(cg4_vE36QH&3SEv{Y~{v0TnQ_EN_-FWnkZ;^28+s~SVOkHozOo5}%&^D?@h z{{YnNULmXkZ+{+DUKhgZS7r*XHQazurW-f1uHUpLiN3qP(=BZyXw?=ZZ{dBG7`$H< zu3t)=8nv1nTGQPOJyuh}aK?SvoULxIXkTYIpAD^wr-c=mUrp8Nz}6l8W5S@?RKqBW zO^=1P2s*n*Z)dB-s(($gFpsqR3Me3jJaatRSy@W>m0(y|8{T^^D}v*`r8>@KD;5?M zIIjbtR;m0@E~(RDdz}peNn9_AHl=JXA(gbaw77m>3Y{AGmp;8pzN@u>>xytcD#BwZ zI;{r>QIa)Ybu__L-2UbfU?6M<=$z@d)iy`wJ0jyGMXb5V503u;G{+8CZ*7yQ0Kjh& zJOHZd()NJIZf9f!w@`4n1FEa|T*E+YI@kTwziE@-vU7|yZ_z^=09&Z&gK3*;-a)<7 zO9My9&r#V?p{}E`Is;l~Q4wycM}yQAt3#N12GDtXA*Mup{IA5RB6^>gT3AUon21kl zo?QU*9;vkfeJixM!-mCCr$(!et9bnrNMr~-0Z`)(-5beFJdP9PInOch^fHY~qnFGq zD@c!v^9ez}3EyPmWSEes=?!NzZWU^dfXScAso{Wo>BQ~d^z5j%lb+{MZ8~~|R|Gq<~^<*3Kg)- zbo9F9hoJ9u0x2FmpCxPM3& z%eiB2M7#AL_IcKWj^|)(s7%x%G#Z?DgA^gXCtz9kU zK1mj`1=rtk@>r3IY!>=ur&RAfAq@oD1Gi2UoC9nIp=2G_NG4*+l}MKAfwCW!uv+%F zz*I}#7~96i!Bb^3rge7Sd4=~{Iw&!p z5G?2un+HwZVm@j7#q4N>1|za#*iQFUTT&nNQ9wP0@|?<2=YA=7MMc53I=Zh-taD+| zE=QH>w^V!}%BJT!8xW{IrnftkT)Svk4i!LFuIhAX#-CBgxwY2;;kY{O!_^F<#A<2| zX_<4n^h@j;T+na1?h?FvgMxn`dB>^dWJH;xFDk-rz<0r(KN~UbC#-u;Z-nr zePx=p7*9BWIzq)^aV(dgOpzd_I)h&42qHmTv-&K3Ts3NZQ_yVHa9|&qodJ|-gGsts zhtUCzu?Oa{*vw8fm2gg=+Aq^d+N4w;%%@XbP5}Jf(|6dkY!liYJjb_{O}q6nM)yuX z2>6VAmX^1xhs1lQY19Nx^M8?2-A;q3^hLExIN`-XB^- zZ@euQE{j8FWDBNu{^`us4<*`0=lA)i9c^_oIipeh!Z%e~YFIX#S^yDo3k>>F#yai) z0H)4P<&TF=$5MueTVdDA1@h*`kf}M&*G_4+2)|wC>Z_`-huE0WzWZH40F6W)(v00n z@Uq#TW&PtJm!peen;R4hLC>gIn!GZl>HFYdRe+|OLTNSp2QTB;GK zANg2n&pKcj=RMYkH}eSkO66vckxVWv^S5RAl?js;XmI|>*};%?L6C(864@ohm@X#e zR{OK+xHnl70LYHXj-n03fh{|&I$7!$JD5y<>Es&%3|p~Sc=Q9CtgyRBSnh=uJCbz~ zc`&Karunh8;>w@Jw8zy_cPTKbHMJz|Y>b3VTuces%AxD&J>;xM z72wRJPZlU?cp%20=8)~79J!~jxEpV||&%R9!ETQ>=!|=*b*0y`B zTPjY!(NW?AvA_o|A?V?#QF&_}I`s8eniWM_FLfuh&bF85V5rl+og=wUfJ45pzo>-Ht`q+N2$=!n zb6@P4uw)}7r2RR4KP1s z+r^JT@?NzVV{Uiws<%#|VygZ@DfG!}tW!w%p+CB+@w}~g-fdC`?wZ$gY7ip(cU%kY zT`X1(n>jG|^#!!Lf4ci6!Eto7)_yXjGxBRlSbj0XeGDEo^qx!_dp4jw3j0s#X#W6B zrbW%0DxVDDv}iQWk#pRmQmyt122i!sZ2)$;%!B*@f(mj7ATso^I!UvTBQQZm3VZm? zQ5G92jd2OwH;7ZI(`OHw$8pXA{SBJul8APLVD5oFl}>Wz#lxHa=za6k(C0MTcWP-i1;Drvna!k*U)ed%Yo~CjvD*kc z{Z$4)+fnJ&3Uq_1w_LbD8z#wfz-zv14@#JO-7O?(fj<|?F~G}pNWc6le|O|?E%-K& zG}%(uQIC0Zh?5k-={Q)K2HDTnb0GTxom3}Be| zn4amh-^2J00x4GFPyYZhRkk9RU)4~-VetnGk9As%smV&94VHZSs?=Ypt#-bxSZDCe z4!ktEw3y*iQ@i|@kTSY$3_IRV!5WWq&h987?Fb;7k(Fd20o4LfLKW0F8QWysP8qkp zdYZ0NTZH@L0oFb!UwNqC#DnD=EmnyJM955c+4k0|Ie;xL?gINSjm0_t0Cl8Z*BCw5 z6TtCGw5Z_O_i8TE?(2iM9PTQ{el{YQl6w^2P6M0QWGPj7feLBUAVJwx)&XkLXRVXp<-S5~5`7tI-%mwL1lIcX4w2uf zSZrM&_En}TRHhBOrnQIEJiiEweu=tyK)-bI(V`k+0gaI)&qHVll?adyp1(C*AN1Ja zs0M-2y~=59!Jf;I#{Cqy(`(|Ro6!%uRd$kLv8Vmh#YX_NvTmvy61r=YMkcMlGJRQv z=<05sWO+<#ztLB2F~zQiY1v|5!38!qoY|xGZvV5ab(WdUog=rGy85^^~oY;{tsohZ%I zf_9ygb8PPlL(Mu(CI0{#v5K-Mm_+>(82DwIHwt$KX2mw699?)%^n`&kZwc?Berlj> z=y8wisXq?aOYd+K16!Y7*^E_Xp4RJ3W?bLte!ogbpF_nNJZ+h|()a<Lh_thqi`7XgQDDou~~`Ji3>(2U!I!npop@Py~Q zxz{A$I72g$M=2--BH0;Gj#7_Q9BpOmQ54>J+hdi~f`~E}@Dr*%t#rogi?fPXruwgI zLFE(CV(@tCczU%9sZ?}dqT_V%BknGZPTjl0gc#br^Z0{nN{gd?GG-qv|!S1huHusNmtHP_0z=j#&QclW9}k%`zer8u0pONr)h< zRRRSX409L`tKaB@Ln>&~YlXY72liUoQM1y*RvM<7R2t?~r&N;CKUi4IJ~F1duc_*r ze3xGR5H7MCOsO%`s>9KsDN|t3%W3eXfD0#vmXFm`m;Fd96RV$;{{V8Tz0bLAtfr8X z2TQJY7`$!rPOjNtj^Pkr9};n>U8tB<>(!5lue;JLdv`3-0Z=jsWFBYw_;dd3=%_YTE8#HM%uN>qv(_%J5~ufiWVE~y z9RjPvICVWVwbZao;`ln6>3UTuoh}IJnV!kc4T(mMtxAX8^)vA_^c~d)HPt3dx)jz5 zQ%>ac?6xh0$AO{j)X~h@xK(NbboIBD2Y8WnMkDg7ED-@=3&|{4F#TFD-B4@Gp)sLV zV-B~1={pXJ?LD#=B@$Z(A>BHJ*3)!0NLAc9U%8Ug&?ZezrX@9kPQ;ZpUe-R-Fqu`c z*)fdP4&orH^y<7*mWf#U)kdJPy8 z$^xJA^xgjeQochXoQ&_BA7z#H&H@BoH==}7lvw2K9wbwHzYWLqDYdDG1DJTasYS$% zl?+`cQ>wsPdM+3CYXB-z!UE!8A;s}Nm1=AadAD#^3*p$GxPS^t>R?#&q(cj7e>~@mj)>SG@k4yjp zFMuou?w)ExS^x*)ROqr3>Qo9hKxQ!1OBi|FwG!fFl?wSzQVKa6qX^|>P({e?lqVv0 z8ENReEwXb9aP^)407*@IWMwEhrpVKDwPARs4AH7CHYvDFV=*SIGM&sW5s2bJjAo(? z2Ni>F6QPL3*9@rFND`~n;_bqWD~%%G^%fbG#WD$!u=NXBJf)y4HW`hDTNd!v($%M8 zwLeWpLZb1@VpVElM(Z6wML}f8#Hw2G<<%-QdZIM-`S?`0FBrkm{{RnlZ(7>h(NM2| zbsD&q(HMqlX`L>U*?)v^#^FBkQnrcbd6RWd1&`twfcnokk{nv&EgdYMh~gNoA4?Bb zk)pNvpdGVSI!)5mTM<&|Q*KbK zsbJ_6Jlz6)dakJRa)xekM%Gq9Ad0>~C_+>sw5x5AMoB0!Kby~=wS={6I zLCpka92Cu$Bk3KSAw8JiR+V^Wxm5U;F`|`zdO!m!1%$6oi}6g<#_2v*8ooZ8-vu`d zQ&yf{ioP-NuuY^S!G*yq@kik);uvu>#Fhp2v7c)xVX0sN!TxHBopxz51gbSTdnPf` z!a}OXfNu)}QSEhBw7h&WxPKXb4fu(g4-ae@*>In;&!JARd)(n>uyh?(4~t+a;wU)2 zol#@iVK{v{l`BtR^XsICl!bRrKAb@{zo#a+*$`)ffTBeD_gO?f62WB=<+Wx3Xhu z+=~c=HQfCawqLhp0vexD@>5tg&P=K}Iu3K3s^c*(dyTpTP*SHL)d-xfhjb%8%2#D4 zWIALJL`pJ=MBJb{DMTmJczaAZ9n)(?8m1}_-8H}vbC83ig;Plijt#G>DHk}K!s68N zPsGw`G@s4os~&LF=(lzOaIskY4S&7ew8tqc0{VwRkk>+_`dop1o#43I{7KDYD^&R2 zRv2PG%26(ky8^hcseCgu_Lal|T4ZdPNEVa@rVx9%LSrG{5l3Nk=Q~rAS_QqBYz+rJ?*bJ}ePZJ1XXOdK(C&s! zDWD*(yDM*;1t_VN&7HSFc19MUjG!EakRd@LS%e37Jn0E?74~4|*;%YMxOR16Ykg!xSq*J6AW209Xr%w*b6<OrMXY$$;w@ zbF9#@FXJN}Ul8~MmY+n%jiFSmVWP-36!9$|s;QY9BR(*C$AE z>(r_^N^;`~mGJI$Iy#mV#ik=pO0RwH$>FzMVt3A^6#toEa8`V+4vCV1J z{()k#)s0H7lhAff0Ivw5iAAA3Jd{)noKuKJKu0EktfFq56Q^}_Qxt^>vbls64Nh=R zJ0j(zpqi@Sste0IEG{mXA?O^!Yq}udbl9w2IR&yirZkhNr)j%q%B_fN%O?8*xR85& zVj9w^@Gc!RX&R4k-^${2_#QJCh^X&T;m&C67BaPG;c;&D8B$=BFu2Dzp}0+TB0(}1 zCXP0=83DU2U0x?q^?nnvRfRwVtVSD%(x^3S4qQtaf(>h(am)hZ)m-Xrrb@?f{SAAa z{nadOdT+0)Y5Xd#H)jygs8hnRg}Vgpsndm7-x6gz!UNe#lO@iGKyJZ!1BlFJrzD7gr!aGip?Jq;`n;7;MX_0qr-6Z-K$gTT=-l@wK}yJ!tV=?S9t#b zF5x{_-JZ(zsu#R|Q_)ak58<@R!@jc~9ilo8s+2~FPHRLq6WzH~+tD$-5E+!vH(Wo5 zQ#$Gi=sK0ec%4HBMK9&MM6)4qtFiQ6Krml44{4Mp_-0F=uDlYu0i;3k$-wTLX z+FuPqxTjl%i*D>#w|+&64ZBrmwlpfOFc`5At31NeNodT985P{JF!%13po#SdnT%9qNELiXJt>a zWbB%n5cdJOSR5-!bwH}SQ*iD70OVFL6;!&b+~S=ZC{78<$g5;k&`k&qh}jrb5tK5Y zXq4id4#+7PL9&zxx*AhNtCa0XkqRQnPFu9e@)jE#W;#_O~0vCDjiiGTzr%WS3@W& z3J{?Zj3eC)#Gr{zUC=|mMC8zdm1{2uvFnu*j-`CGg&@K;5OETNdSz>_RUr^^DY0}A zDgwH?sMkweTk>2+j74Jan#447xAa&yKyihFs4Y+|Gru@gPv;4r%$waex^Hye>Ywuk zKz?wrY~G+;HkbaZQ!nW-mBlN3E({;4#Ml1-QmdWwKEQ!iQhvf}Oh%|AuPNAfN(@8n!v{{Wq%=(w5QvHC1?rfa|TPj>I0nM1x#QiAi8uPV#R zJ(28!vV)OVU6YfOvI;sQlpqj8vT;|0Wpsq+9g!zx17)NlRFp{B1P;lqT{9>J3UVl* z6sJZ&C`HQ1c0;1NYHT4W>OlxVrpD?r2tx9KLo<}CrsXO!n6ehKwm}3FR77QD)q5`J zLcFItV75`wFcDbxkR|LTqi(K+5UL$RdbW%GpYUag7UngMnsf!q7ZjP(Yg)UJUIxu38fr>8)oMyjG&^5FpOmBN2;(+(utI19?8KK zb!0MjK?vPne2287-4x_e$omO7PT595O_MNIz)E1tI1lYO?N+m*ts3wF7 z$}HBDA7HlqCj@kylcrDLbZ=GL#jzKp>i%*$&Fc zcgoombXP@`37ybl&NxCj|83oT?xdkOM8#S`$^(ikzh7 zbPJG824!rdWJ>N+Q3ex=Cw1WxG5{cYAeev($U+$i$Q+z<@QFvVcV$sOvVD_+a&jny z4@A+^Gdm}LDtv6J1yXiZimc@FjC&z4gd)oDw?-iWB?+>Sk3@dCbwsFA#L+Ue)F` zJFh7BR!wP53Q8qPEeYt&*JKPPfDku9NKGk&q5*0}#WjdZ8lg8$lmy^Zp_m91NmoJ> z5NeQ$5TP{z(ODN1;-e-)Y@oX!I%erkPfj^XgR+lcUQ{4goTWm9LcNqqGP#uBF3J_R zQmrc1OzN0mWjh2`mqNM+q7h_wQZpl}YAMc$MmJDXLJ)^_ebC4ie1=eoa&?o6Gjw4| z-9SUOKx7D7N{1%*$U!L-_)7cKnPzn)*QIrZD5mr*Jnulc8rl6ZBCfu(m>P8W0PMy^5 zRHF)dpi?1Jlogbw_DqD-2e4TL&dIT4=|rbObRl#c-H>X!y41N)jgi(00`i(n1i;AZ zxzKCEZi^!25h<-=n&X1G+uemE{iUz0mKG%gT(kbXt=_3D9hzOoU{oCnG3zDS#$vf{1CArO3pp zj&M&P6%_7)DC*kC!YHd>D=8?&)TbPx5l)2V4$P{BYDNlj@VS(s2qr@DkvZ82gfgDF zxGIvJD59L46M~*a!q62t%sAPSlB9vnj4aP(sPN6H^Mh(!8cd>42bt3BdSM)i-%f zKs2V5M^x_UgStJ@AvmW>B%)&}P>4?k$;T-}DM2~*h0G^p(9nU>hOuiYXdw*($$_N{ zgcLO}1avE_ry`+9S1X^whaiSlP^_GcZh{?@lVvBe8bV_>Koklp9TJ33bn+$LV*KB|rpcbd7LKlSTPfiU$K1v#Z389NqP0{r?M_ScoWeP%S zJrpiv0%BrnXLQi1rXk%m1QQcaRdf}R2&W^HG}!_?qp1mm)JuxACXp&vE?bqQ)>R|` zodQZ47b+tl3XX{MK}xzalmu-(5t&4U^je?UOSesg0vn=2dy#5!C?`ax1no-5N(e$B z5(<2$c0_c`$^)thClx57iBgIwqpBU#PgD>=1Yt{!vUa&naFjxZlp#YE9p%CD&dNXhfdK7=`$13?Y%!Q6*mKpbH_{SvFAx30j6%Km^T6p;=10dUs@2r8#qK zfg30Yf{HM#h(#3W3U^H*1R8+I>Qj+NvM4}645jITr~oXXLUGwVwn; z^Cc4SQPdPLLbBvt)t53TXe~jmKszSF9gxz5pi>6vsi-K(^eNMHa=t(&gw)tn`zFT7 z8CTg9vjuPXlD+_)kZ+TGK;QwMylZnp2#Dfn-Qc({(BCA`_t> zO*zd_#CoRbOdS`6sN5h%%TGmXrj!C3p(qt)x)PYTzE_lcqDm;DdMAW>jG!n%1TzZC z$o5B4e5VeH-IJ58WKjw5oQ$GW$^hqWvTtP2se!tr#!Lt% zAQKZ)6BBc?@{VBzD5n(V83@@9$ac%dQPC9nMOg&Y#1l|gKpenU2%-^$qKYLoH8duGnwWwe zknDmPcv77xuPEl!3T&Z}AxgSEkxsI7=3``Xx(Ec>LQ`y-f`+L^%3CXy9a(Y(&c6*C zt1FZ=pqu4WwUr~$QymjKCZ?wLP3(dLFs@LAZ(z(o&dBE;&5_isr34kSy4eWI`CVHh z0T@R483?cc!~i7_0RRI50RRF600IL60RR910RRypF+ovb5OIN#p|Qcy;UNFo00;pA z00BP`ehFIap~g|`H*#N>KjMjC-1%6(_EGCl>$1hCVg|8ZFvn$n%jzsU@zk)*=Tfauv*3n1>6|IHMpnD zf18(!0YKcKZN>3n?6x}H%VYi#Cp#MX5X7S8aXx24B6&i42m;~OO3)Ru(_q)JE7)C1 z%)1;#BATQRY>D$O0DlvGhu~F7@T5~L)N(x7vXq2f?AkyYL1Zdh><_zzw`RdfpC&{_ z{u7?D0K1mA6Y352AsibMcH#{-5L_7fvt5A3QS&Hega`&uoW|_dQ2L97gPXF_4dfq? zm6EO^e9zhs&frp2t%7>6Xq2MzE9|LK+n3U%AAN%Po-Mg!s6kMM_al`CwR7*481=UY zn#4s~M6D&YY_|*&ebBh}Qc}Wr1j16Vmrrgwt{(ldU&wJZSj+tV)TO1*m>5m|BAVRT zo1KT>1VNh#N&x{xs3pap6+XyIbttGTlrf0*9;TC5Vyj_Ua=#!%aSb8RioJnEz3g^G zfYp%7rb$)5f(Z%z!q|{lWoEW;#Fbs^8_92DwIwM~se(j#{f}B)tgxs-)3LitKF`>S zFhmfjR62rBQn;sv5KW7{CJQs$ZTOU~J_XH4$rW% zG#Nq2Vp4vh73`^iJ2AOq$oVKtsK77qpJjIg<`E#|qP8lPxp!F)+$j7P_CGL_+p6hvI6orT9o8HdH4jtfP8{k?NLavv@e(ODS)WM?&UEw z)MhktJZu&53*}BQz(%r&pqRxEE)T*j$M-v4L^rrE?lwv>=7=>C<=o;lt3W16shG!IU0mtaNfZA z2!Mf{gsq4wPz<;iHF0B$eTZ0f#sraxOeIGAEuR(vISb+tav#JJxjqsN83}^pLP9Pj z@)P8sl^D|H&`skke8X);zRdKBIplg|pyUJ-GtulIE){*s9>l(&*fgl3;GIS`D|WH$ zP$dEU5l|!w;B?$@)?ci$6oxVoTvnJmfJBgKwq9B66im`^sSyJOnH**bLJX;HL$WaY zg7k%*pM3jejmKSB1};_%YW_rBgw|^VIxe zCrC-``0Pq#<91yt;&7;?$i^|S$L;(P(-K%ECkcJzTSOgH9Vz52Gj>5(oXAti655EZ zCXQ6DN5O2VfNKkeE{?-)L7+p}D>4N+7vwVNVm7-FbeR4#d`Iw?j_$vZny)HW^Y9E< z>{gnIu12Oy1Mwo3MXz8j>`6O22p@yO$+d(bVM4L8$+DDZU_Io}hI8U9$2DPddn4Zo zRmUBAb_Y8f|^Q%rmj#*#Q7de=z{=&zu8I)=^W~7wGtx! z{xY%v3P?PZuvvK-nhvf_WNh2Zv}0m*&j+_Ey~k&k;729}LEA3MoF*!w3`#mk6Hi5J*WgdvE- zyk~G;${qwk;Souv@PBwLK|P9aiyrw44#4$^;~V9Pn;ND)l^vbeD?VfxNkqJhtU};z zN~;|fxHWS$N|@vyjIitkgrh`Zq_q?9O!!ZM2IrbL@+J89s-TrCA!4Ye>I&%s%Yf4W zat*)oj-P&+Kyt|F)zpcWU}+Z2AYYXe;V6l?L|FNT)d%Aku%NJTfsC7yxnbDZENqQ_ z1Dd8t5bS@MX%tE@*zp43{F0>mqK?Y9a0M&+O@k?EOMwc=0QLc1eZ%vRT^M6a4aPV9 zL|5UL7)|Vb!s?7evtkxi3VS!%pj;{wWPz)(*cXFv8JGjI6*fW~8RMu$X}hx=V&7#B zlDeW)WAn;lZc&4#HF1SVqyX6gp9?lw7PN!PiOh^)W~Igl;Bg@)PE2_ckD1ruDnx5y zt0L14biqUic?dTUi)e+-i0l%KglYoB$~mxWQO2O5*JJ#~FK%GpBHzMU(-C!J(FmQF z9hrLoVkhp)uVSk#g5%qOCQEHW48WJyvX&g|x_+PuhT-`O*-GrL&6eGRdP2TC6eACK z%Z9`7C39mk3#@{o7qeZK7>}7mRzRrd@$^4{0f#-8J%t^X>2N3qWwfjstBJ~?&-gb{q3GY+rF$qP7R5R_ZcXF=>P@w-$!OFJ-L{lU7~Bq$A8e z1_`c0i2JA{P;9@re>s6Efz(eHTP0q@x{MVFVQjTFG3gR2?#ryyCdY9R%jkJ1Kg<03$)D}8~vWk_QVdz48F@SjkK)j)mn4vS@P_<%&J z?p*dHhc4j)Za|))_n7>__(C;O%7gqTct0$9$ej?k$pSJ0Rm#!zFNb68sno$cUxWqE z#Y_qjG4?lmD$tnOC@{F7T}uFwKyJU;k#BN4)*reK$(v(99>+NTESgkQNd@Wt!45>c zkJ29}CL{O`Db+Cn2YF{P31gshYxNd0CH z!U%R()*56){K5^I*v**^Y3u zhs5s_`R4QP!2;!{KM*0AJ0@wm5GTmQGRuha9yTiyAKuUGv&I{M{J?t^_xlxHHd)GN z!ea`k$0B71CZ40?){!eMn?RcyX7$w>vb69hR>C4DMXf>#O<*1}N0fgK~^4C}#Su&ju@jBXkD>bPTAyp3*K z>=H(mzl{=TRkOzf?jRFj9CPq7af`RGy;B>+g+|ITO{kFq?xu`}c@RO)e&QkD5Vr>K zgPZ+?+%?2xG9^T$nQ?}QBeOSQim2U=T7<9Vfr1@n)MHWe65Iu4!2C>cYJ-KeN<1wd9c&?#q_R6vUBGk z)3WHVh$0YYNi2+7i_WnT$T~L~u|lo(Rdxo`WeS2G{{WZ;>{HZG#ul;33=>3TTX`tt z0OU)om5-cY z?i(0J>q(ZdJ8%yEAXAYa7}p%|g&YV#L{}gKF=4NyRf$yz)LbBcitd>k<$f`KC&r9q zSaClBo{@sh{{YY6r61-ib|?7_9G9CGqjI2JN-|ckjQB$SORE+(7*VEPB|_NMj77$j)Van96&MPJ z#^2x`Mm20_8`zAYbdeQ_GxTMrM`B-Qu9P%6E;%hAh0>#Mp@T(jegwk^hIfK2bc#Jc z5SmM6+Kkk7=@yp7Yw+@^c-O=q7{t8UE^wDE5M-gVUU>^I;&aIBWroQ0l<>tJkIf3E zF+~k;L=iqvoY}zF*%kgo8Yio zJ1!gIZMZBXV)8lz$g2gMhw2OD!WXqIaEt8tn4sJf8K-}7b9)df#19CV zRDV&DTkOHI@~UC6?CDb&K_3wa!bc-cCDnl#nAJa2!&bverdi_*a$m%t%h~%F*RZOn_0Eq0_rmH_l zxlSq?+C6mt03^Oq@N+9`=Ue_GBCiD``4F|(5?;FGNs{KGjE`W}UFyOr+lU743#`2o z6(uSclIJ2BIIQ9r)uW{52m@=#i@gX3eM$DHP%andrSKxj~quKXL*JU8o8=uKf zl9(1DABj&Ie`8hO?LUmI6X$FDC~^`xQCH5(YE)byl>%5XesLCEO31Jo2Yi|`UQL-5 zForoQ8`vLlfw+jIscSMLD0Tx=<(ecU-o?jZqzP?>5_uja3=!E|z{{@3gLfA%aF5|D zKL*_gyovsVw3rCs$#5F{DH0ukK?q?%AFKER0b+|)58O`4mrIFO0B%>Izo;}3a_Tjl zgB?`DsOy>_FO6&PbcZOQ#SVw+A!hN2a?7#%BVR*M6zU?cFcci+t?K_ z=$iD1OZ;s6lB=dH_6!Rwlw4piss{T9J5QxXQZ;{v_?iBh3D}Ky=+CCHNH(8V)FLo5MUyMC1(N$8)%2`#Y@l`4o zU&l_e%z^blzz5;UgG1n%!G83cd`_@+77$Yg04oh@q)J?a ze1u!sWos(f^ za#2d#h(P3pB3O|nyLzMx_X@HZNGY`jvMpx5L?t8YdImtOb3+;(W0h0!xu%$+b7u8j zg*=N~$mfx5kqaq<(F&TVc&J<|(O#;f)WNwbdnxC{x62>;uprD&o_@2RfW?9m)dp*7 z!R!yKoN#=(3f;YSs!{Sl$LhYY5t?8sdT=w@M6w##})pj$y!Rr6GRLbU@0xggI2~6Jjq}MHbEFm z30)n>5B}p|tgeg)CF3eenw7jE55zvdfKn{VU@JshCCL#59>sr1W&r^5QF0&1=ZCVZ zmjQf;3U&j2!C{c%xMO^Pc`Ta0$J+xaIU9p;2uPp^t_WTs0DL0+0k<85uYhdWlfRye z+3>{!tU$_lXdSRQ;Eh;}O<;rdRjHeha zfy@062HGtFn(3OB_0_%(vj`H4{{RrcWn53#Ftow-JAE-!_2wL~ut0ErYtynv7qD7=F7H0;sOTB(V9U(95s#N2puF zFK;8Bd|Y4I7^R9Z!7`OhwxUf75Po7Pv8MG=itSHA@=z$n%74QGHBm!)a+zfY4t&pD zlMC}Z`HiD(Bj*0eTU530jYP8L0(aJB;y0CzTUU`lngIV%7LABf0d{R`1ZU= zsC_+1GmnPgitQgoJcHvp-V6AEpPu+%hAB-ga{kCdGKnexEPfvhSzt7eMqWZ?Jq`Iyo(8@_`RU^Ns@s^Xj z=6pcW--z`Ex?j1Gvi9QYXstmg6aaYN#CqJ99bZ_I4Wo|VgA+UEt%)G2*P=YRrzu?` z095zNeW6Z|2 zT4O&IHs>ypDZL!8j};K^GB|)&wZ<;rI#@3)N?x@I*k%d@MB!dr`ew*Bg#=Cp-vg_!p4h9fQyQ!_u|{Ovy-5>;SKmMao@VbDxOS&90>=i4`=?`IQ&sQJ0pg9;<*$Vc2hJ4jP z00&myj9l{^aJ^-V7aGbjE9J<23s#id$!8!~P{?DyrWRem z&Z5TX36OY&#=C?>m@vz@Et-N-62#?b>=3yVld`Uot#s+r>`KK{8-o2tSn|b2sD7QxhfX1CEln&VCjY%rmlQuYx^gwwXEbf|scOb15JRO2>x ze$;T5cbB83K$}SE1}eTl6->TDS>OH$p(@tS2FBa)h73~R5P=TlrDI=(eZr!lkx?42 zn8n|*gWtk!Etk^#mvYsyhfsEqSQ6DeIRI4Ej310@tTmPw53nhNU>Ek5qOdp%Q=fJ+R!Z6yvR$CKc;&=-8;QO7j@nUV2I{dP z+R1SDb-2p1z60p`MB@qzqWTeC4%fIZX_=}5*aEVk1-E5eBj0b@(G=M72bC4>~b(lzAjXF zwGqE}>OomdY9Vy{E+-|)kAh2865&`78X!iZXrEG{$_1f+?0#F-uaMyEWu`@x!jzZB z3v&nbL^B}^mJueQKN1di@ctOY1+aNbN&L{>yZ8whU&5v=66{NaF6Z-?;&?q=C3hv4 zRTMw7g};uHGAbCdJLMBYZ3*!alWLam5ww}iCOo9v5kzP}4A;_E&b7C~A>K;uo=qz& zuk4P?1XvR8Q1$U(H3}BXyz|JrGWx@3JdXvs+NkuOPy_6wYxKIvA*$(SoDC5)twNNs zylMwjvsE6A)TiwW*OphYC92>1h_zDUcHpE+`N>g2msuEvyM`3#&uTrM?6bqbrj-cK zcI3+8TWakpH#8-47qQPE4c|y0-BWYYh%&tx3WVG8fb@Z?>ok6VLj?p!@Hq#FUEB2d zeqs*7(D+{y?oxEFI{7e8BWljrBaEp)qt~dQR*7*fVlOrRl!Eb8q42=`5Nw#|5ltGs!!z$aT?UxsF!r0&E)_DWg7&AQN(@6=uf2tNu zgSA%FfP_k8_AUb}JfE`Gw3f!!y4a$OeAEV@y?MX502Tdd5w>W9bifJ`<8ih^SSt%# zWH4BHoiMx_A#;1}^JbetFh2I}40AB2+3)y?WUySffh`K__r1Hgvt88x03V^-N*g_d z6@tD*nC${+pBOjA`pnYT&#@Zs+~hHt)mVH)6kDrv{K`0qtzg5&R%6C2f#l7o{-W$Jj>gy$ zg+M7qj&VrGVFDDyb6~G&1TjE6snQ@Kg^YhrMlO&cW>j-n$h$QS4zNqL@=}YaDW=*N zmZpi@OB{v`qWK<*B<+1*;6`Bi7vFXwKu8KgAONqW9GAC3quUu;tronWW7R}CLXA&QYZ79eFzjwRvLYNik#q{_*DzC9|E&l+bqK$i{eIkDnM+jURC7n*RVv zW*9OJqc0`}1;0F)mb`rsQnyPZ*w%%%0Fn*TGNY*CW*E`|5Y<8HD%RK3*t$l%Wu7EW z3NIc&ZsFszNAxoF*~tBl$tv|5{R=x9VGgO3u-){i=T#lC;3-Ty9%=w+>DItYkIf_m zqK4AGt;?UvvIBx?0REV-Zxekyjz^kHDkj}cV2p+%k9030wjG3V6|qIwvld(S;_5p- zVnQ!}=H-_yUkC(z$yzqQ5QfZt{=?Yv7`~_KOsS*%&%_$S6|>22k{UrU3X?wB1_6u- zeTIVvsy9nL6xc~3kO(oBN@Xr*@Q+qE>-F2c7YPok*!e`VQJOWsF$p6n zG#-#?#<#SjE|O@vw3t=!K=N4E(gl385I!k#FMh~OH9{Bq3qqES7vG4V1*m-(?yN`FO+hzO)r2@&NcY6(1`bd^OtNE1-EChm$4y|w^ z6bC~9l|m${>>V(aW${v(c~o?QNiCf&X5j{qRUIc?K0S!mqT5<9wO^{N zBWE)oTB$|p9G`neN_$~t)Bsb$OE{VQb0+%M~uq{ z({)2g64*O_#R#$RV?#wh65SJnxG~{7MT+m2wV4-vqAH6_sb%zpS#pIZV0t3z85#oA zu`RWh{1)JPkD3<>g5Cq@*0AIu@NJ|1r@2OCUD+ET zBwxB~6(?mZg zmHYNl%!&!MEBvq*?)rxS_=hqh0_q)XJcd=msBZxaTP03aM?-VI&j~9sJ#WAC@@$}j z!a-rzKWt02R`-03!8AWR{KF+WErpe&7Wg(ifP4wd0R5{(uKTlEdo$cNx3?Kh zs{uCHsR9DDN;UQ7<)cH83g}z-i)>eBytn#g1}RGeR8{`~VY`z69BZ^#^;#^Ebqc`Qkx?p&-b2tCkq*jFd{kO>pZ zmi5EVKM}YyTtASA*wxuJg}Yn`jgB5Lhin|bfd+=rHx?2*0EmJ@=!xkIH2aIenBppL z?jR%U=pw{#a;VLAR{g`fmXh^t%syEakZmT$>b|DH&2k>Emo};jWrr-PnS8UmV+sSc z4_TToMhm}BV0}iP=i;;Pq5X0B5K0Wag9NC|`59_3z@hANj%By8lB2IX1A`FaxnCEs zAOJuokRlGWw#3+i*bocA(X{=(MDh)pEdzML&?uEc2clGPuLY<@%m|gWQ_Bc0=5asU z3PM#&eManWRgKov3rJh9&jS=r6NK#=`hi5M&>LM@&ODB)SEX2Kb+Wu5KniCeAL(O} zy$P@y%7h?j3(}7z@XY7127=$;_=>fFdU1zpHo;I9mcDsV?W7;$7g0jAxmqvXM{)yI zIti&w)G=08bV=-%y7-G`0U+}ptLhj}LJ?1M2n`2~!(ED3-`pcsnYFAJmt;bU7;=e8 zYK7IxU>4rQrS}K^&I?NuFZVESW@57rS9+DUtX+%CvdgdHXoGI<*2fC!1K+gvaM*{o z7nWGzhOuFC$>pXg^#$LTQiWc(O!7A?O{o6HlBx<$#8VbUEkR!D z6WhdpDH`$=U&|_prsTIf(VXwaA2p zxZ=B?Um*)+1?K9mqg9jCt+-ZcW2{z~Hi+|JRi`GZw)C3T7=CZ&1&H#d*#YLn4u_d7 zLiRD2K6^f3siIZ?0NDok{{Ue@y(=B^RTlkE%mk*PKQ#?WYog_wKqUl>*^e)U65g`} zP+#}40OLYt#70hCczevQSWvdeB`4Y^STONsVNk0mzPMW_}wjfvH# zNT`Aew{ZPN&r|7wFNVh7xU>P3wO@dhh(quvjm6owNKwIt^)NrgQm5DSMLU$|*JyxG zR0j(-R43*8tk`CtL9JE6tS@C(dHa_Rte{{{Asi2BY$Up+oSQ!)l<%d=XN(&VDM;$< zZJ->_uOWmG=IStMk<_y5^umMWLZDpIr|uHMILx@D0(a;63kK^E0vSG$fGgm|Qnk)y zO}Eduw%^8==)e<3*%q+#^p`armjQ*Sr1*fe`MV?Un3bYa%7Y!s{w52sa{!7ojc1W4 z#9$zmwnqfF!w{B)N^T$k`uT(514KGk9}%OZ#Jd zbnL&Fn(S6tHdE>qzi`(!(h|Zd*k&9wmUuy;iF>aiaKb$z-lcwWD$5L^FW#pPMn$20 zo8wCLh(-2=ukAqDbyEde{e(99Rzvp3#@42pFe`yUCrtp9j+fD|HKb z+lU!g%G2axR;tE}rwd;o?$?6x>{yfYb7m;V4S{FqgY z+$!P6k<_O3m+;iS324%+mkJ5j(p!q{Tv?kcFp!e&SrI!442sShwh@f*Zvq z?e4(zEdwtTp@YG~QmS5d;2KKn1U8P&Egy)+#dLTO?~W!?I&M7q`s_%3bQI#Co-8zE&l*8)CHUa@S_Lo3<#~Or44E| zb7xwY-r6*;!VCuJweZ}zXbtE-SIkc|EDufll99~hZD`6nvaf{F{ihe{mvTX8#}kD` zKugM6yD#+761KBlc!)~WV<;C3e__Z&OIp#?Zd?co8>_4KqNd*Kh{787`xUrwuU2+0 z&23b_>^_sI`kFb_K~1P12a?^mA64}bDF92$2(UJ|{{T}_-~uIz253Pg9i{Ud1qSvv z6}nF37QxS^Y#o2UxOPiC>{VX?8qUF$G_^`!?x0mSvmqvjE0n|QBayt^2+;AX$`;l*--c&hm87ImB()fdvHR51R(O~+HQ?E z4^T{KJ`8+8wU%FOq2+GexkMH|lc`=yMy*hMnLNl{ebjKC(($U5tJwt7_I&(7TXmbj z+wd@y^`-Ctx7RM{A*~h?sPVV3z#>|L!TEe;#RvR(`|@NhHv&|(t?CC2YjKx&!L#nB zz=!CMB?k(v_Fe@AKcIrFVi#B4nUdYiE2A445utXE-CVguW&Z%n6|L6oRS04VcCtPY zHk>Id=F-8;`(?o@(e98FDCK$*rhqxCpPE09|GhLBXHL!$ zVFUjFhK$kpD%>v0YGuRmt-M2tx?!w@G7dA}6@gU!Mx)0kXUmn%mX~w`>+(v+mxP}p z`7Eue3aPtCpHaw)*JXHL%-n-2E>=!TTQu8Hj7lByF_eOez8l<+aT^6Vp8o(M(}oR) zYcA+xHZ%66w6<5szYo+UB>>yt`EUh7hW_BP z4Xc8Ut3trqfXNsc$gjX_#EOE%Y@3UK2~scp&vsvs58oz z?+KJS)O$kPg>oektW-1)WepY)a3e9AQ#=|b8KxQE+FQQ&|p4O`tlC6!XKiHdLKik6ZN z5$GO~w#!phEoL*EMxZa?zaUoHS*=~Gzo_Ewop^5@eHhx($~LQOkfT-c&(d-LcwS3E zokN)df`R7SgY#hz!3?Y4t$odbn!!e^mx9OicsD5l zbZ?Diva~Yabzy1zf`vGVBS5*y62fE1uZNQuy4g@q(7z2q_T;9GmL(Vw@NQ$+e95Y@ z)J!`EE1D8gLycOLkWj;v^FClA=;y`^4%`*@b&1HKsbCB3yZhKcXQBJ#lPtQYPb!L|ONN0OOQYxytw zjRW&Ji5Mo;1<6)fk(IX)@dc~^!N|$7vNce@ypOo+kx~^5CH8!RKGYla3{hBsF{*9q z3vl|7E;Yrs08*`dl}e0Tzz?fA0giyvul*QC1t~{XHUM>%=;b5Nn}juLhjeFwTyIt! z&6Wk%(>x~Rg19x%-$)?k4I2Ym<8NYgMwY0+A2v!=0 z8~qlVl_(mcZ}B^Vc6l%Gp@_gY zkHa&)xixd1L+l2Pk^E{a$b(K}+hfqccobD;!%+$AXsx$pM(Gb`N$xwN-?U&~sB`l0 zd>`ssmI9zyA$khf(GkWCBMviX@r9^QwBKx zQfGu(nPPPVh9DxMtU?mb9j|P@Fq^b)s=T_$Oq;Ux=t7I8$3e|?wVX@}_6Lg4x2L__ zgFq*_`fVNG1Jv$-E7LKAWw+-&o1nf;3VtC506c2M)^gaEV8lwk$d z!YkF`^56lh)bhQlc!5Nki5tjAMJ6#W6Gib)&}}IQY^4~hm10Fexpe;k5z@N}-q}zk zi(eVfVpcF2cd`9M!Pp+8BP#=xG5954a)eB!p(s3RFjJMW&dR-LYb)DglUY$6GS8`{ zM$)Trx}`2#$`>Fw6I(Za{)mhat-8eC*dkC>QGU6x!jLDWHVg4GRb*udrCq||Z{XDz z;bY|GeSo_Z-)>j|o3MX{R8HszqiVK)+&@SLw5o_`k-x7GZI%F~tb0&tZjc$fKC&WO zg)yW^34IktQ&9f^$J8a-(ZRa0k0KYv;&_s_ z&hWvMF8B=^w`Htb)~o%-0!GDJUyYWX<&iAf2w(y5HqT`bHPSa)t=GaWswwGAQ1x;7 z+A*qHVax8y32^k zDC-YhRy-k9u4}f$ct9M!BxtN2dL66anY6qSW=I(UN+p#6%D}(*MmDa3`&29<+MO<{c<>& zeA6F@l|DxE=>fv2XX<2IDaqLI57{(<9{5VPYtqDeY#^8kwVw%m@-=1w$bBJXAD~*I ztUEy~D^3_6LeheEQX#K|CuPzWSawt` z(zlHfCd&IuptsWTg;Ri_RWiq7G-+Rx^@r_oOdSN4r^6@$?C~y$6nyOVF=_0^chP;Q zRY4XkrmU%T@+s@3>wti(7%mq|HG8zWE>t9o;X$_r;)nScC57yC{C%V|A2fdLmRxHY zWN^xXiYp?nReNlvdLk`Hy2Z)J3O7puYSiJZdYXNPe8q2l|z-^GTk68eeM%WLP zmaBzXTosoV>H?t^D=z$o^nkLO73u2@;F&uVtc3!jQkHS-YQnVztak{<2iCXzeM%gG zS_V?&8(Q25Z70Min?-6gJ5-0>n_wWf3SzXo?l9~kEvYkpqDnc0B~Zpcs79Y)}Ura=cy;`);1B+4D zIfiPKG=*4`z1?8)6VkqJ+D0;nU9Gh260R#VVnVQqT-%pZe!(`DFgAWMd`3PPHiTXN zEz2qZ3+>Oh!}v5nW#bt*R6SssWXuFw9jDB%Ag^HTp@rO}+E-r-oGjZKu+@dl9eld&P8XYhn{D=?^1pV1mxn2n6Zr9cUX@dsTdeT*cn(-jrqCO-Y@fnw)wO7O#FU zAEuOUA)~SX0H?k)6}m5<6e&Rb$R)pmSy6Iol>Y#kWh7GCkKSC0--(Lke4ptWKo?MU zH{^Fjs--T}tKGI=$cTO=pJH24Ljc;vb`9ewtj+p~LWWfQ@vpgAxS=TS?Rx@gIpn1fzTdCJR*T|?l@%4%BD75( z(juKyU3b`>HvM)WD66&q0JbIrU;`$qBd1BzMu)H`Z{3yWlBsR1Dy!DxD=u?TruI`# z>`1Bv9||o;w=Tf->!uSLSh~t8nuKZfsHf3bKvHi@^$b5#(po6bsYI_Qv6~;uDj$Fz zPr5VbWyD`Dp*~>bp#dtf<7fBr#Nwk1Dx8){fNKZX>e7uxQ?I#*ix@0w3?PrUHHGMi z&?>B_t0>IRf9d;(fFn+o=_tcN0$=z7HgHtbLxpzRlp>NtR*!4Fmp4OihPf*W+G^>s z8M2lzulSnwS^JnRkhlACR8Zl6Ge}aHHrY8LRX#CkWo=t(DD`UHqTMgzT=DAy6DSF4{!}$`oNu{{Yzp$R&rI`iShmz>j4r^eXbjC({*F zw1fN+s4eted=~Dp!83hS+uVN0o1#!&y7nf*hQco7Kh2j*Erk$;R>?}QoBDv!Qq)y8 zGy^%n4GY!Szia}iM&111yuBfC}PSq*2S@WvMIGux5Q-khFefik6-yD5otjG08N9<8+}RI92YIhHV>G= zU;$I%jc2?8akOAT`di6}3b%?u7?lnBkEACT)DMDmg=di#qj^H2&ei__CNogN$bmIb zsFIaZnH9;eBd65scQ^bsr~<}wNgqxE-kUoWLTiDEN?sLHc^{yX+sEJO^_&;)kz0H4T>JRFWO7bM^ zy{rz_P*6b@B1iBP8xzi=zg548!7ZYY{FV<50cgEo*bV^wN2-E9xj=v5M`odN@fF(% zBL&FUEvklM(3c5NyG0oF2<`z_=XJXmTA zA+F0yZ0o#O!7C#y{enPbkG!HK+jVIhpTXV$W09EXR@;h4rfkp<^ zz#x{_ih`fgSmR9$ZZd;y@CsXq2!c8S{34AmlDhXve%64>J8>*)b$wz|>gk{LJzYm` zf(olZ%3v*T>fi}*D`>uuGA=v;@6j~ z5A-wXBY$;&J-au2VGsiT1^spir=bi;sL1Qgvi3Fo`!A@Y`0jzXVNH%kJ>+S(H>ubd z%PGIWt8v7w)J%mi6na5&@+~(*ea93l#gH=8;IY7iTDfY3$vINi0j=`x{Hk^I)JBE% zB47o-bl5a#UF^70j@#lffwqz_dIhwuTvG<;EyMdN5G}xw*im*C+i-=n0fBsmPzS5D z$z#?EDQjKJj$B<;($H)1!_jYQ7F$8a`VwAO(v2GkPGBr9RoDH;mb9?Z*65br1{vKx zU%5c-z$s>pbtTvsBG7bIM5h2vIcHe)R|M+eVA{5r{sTgVI2OQa0xODdhnFaZ!A0)! z*n3%YEt%!OZ3|D9cn(6y0TREETQE^x%;>j`TL4C$c}eIP3h2?c$~W#}xe?;&k1(@x zrK)kI8;;$ZP#_O5j@Q!_y-#UuotKHNX~W{TyfWf}H|l6YY!|*a;xn(h$B|E@j25l^ zn2lQM{kuMyaS17!%nrq;BZp&(f_o6WhbXuPRgfs#^>WmEE67${6#mG=aK@fO7;H8z zQkx>K;Bg;URvNn;@Jf42Q`iRHo1~m9m5r$&kX#(DR=VZj0BE+U>(tsTZUnZ@cyc@g z=37+N`l-TO*s9M16gTkhiXX4KciHH!|g3A+8#ivp>GTSt!03O%G zVrX2dqtv#9Sz|%cbRW5HHv2zRjUQUSf|RxxEYKr10O(yy0YKR8LGh!Ex*B; zMM|m!P-XlXSP~kh+~bhv4qKt2K7=xSDktgGEW3O4Ph5*drC}dY_F{e5@4GGW2~b7Z zRQsGV<@uE@ON2cU7fOLVgtdO+81ItOsx-J?i4`v3p(Az>VUnkA#VVicV5Il)xRntr zDVj0v!_3${;})v6hsGgI=>6>yY=8m0A0%N$&FJAM%yH5r8^$3); zj|F_fTrP25WVJwatIr-l?Lf-rO6ccwu~-tWh&t3z85aO6s~?gvBiC4~MbPtG}m;_iaNg z_w}nCWiFYo!F2TL{k0A39ud-NP zlgWPwFCu_pw>9EQVHm!KA~!;vZ|qH1BPujTH{*mIH>vDWmmvum%U$p=y7~5qfFBwx03WPdON}bYz_$s5oz=E$s$O9FXD3A+=e{YD` z7aaWDyYU%o5*KITQHxh;Td^!L>lQTr0>j}DyV%ykyD;Q~cFd4NC_hr0UBL)c^uY@W zP+-G-7m$ADwT(1dYq3T)3iZ1)XRU{lAv_n19}E^wq;AoX2yB9!xl*VL;y-DPvl&-= zGu%$Y!amCwA5kE!|#1#3hBJ+K1lYr5##YsG{wAe#I6b?gzPXs5T9a z7xVj1`LR|UsBPr~7R{{Urt!lS=0xFL~fhPN-dU3`pn6_pE)Su699X$%ssk?G&U zOC##YCNf15onRK0N61ax?3s#?i3G9PsnO+ABPQ2-qt{Tb*6{{ZaA73JZ{yAZTB^eRP1{9{6BLIL2P*|!hQNnytJ(~XjB=5;0@fJ0uwYOiF&6i9%UMD4r5!UeeBgM}K z<*K^uJ)NrLQ*d|`Eh6YjA(&skQihHnZYe{JHyd&1F3EdfC05jIiIEz#Dal37NKked zqN;s=1US8dnH7Ot0fXtsEXOQ<&}ltJBs4T@-hf;TVAAE@9N z7-KpNyF$JqCY2GAp$H)Xy{d^nMLtLbKrsaT0LdGI;l{szdh!%eN5)toZm4~O=0T4x zFm7X)Fv(j179pdQ#!c)4Lbfarv1X8&wS1JmRAtI%Fcu3cUnu$|_<>0NgsboXo>DcY zHBKzi2ixV3O9SEa4=AYFmXOdMF%JNFWUw^I6-{GNX9ykTT&pdByEpd_L-vHUnk{P2 zo8b`<&ox(Cm-eBdwdos4Q`UiBGfRP4^D;t@`4$?n&1SzP&m_d&Foa65+?+XUpYa|L zbQ#<=YN&oD9#Vy@VN>-xu(l;TrPxzmOD<#E_Jb)V0UH z%9a5u{1rI9;d3YFFOX#Me#8Y;PB8pjFID90rBmOFodn_b{KK3L4@1}iNv%CtM?i<| zAYoF6w=^-Pt~gSyJ|VREEJ_rvwW)4arW85x6TJ*AV=S|7+qhr~)Nz4Rk#7B!QZQ@? z@K<_$Kmr`+l~GARqhA*+kS?A#=h9JV1dnR@7R~Z4JhA$LYXd&RgW@XEZC{uPhl|;dZf=3< zTP%u)cCx1;U4La_E*R#@CCBa?TZ7o%%9aT3Q`tj$GR+Xy7<@_+YHJBWae$w;g!K4? zP(+Uq#5`>q6H=F2d~6WnPw53y{{TEgSYh@Yjhx61OwfYzSrHKAZqEEpSMmLRWg)H> zCt~3}i51tZ*vh~9RHC5Z!C)}GH_AZ26;+k2m&JcS3-*M5g2tPfyKf}Hc@|dSQRD7F zI}>`N_RB}j%Wf;L630Zg{{U>gi{h&46|hmW*ge303v#fbs~?o5;I> ze8yX;T=Ei!sZPmUBMcVz2=ryo%nSaYQmP?&^#D1qA`;njL%$GPI%iC`$nL;#R`zJM zPzJ6yXqBvX6;R?O#i>{_k`-l;yfJdIi3K8YA=pLTFps7e0J_$N+^Z(H;prRCP3j2% zz48~aZK}vp>J=T@E&7+mGiXc_f7R=78i*}4+#z((7=vMOLdz7Jxn^#Y;^OH>Dhzi$ z@T@Hp6B;S`jG!Qd1MOnWzv=dTF%P6}ubd)%Ei6M{F0lf+9q|u^F?nUH>I!rmVg#sA;%OtuiFyp5|4$-!$YLKJufKX3mQFY9646VW*?ZPT0vjn8F|Qy(wNZmf z9*u={VFg$$BtuS41TJaL8^h7Q}579(#>rd&>< zZcR&Jsg?wivZ|%@G}@ZCMMObwxC3%qL^YTFR}*-SxJ=~a+XDwhYp_Ba9-@crg{!o> z)Q>{gJ-1tl^_bUSOBGZ>2jt`)a}kZvnXbl$=rhguRP}!09g8~>obeKnUC{x$Gv+Y? z>4_Z+qpTD%lLeP+UaQEW9Ch>cELNrDp})yi0su3FcE+mMC6c*RViBT3efJjqLXJQ-VAYKtq9lSH0NE^{E^ z$PiG=K1$svDxGAo1A|1AHW)4wXd))({{VtC5%C~dZnwc1OJ#aXri$Gs^j>wWaBpq! z5WFo5nD$ruP6K1EMb*}DA5aRTW$)?;p&N?n*!3(-*=|Huz$}qloF#w(sL;BWYSlqKn8XX2 zfRx#i#_H%O?AGpJvAFYvS`-r`$nk=0tfoCCh?CFkIge`4G6GNwzF1Jo1_5U2QOC-|{Kh-VJ6ph%I!SXxXy*jONy zH>pK~akV6%`3P*niVm`gLGxQG)WXGP8-!XSlvS}20KH?jtpUP0#?-Zd=gA2v-@*&! zL<1^1ETUMikCvdBaP5r532<$f_w6&ys!6xW_c32Jd!cIp{F-NaYL z!QM+9qzPP=2N1b-upnwiqh8M#EKO~~VBSjiQgX$f`iV#RvaEa$-gdt{V5hC}Vr_lfs><*8)+#tv*RB?3? zct?nG)VNu=`~D|rnVPr;2gGcxOCXve(A)n2kp?81!BVElOAu|hur9`vN~S}R#>%hv zC@$3wLhdHM`#qn1YVJD zWYAGK8c300`DjZz@wu|pOhJsKxXLS$FG!&Z^q00JY+}A4@!))A4++H~Q~-)cO-JxU zP$2uixx;@jC8*aI578Mm=-7r+AC!|5l9!R_k~p9r3c~UcW2~aG7%E{I zTXWsD3(6vJBiCi|Dk7A&_ET@vv{xlb!vR@w5N%FSA(Zmx02^?(~zWjzp?Jyc#T>j3x9vIt)M0aUm^lNeWNWqxVvDfx{ETG0=X zJ-8)ZJf*Hsm<{fRG&{UjeG1}F9nR3Md^ zag&Y0ej%>^0L=w#zp!f^e4#BZAAz}mx66dQK7nc?x9=9FjX?PS0Aiq5Awr0-)IJy; zFwK-_BDu(s0$XqgVyr}$8?2Y!vt5L|mBv6;R6ul=CAnQ8m81_6vFWy;+hxscrV|`v zq3x6wxbh4Ys*Eeh?%Y(@Lz1y<6vMbxUh;2&--(tdv39oIz!9 z=^XWc3C}O$IIZ?ZI1QM%xnED<0F8($?0NwQEFV+E!qid!04Nc*n}-PHu3Xt2+ltGv zg&?hf-5}2x+pKmk{6?#U43-%SxVaMf5Z7SPTZ*{g{F;10EHpuF4OeSta7b8uq8Q>g ztxf>D_A*t1hs4xa7u6RF{lCV_FoV|7vzXy{XQD z%|UH49hJM43!p|!LAz=aY`B+!O9(cg0`}$h6cfJ7YJ}Tm!nI-zX`Zx5g9mFU7Ss-m zSI;56!<|TYjq+(By>&lg#iqvLcf26~(kxXK?zfyrn zIY@Jr91GVV&ky;HN}$s53-o0vLPbr=TbF9escDU!EH3tT`uqg7j%$cXc5Ire zUxNDu#yzGYM$!|KjyDsi-=wIwu}W3LDwhsix$}bgP!trhgerTZU@oP)i%7ugm2g1t z7=KgYVZR)gSrl?--Q?TD)x#QLIp{%O`IRk~1!deJjgQ2$rw6l+nH{ec8kvv@Tet(U z0jx4QTPnhYx{v)>%?pO-k+PB1QPd&_la4YjrGnnXCAVPa=tVnes9?gg1NlF4;IL(l zqx%Ni641)qxE!G~dlC~wm3bc-f(s@w;VIdGSlvaeX{{V8v)CoFlb&b0o zgpPF^?zsR?j>_#d0_do!mUb>mkH$rW6OdcQKx)7CAX8)<%To8^YzP6e1w!SdK;^ir zIex;H7yF7g0GB~!g=tdEKZO}uFe=Jw=H5%_u%*}#6^n*lO}XyG@V0j)N;ZzpSUTh> zs@Zfa2#$0GMN7U*t$_N6VJ-ow+)FqD@epN2#5G*G4b`wCBCFK%5|i*LaQ(szfGZST zT+Vr!E|$(Vq%cE&9=OJQ!0ta3H8~-d2$qQ4Vb{=e$k8K_W4CsopdUF93*hFK5!)aD0glO^f)i_BxwCRC%Oxh?>^AMW zhy=YwmJVAsnS?EHB6jvD-Ius)C{3hyOB_mo$ulD(;1Nn8=~(B;Wd$p;5`zj0g-_I~ zY&@vHDP?r*6_+3Oj$#H@!pxd^EcR4>*q0IPtjKKZ_*!+JF`D7AOe#RDo=4n@rMkta zu#5tX@}wP&;mGSB^9txa>`1b&U_rO_C}7-Cx%Cvq&m1Eu)(*5sGlVJ}dvdqdcMv5H zW8(${sedg&cMT3j2A{%PbuU~ZLXz!N>Di?;lJRS5;X`59T#o1cL7UmsvH(ga#@S+_ zJn9kt!lW+(;iZ=i@;_N@cM$hdia+fe5!9qhU|H3~BhvXiiB1G^6%+lk(4?b@3;3TL z$w~Kd`F)LzjVkVE>-8xrJ19jUw9JE}B|J28BfEp@*t;vHAOR)9b|Lv;^e_O3 z2(T3nJkG^d=?Te06Kcx}SdzUOWx+rAr?!`VjO2xVa=-%xDj;=?$VVSufwsw>6qy@-30KFY$p%|Xscj`8*MvJnoYBH*7-m-^nL~8#4$CGU@lE}%D@nz+1LOzKQz_|T2 z5TxbHDuErGRog7f#?{M07FfS4C?WbGlvFC~VS=LyG#FG}L8K9uf>fw%h+E2?DHU*n z@-wi;45WH~6gMl%$5}u8L^F-V1qb#RGOeDK5s|nL4`Xou0EmJlLuKQ^He?y%YRN)> zwD;~MguLSSW_Zad?mLJ&FV#bb z!y47y%Ajyy=!l$x*n^_7cs^mV@4+asX&jGTTMVl$j<%`2Ofn5!kOeU%Mk%}? zQ!1H7#Y%GulKMwNzp*Qu0tPtJH;R~^v%JIYWnRKo!Edlm*|C#gY|F5j_-LNSK#|c* zjvDN^4biZ~TM3WlvEaHQuInm?lNO|7vO{PE!L|ue5F&c=Q6Z3hE?9(JJU`|S247_< zESnKX2viAyIjh)IN|P2X(7-C{9d{b4N}Aq8Z)68e!dVa~#vBi4&c`M`6@ujSMl>g- zh)YPdDkVfer$f(Dp6ubT>mx3ZRCdk(7TfpbMgyMIvt z{{RH_Z}5Tawl9p^%u0XB0Jn%MJqV{w!EtSsBk>-yvcl;O!gq8z4@s`kzFW82qnT|0aX%Lutws-qge6_ zWsolfG$|NvVam{#aE;8?QI1C5#f<8B{{Y$!=@!q_q@{)ZAV%EX;tL`gA+`ju(b-}j zA|=7OYPU5b>q?H0Yvqa}Dy_m8sdDnGUlQrH^C*Os#zrDjP#A8eNMO{*(*bJsd^}vJ zsgx$J0HV^Ylp?uKzPT@9XsjX7+z2Bxox6^uh{aJ*z`Qa1X0ZjVjzj8Dgvw*N5j}vK zLhX>YM3t9&52!N`WFprUs+}bH87@^lhOmhH6|J=m#7iuMHhpsY2)Vz8dxszknyhmS z!m+BZ9Z6<1ms{E1?VFmGv6}mjEnz&PEta;yp_dD$*n+DgWmb-E1aobFe~eStT7b>= zBmm?()&wcIC{Cae$!lFADL}u7DwE?F(o|IxUB*pXSk`WD+&xk?at60xi-W9$FqGYn zWJs1=rHo?iomcJ}wiHI7EmGx~ZCuprHkUiF5E?|avc8FA+&i2hT}xoFebjBku}(Vx z)d+Qpf$=Lau1Yru5YCds3UXE1DyYlYVBJq5=CLS;2K|)+URm%J8apFu2Vy^V75X6* zQ40hZ(UjqXu+w`lc3CTK%M?WxguhFNcdw8;*X;_cErWc^f9#5de`OUVN>m-4T#Opy zky|F^w&3rdGO!o`!aHPAf*7nnKZu zD_@6QR$O*a9}FA`WDvZ!zjYB%wk#17oNs3Wr(7@Jr-XHa7~g+pQo zuoO4F0J5i;0I;EN|3+E?yTc&PVs zgVPuoaR31vRxpEcn-Hl_>_!_@UYD}jK-n#)pw^kF0kR~hpzU4tE85`y3!lB-U}SCBS~fB@2^qKts!2No#Q%sfjQ zSO!z}xF=<#PKm6!%1$vM#x1g{8pRtf!AaiM0Z)qp0dfEzMC6qlTxk`kjb4K0UI2Hf zFq}22Ri;u;c?{-6(Eh<*RJzYRB6X0BI(hRg09gi?^EFqp!)Lux>f45+4~>G0*yV*9 z421O)CFA(@6j@}jGkYwhE+)3Fb|8V}LTGHf${p-j3Z%FYYI_X$OE88-^OLP(m&6)A zT*`1|R+bl&1a=*^CS+U#Tg5m`FA2H?`#4%H5F;!3ah!p$C(kz=$T*F|E2Fg*rj{@upUcP4W7Uh?W z2e?}-uo(##vw&t2$>tX05$xo!fpXP*5G{z7qO~WHv_uPm3aGJ6RyGXWEq)z>aoT`o zJQ9Z?>q4O2sORw^BCC$^2+=lHmP(o~3#=|$kaimuP+NHizal)!Er#YBXI&{Ve`hSW1Plttys4br{U48L(|i=~PNQ+M7WJ zu(yeL5V^B34ZwxCmfEjiQut!dMes6K8Brpfx^((D%Z?IypQtmjRV9w>lrCe}8JbT!N+#gVEwyFi$VYEQ|+ zqOEeGI}J-qxSp6a`HGa%#J4JN#yYEk0I8ypl9KlXA##UclCt2j_bJN!cgrEE*(lR4No82B4ZQC}{|q zbd0!9#z@A*fp`zc6ul9hKHw_=@fY$D~@u z^I2f2d?8QC8LMa69uPjo=@v$@gs%Ea395)cNqheQQu2p=in8)LhWy2OK85)yt2Q_l zvcpio)ka~$086P>){?rZI!2=Ik}yb>Td3@UK?pcXZAgg8tCImH-Q+rQUp<>GF{7mj zMN3!0<;NpaXUXJME-W1g2I@Vv_yrw&Wcrd1*bNtAy0ZFApIKbAX|mx3dq$^ypkaQ) zTj!8rQB6fuV8I+<1IeX#BeI)(gX$2~TM!JwIDhaFY|IM0g@vk{=B#LXez_8CN2a3*$@hbK4XL!+^1!eZrYvfAcx7Y(T%zw9=kaY+!P^M6rk${6w3u% z$70mDk%|sOMJcLc)~1|=&USDTyF_v+v1xxu>o){SJ@Pbc>NrN4e!m>C@9sS)LY|ZE zL~aiI49XcvS1OjlM-i~iOVvgySgPz~EQxecIiDi@1Ko`(c%tq!iD@Y~!JMB=$`2cX zKqRKn#l1g*_++3kly-=9@?%0u=J$kpuArX0s6S#ywm?yrJ>ZQ(_&{Gwf}^u385^G| zMdW%Tqn=C5NccU8bxzB;ft;4sN34m4i9;PGqC3G_zDO#y*a{U>B8n6%A0#?!Gx#N= zE~muOWtu&Py|-~RY)Z07;FH~h!@UFWl8}=OCym$j=ze!CW3a$e8W(Iy@?jE`g;`%f?|=}r}AvZagjTw!&nVDmE zmo6*<7({W*3m1vL7Zbchga}2zCer|bLtYdoFp~j*_%!AMU}#}H#0KUxfq3A|s?os_ zLq$Ur5FuzS&<-#V&QUo(>Wt(bLskY%*Lb}D zaGRL+!prRoco-sM5s^eU6vqJ!aT;Dg?fb#*Ad<5cdSWG0raY2UaFfp9K#%_r7%!`&|btVT* zy{2Xxq6>mhjox<T%;5Sg~1cx;F)7~H@ND%B0a;$R|NxWr2kkuGsDO5FyS zksD0HGE_3*xC9pjFqqb01_J{{$SN}fJz}>Jst#s6S05D)(bJd(P9PIusL4hEXEBU2 z%;s5$=3;v@8w!~+s2%29!r^#Wz+hX2AtX)nbhsd#OAr}e6&7Fp(^9Jd zKaxyc4vl+h@&5qQC+T$G`YHbaNQXtFJ@6;}B0omy&))zaf<(*k){(x9j=$?O{5Pvh zD9YpbGd7b`g{vkuU&w(>+cufCpaxtZ$}n8S5bp^KL%N%*pXKi49}ZF(=-H&+!S=V`|a-i|fg#op-35D(R+Bp5z)4I+mbb zSJN#KWtF)D`Ix${g_%of+ynf7ti!J9Y|Z}CakcO!Jyv0iK0K?LKE^Lr({EJCXixD0 zRu%{%8a>3;^jtZCd;}wVe}v4K^J2(TA{8Q3U~9A_z)TTL$bRyov6f)QX2<}H1$YA$ zkGw6%d7|mrwV62KM|PS`77Z>vxYzQ1PlbUs8vQ;2^S?gBlQlhWRgqX=RZ0hw$(bKj zuCe;Nekd{Il4_P~dOPUbA*OoTQ2u+_m^J!6F1J$erN@wMRa92o2fY#|i&2-zeGVtn zH<^jDZ!KFlcT@KhLDu?CE}4aM{EVqZN}ry+LG`)%ow`gns6mOd5OMd&ss8}wO@3~a zojtbZLKy%>Rs^4F6FBI<*;|9-XBhZiH{bo@=|&t{Y?yT<9E1)Vu`qRARupE-Swgnb z7;`k5^a>6J^4ObXd8O*weC3lM^4xGkc0Yp^RTKpP0oVzu(qYu&+T-wjMAc}s>9SLD zr?Y#)go%-B!*PL(E#N!BbM)#2$dw$?jL?a2Fr7E2WY%Q9*vHh<4jg!~sv^>fz!qjr zQ2B{%h`q_~X0NSf%ex*6P&mHk2NrBQ7Z$u0v%#tQzaS%H%6HKW3W^c6LwTBBt(`Ht z{YuA>W^9KpQc-Fq9EZ3KGGWh{s6CWYf_MUE)9QNs0obz>4`eCTf)R{UW-P5Z~``fXlN<4&mg{$!@?qrHySW_>1u7ADB8RN#~?%MWl2 z!G{*BSCN4wHjk_7{{TsfoMlkPv5t3kC+ufU>sfFeq?b-F8Tyy;H2RD=@dw7ifthh8 zR4C%Xn#~(&+ucuNGcg7O4b2}&)#syI7u?M^MbYBquJ-q7tLa*7*vM20!?6=8HY}`; zD5-*~9D-$GQzv+01R^#uG#xqhS;7knIb-Z53>fg@R6$Cyh)_v0Thzuj1*{&&HylmOLwcN&ql^=6FqU~h<(KLIAJ1*uPoS<_K zmrelr0s9I1MJ9q3zi4!B4Q?~^*?R{t=~ByN!XM=$xg4KfBj^xvrGbx!Iv=g8>}HEF z&xEUHRCUu3$1M;*HUfK0`?Z4z(`erlrULIoC67WTO!$U2TthHcMP~-6y49F`ytr^- z+A?I>xMe{^eVS+=K9?{I)XiPRZ~V+zmmoF49mLIvGUF)X!JR`&_%jq?_&(xkG+K>I z)-?Q|K{Q<-PlAgL@9ujKz?I|IG(ooKQOMz@JStRi32%9kj3k&uH!vn#nH3aSCWO%G z6HS01@7<5NoC(x5pi#e;`+LnMnR<>~jQI!3Cbao^vtw`S1SJu>1?FPd_|!1AQ}tOi z52Z|mGn(x%;N0J6sHqiQ$2G=qjKMhyxOIG@?z-=#+Bs@%-l8XO6qLaYcP zpwQ*U%t!2JNYMVLHY8x!sTeZ`HvIOTQxfCUHkq|Q(!htyJ4YLZka(XDXc4-9oqszL z2is|(H7$oW7fh-bB8yq3)@m?1Z**WyD}&q*LojAc*uyEBtriVZsK~dp*qE^6#(_~l z1IGL{`#(vWaiOrxdX@`NWRB1`hZCUawxQ0$mf?Ig`LQMkXML(8dHS@;od6*Zziuw3 znVIz!iGsFKOHDy+@(egBvSDLoauCFJHOCWf(N)PYF}Cw!ghZe_M8&f5sW@OV z;#O7!;{t(=L$? zQpmd((MgUGQ~(9gxQo1-ioA%b38Q_cp9wT7Vi=sVau`O(Wm|PrHg{16il`FRcU8r9 z-H{!B_CE1J3M+sjozI;M)yl-W7Hfi$Q8$L zdYCZuT)iJQZ2FD*k{-)B-MDrDUo)p=(r9%$Y{NG2_{u-2Nvh9)Vj85(fG9lQ1ba-H z%x$Rii}RF{P;>H`(sgGx0*r0(nm=*qVDM*E7EMiWS;dakIWs=1CRVm` z88k?9*a@BJ@d@ND_xG6bfF{QkK$2#k3zj>92I{I}#k2w;?G1xLZA@WCz__FnM0V{I z1U<_WA0ZolUJr3HV`AI`LMG8xwF={QBJ3Hg=}PyvgXm_b^;nH%4C&dxV!Malp~0im z=&)+jRIjL9i~S~|4RJ(w;7^A}pE1^DVTk2yq@BI1(!SF^gFrg&oOx^WVrD7mSRM^d zucX7|fML_(#yu2F@3RvT-_mt#r#7jP2)qCVzf{WViZGHnzuF4h#IfF`*!AxN5t4}D`pme_^*455 zaE)WMLLDYuHY|!%(T&nG;m_u2nN+QjV0wx(8fDXIn|kU$P^? z%uE@RXPQZ3p}96_jv-_VxvVre4T_Z`6kH`r;8uXgJkEqeM{7ygv zy74jV9d##b5ws9U;Pc*eEdF;-LQE51h+@@cU%ijsP%%Xrj-Vzi$ncw=4dMq;mHn2# zm?y;fh{u$VvVSu!r#JRCJWZu!364o$+g#l~C;;6Rxbz}zDuwOG1<04fAkx)W8k zk%1nQsA+Ix>L6nTZcs z@Y4SPv*vGisp&fQQtyoo4cXZ9+krKGW6sl!D}h*O1|Q=ZX$sPXd#p?d^{^ae(quVOzIi%>N<{;I+hE& za*tYR*H;E`t)s_#ah>cFvYPKOX|)<``!d(ep|~K5Jc-8Pw(HU;qgOoy$1qH6L5z0X z$ig#o5Lpp%@=f;;qmnt|qOM)*b^AuM*g*o1?`LFXHV+dvY+tRiybJ9<9Li5u;dr(m zwHPN^{{VJR`QTZyD$1APS3V#A0C4{R=3)9{<8W}w9fiBpR2B$tPHaT==hAzACOL?hjl_1b9MogPR_rDh7?+pg;K%^= zGSm{s+83}r&uFJM{zX84xJ)K>Jy1+!4(EyFr()F+#MBiv1LSHVtJFor`&!M_(U>we!mr#O z3HF%DMBoxVk8u>=tOOWfAi`+&nw-mx3AwM&xvp!JP}qJ=);F9;>PZS8f0Qa zfoHW>;LI9i7&l+dVwR6;yO^`yNR2r8Vm%p+#r;uo4Y6B^mzd^XGj`K4yC9kkbK%@Wc2_*HW;gr~4!4kb*w@)^69Jf_fm3hV5N6rXa*TTL zKhC5)<#+(tp|4L2fc zvV_LO`U#W-Co7N%vN*ZF9;X%`(&<~wN-n`wfBwwcjb5)an;PZ5jD)^dAm~?uQ z`ITCZ&n~$j`pnv*GnUvwS+B%RMiRs&>?e)g{{VP#BZ5FRd>EyX`;sCZ!r&wruNNT# zE>lt4n6EA{3?L;NywmD0)?;wX-;ZdHj2eOBHdpfaJ@^7+$cj-*8#ms0&I!BueFW-S z^2}9i(f(##NPJ^PcLsS~Sc*B4s>@!Goy z9iwHrzM#kmfxhvS5Ncv2To6d+U^cc%nsTg!i=#Cfb~Uq(D8q|7fC}(CdYhWT zk#wx%A>CGJdrW$D$aMQPZn}e(hy$>z-T9jShMH{pb;qd5S@$kbmbsd}8nv6}(qs&*K@?{qBN!S3 zGTz}dA=y@sekLbuSm+CwGd4!9J3~NOoogvg8~nZIgAbXXYM-3ZM-5vD;3kq?15RcA)3fyWbZ>@c=Mf5P=RO z4ih#{EvgJmXOu+gdcmmEi~5&_ga#C6Q`6+>y-a6CJ6M8hY5KQM%Y;9ktH&yMGbXbU z%d5(nT?xo`DC|_s`SE33OQ!ylgd-_tpwup=4Ok!}p%YKHc&URZR0PjHyU?1gP9<9~ z>M&%<^X>p1NbegWCQ_bdf!VzbRRmayqzi~9Rb8Oe>C9J=$eYU{HU$}^##HXU7)EP% zQ`i7!Sbf;LAW(!c1L-U49O?&1M;cVvxli?dP4P$V6EknNGfSwV zuKA=X?YR!vNeYu)ES+Q>O7=5Z^&Mt`N5WK@orgZ&4 zM=E&`FnmRL0CqJFqsr4MJRZVl)NI7r21Njg*1G7;jAL4$MA9~tDrYTKe=S)vr|9(> zoks60q61)lW(-S>6+o&JQ>aWBOP|0Ll$ zaf#2$dmm^F>RmSuvk?p_y%_i&MMFE;mu`CZRN$bqtzOmGtY6a|G-g(3_dM ze+bxZ{{W_4>`)cnkF3*UWYFMmC%-pdf@-t**$Esc@e%T{V1WA?GZwQp2BuSAd8XCi z%9gcaICTqaL9c1|qYJMib@FSD@K)|X90PHkN%={hdn*Z(P}p+)yUjOTL_ub2z9J5r z0R85tsb>{a~ zCdslYj{?xa$%Iq@nN%TT0G%(Y16Z=2dntg;Zifb|5lo5*GgZ_2r${+YoRf|F@pDA@ zwdgQs)tp$-D;T*(>0h-wtY9t>cWrnQ}pPsyAu>94Q8tosj+>9aANCp2M!V$##=kVt+g~A zHx{EulOpOWiQ~{$yeu|e`fcAw{{V5ES7SiUN(`8ki!~X_@d;);Oh^#&Ecyx3J{irb zVV_g-t?-jir^kmFL{I>X%8E%e1lMaHJJ8_-07VN>f#A?I-QiaeAyeaC3Mkyrby}=> zPvN4lBEgT19Y|qd&ad#MJhzii^1rmtn_Zo12MO_#Fdcj1KvM#iK^#693cJd<6aq2MNqsb;`voy+Ys`n)-o)xU2IUV}@j##1gZ!gVi$ zG9fRedmrR8Ppj)4EbS`lKH|h3dsC~+jWcCXgz~jQX_ra6RQW>FQC9=$B6PmLrOl=u zc1@WSbAGin-A_mV0ElztVij2es~OdLuTEViZ=D>KB7wV|JFg~}O4vr7c_fB0#;a8O z@#&a1sRM&FzYXKWwW5q3psC z4~G%5V_xh8$<(xI{{Rpl$1^8c9g#nCGV1jiN6hBEgf|H=G{5fDp*HwjxI|Y1K2(6& zgKrbe07qic661<6Ex?cgE~7t)%Hy*U7gwBr#Bb&eUUEP48~K?v8Oi4(e=sp8l3-X6 z!VP#4HuzVKco?EEsKx;a<`8ND6%ERb7n27Ni-1%n2I3QP<--7Lijv?2$m{p=H zLce%K3j&F^iLz~hObG%kDlSlgMA|0EU{Yt1%<|Mmml(oLLQE&XR4q_*8sNB#aguBh zBta}q;7#+NX;54(H%ozpIRKt~^F%o(ntkBOH^7%M;)O*=T8w3Q5@3w507L+*M_Usb zn}rskP)rI0yD;2RCh<4lq%3CR6^sPN?F$*q3e^cBGZO{NJ`2f#UZ7)((Lz`_%2EQySdSVy!s2rxyTa}PXR zRgKCEQ>^?-+3eC`@HBKJbxzLh-U2h0Mg(k%v9yMPUwAsD&DN zNMm5f8wv=@pvs19o?O_|Yt7dLHE_+sSet}70Ea5eskj!NWi)J-Vah6bqNkoJd9-Jq z2%dNlWwR|~Fo^99nPdnu6B=W13>k$_GUMcg_)vhrVX3|g5HY@EIWRj-#%?tW8DzlI zd7F*PFx=*CGnrFtDj=vT1O_Nk3kkeb^Erj?28z?nsM#)Wn~dCImbe!rV$#g@h8W%h zw0JxO9uM35%>jeF5YOo!+XzEFu4D`$hZes++ zSx~E7R{G7*2|{rQn;=QD6#7O;QfxD6fni%Q5*%^Rfdhzy7y$UX0wZD*8UY1+&9I?` zAyERsiYm~A(1E8g;+sqmmVg)s5}*)6Ds7&e*+<|OD*Q5zBd;?Gn6Qaa;V?yu2@s2$ zAW2mnh?ZbAFX(05Fp~w#FcJ*01gL%sIH3%0-;fHK&iGcgqQ(=U<(NmssJL?L=dQ(BOrquY;n}o+S{fjH5xOThkQ{s z7)cNwXB9F722u=M(|iMo$T3W4=i$C@FtLD6(2+OGFbjoXH5K7`>c-1GTAr|l!HS~b zAP8pB0tf&Q!n^;69DEKqQHf6xq3?krIVStK_P$Zxy5L6L_0t%TjR2fM! z<<4QV05D=Pagi!q4G9nkQWX+_o4|pt6^lX>a6({ZxGEAS65{uj#A!z05{v=`gix78 zx-qo?Ma~bHk8wl`6-20N5d={Z7(^m6a}jC~AzotkjbdcWQ8L+x{7uuCUV5SqHosim^*MjeXXf=^{(PV2Fl)7|+fkGJ#$)SUNjqjI?g5y; z6KaKT#Etf~GY8^L6V~;7f9fV3UY|1FJc`5UV-W#_iM?jw2p2aAz7i^BTYyw~h={vt zdQA={xR{8T#Xv{AV-)idrs&NB&1X^4>F;~ne$mOAp1G>YV;}I>>B)@j#FiwVa|xFh z9#-sx#nWeIpuEq@v?io;j~}f6#FmN{g49TSjHc*;&Iad&1=kzmuKDRV_ex%yOErryp zlI&E0{bmK~kFT#!BB_2)J1RRIt(kJ*6o8&qKTE-plw-VQmvA8QH99<-h|asf6dh)M zou3d6htyNej^YNq2a`iy9l+{~HN!P_xs z#e^{p$u`_~GZwc`UmkBJP`w{oKtm&j^Mwn-OX@S@HuljOt@yD^4 z_1QFdsk6JLo8-x9`k3}0`v`JsGG$zBmQFMLMP32+H8Y%=T_Os$-&}Gz`gifoOsVOd zWUUuGZSnV-{*;+{AS3w5KTCb)Y&me`DC|FNuX?ih2@U~_)#>SHv-~CQ%8_V9GEfsxGN#v*k6^#*Hy>| zv?+&q3Zuotnv#J2vGsdw7pj?hlaWeDgFbS`*!^yPV1)#@Xf-H#sp}_lvlgv~36PFK z7XsrmKDI}7^FUE+0R#LTa#1PoRvkwm||)9li=R@Ca3BDQU*e>ERzi%*%( z?8}PRBLpJvVeRckFv*WTY_?M#?WY_60PIa-Vb6-xZc*eL+cINhBKZfgm~%cXfzXrc-h?2sIq5J*FLXMT<|+6_7Ke$m6(zI#BzP6uU5S;3V#i#o=D)$Auodqf>f{$ z$=>WtrIRC-G_Cx#R!5tOVMn~pm@3zjBRe^VYBwJ-kC<;!k-T#baxD~w1c-G^7}2_o zt3?TROAmeo{N}~2*L|ucqMPP44;L|NU3mnVk6MlZzqp-KTj*kTUAZmPs<7cW?>c5p z`hUy}HJ39k{!cqiSekI0bWo3UFu-RpHHYmjf-Py24~XX${%X7`72$o$eD3I zCo0oRtk0$_akXv~W=zkKi#rlelP}?44Ho|Z&0^c%aF3=1yF-k`U!>Sah;A*;y{@t} z=y)8z`v^?Y;>h`wDq9(+7&Q5@;dUFGSh4!K0%b(SrVWvOQIEdm1e)wbZB2yAyaqwE z9tgg9g^M-&Oqmy8rn4RH`^IvJpbEL0F5ceozWXd{!K3wnZpO3;YBebtJwhtDU?PTc z7NKMqb_>1H@ah<%m)$WtE3)3|GYf)68LHIkF=fVZqA`2letwgxYqR?J)iN@Q6-I=^ z)3qH_r>+)rxlKO>ni zdS0IxfC10AokvbFW(=a2AhGm5L?U)ELpK0T7e~vInfMb=q{oG6R&Ajin}7%vN5Rk; z*Yj3H!Vh7&qaG(r(u|prSkkRClm3Er9TvYX3}a7}5YNdbwug1a?H9QM4W)M%rV$PNrK{^1SSIk@$IK%W zkPnn71PPA_VE+I=D^zY_%8QTZAhRAh?f01uMg$C?)p9(;>LxHs?Wv^d1xD87Odf;L zLaN`&N`qf(nDsi%Myo!R^z52)gbb@;xffv1#5uJX{{Sb6S;i&A0`BjAZ|g91E}{Pb z0nhwaJ94Ur@)Y+MI)1A^t&bwJ5CaEa+_gHc%z&suJx`r4!w%!&q|u#DVxZLvnogak z!CY=IRN@yEGC17a~k_hNxv$C+sx^RxU}l-4QD)&$czldtxVW<<^+OAVthx)xiu^Q07uav?^XcY z`_D&E`EXzffN2T=l~aMc$sT51FHh-I!Sb=l+eahi^E%Q8)8NR2nsG$;=4Md2oPB1C zKcTC{{w|N$%lV?1&H#^-nC;9YOl>Sqt((&6`Pg?Ww153^4{6hI`i}fvfWO{i!?!6> zu&7Gfdy4HpGlwSQi-io!#{$8lC==YpHD);^lP<|VCPrPi=45X0k#Kje&;mS&0fxA_ z#A?1H6EUXcCwK%+7IaL9dmp56iSt-de&lg8v0Uw548nsr0ByeJyiDgF9D?52W|yeu zRKCNwzcWkKacdAGV+8$Xr%J7-1%=tVKH_z3Lmst+Gewux(&2w4dHaqf!fZzdRH&#c z;rNp+X)vemd;Y>VY50E?z9H{!f2R`$ml^60l{F#ugLwU>bODK}<`czO7= z^v(Ok$mx4Y7YQWXIUR_zI(_d_J>unN>EAg7h813C;w)c2ES2AnheXMGS6lrr{{Xpm zWlV}8?*hRpekFh7;9q1X`oi>>7MD|-Iy;k?8$m@qtjfSGbGOy!86Ov$%* z1CN0>@X>E~2n~Bp3I)(*S2RGMh_Rz+QIvj`9}bGt`IqRX3A#HNd-jFmvqDV#KyO;V zOky75bj>zQT1{To+Qzmq_uD!u>o8+w*S^+wqy_t*q||CKXT)0_(y?Aa2En5_+s#~K zV(L}2d6qbUTt(&u;u>3nI8+K(v4bK2-!CNp0AU%h>}m(aTw1R1nP>h%1i-GOQ5?)` znY45pxgF=g&U`oNr@VOJbr7{wdozhWU3{{SF> zPM@bN;f>Tx?lI#C2XS{g{>JHO!1F@K*vk2C#OTBPPEY>;U;Bx)!m*(y0!V>j0)8M` z)nh*CHj`#_Y|eClDh6s=1~z?X=J27?e2zYL_NmlR7A7+Mu#(-@4GX!G z85SxwGjM@(90G7e0>JmV>A56a$zeb%^%XGW2pl-IaaUc83!-e8K=&c0wKVCCRY%S{ z)NW#k&dddynAXUe3>2HAWKE$?HlT!e;rDxqrqvvd$1a_5@$%p56l<}acOk55I{*cJ zc|Q({pTNl9x$FBt3^OES%-zgJ5Wf?yW8a{2`v_=fK+aXleP)mHYIC^7v5jwXD|FQ2 zA-5;J@O#C`2-?#oA!fM-6y>;@Ufg793Gj2!I=cr;#y+BZ-$8VO|8uj~3%c z>MH6w`A}d1th0~_~d*r_t&0dRk=|>{U?&&b60w;uS}hKh_@8r(+oOctP^Ef2;&XjxKsY#+b|k=4=a- z3#aZbF8k@cB$`4_+H`c3SuR|pKZ zRAUXK2x_4h-W0fTh^rYTaTJv>Q>|_9GwIY2cJO1NM&McRV9c2ECd(jh@MaA%zFHuP z8;S8XT2}Pk)fSg;E8c!t3XPO+`Hyqt)Y53Sfx3l>q|v(MC2^nuEty)#Zvwuebxj_# zHl#Kr-n2iY9CIBC!XUes$ZocM~9B)kE5h)T<^y2mpcNXtjYiZ|9I< z)@d@>3~jsk6*PI1*7Tbi?Xy?hU$lI?7gE_Yi1-&D7w5*>_MJDbwxdg^$oLc-G*e}O zO;84CI-}*v{<E?#;WMFW?)uWuc~(=cNNOcxt}uX zjzUAsFeOx=c#N}b zpe6>OW#__NyPRT;SvFEgXGws|L`VL5kiUu*W8ewJ+Q#n!!5CeAxY*oqtwz1f8HTgq)hxH>E zt4NHel1QB&4nJ4|;4mYLol`{m&XnkeoG>dieLFS+#~`OXcs1^4Qr7x-iY@cp#xtbp zw>iwih2ehleJn0+U6>*5E-KfU3@mC>7K*9_*XdVNrzz*UpJN>vS(Sw_G(^&BvT3si zAJk0`P)EYK6{dXJ{2gL}b7U2>!L#~eE+6=#Dbz7@jDHKj`ibbS!Y*nwt!>4FKP2{P zV(9+>PVPCI@gj?(GHURX*qMi4rbRz1&2DUY*-D`Xx#B(p+!;rS%8+KS890M2Zi;<8 z>in@h5KR2PudRK&spQnt>BD6h+Z!4_CrRjuhjvCb&DhOTYDWAt4c9k9YqfZA;jQ7C ztNTpZS=^FtX|(UC%n^U7_7O3zG*nSRMG47@vV<){Hc4&q+sxv=7dp32IaKDxK6M{3 z_YjMk4xyJxmd7f4tihiis}Xz^ziFU+8KHdZi62qvCUW~hZsl*VgFQQpfGFM-XxSk9 z`$yRNhfV!}vGp-D)whr99rW19T!4FnGw3whi)=0~XVT`x^uUXXRQB=S0Nv^vuJ9qQ zK!*yjnsr>5O6?cgYI<47;Lx$e&~$H0F8jX~Fle!;29!t4Kq-uK{{X4g_4qVsR5t9a zCT!1@iDMOA+$xJFu$mn*Y4HKwkLoel3A_k0iRwmaW&j|Eh>th%Hy9WQa`QT;Od|7P zU#qYCh(yurbLn!2Mj~kS-9M>%Ua%X~gU=kzRp|0IY#Lux^03|k@FHupxi!9s!ol|L zFI-NgsmPcIr^>MXLTA>6#-6TiiVq)94{Dljp{B^eac39cau52$nX(}nDZmiuuw+J{ zc;w$A9UiPcKvha{w2Qm?%}%-S>X#c~W4H=F=25aL$GjNL%{e&o8{#5wHxX4wGcHZS zmydHgpI^nMQ;P*Nd1;?MOt}lYSusPq1yD&nfSMfwU`r$%hq?Cp2*Af|kwKir6Kn`z z0*3^^Y7+#hd`|L>z{aOg>3fOEgmdLR{?Lv{sxckWfm1|Im-w0Sl}!APd8gFi)G9U{ zlml4<&G<7r<$Nx_mVqv=5H4Vcx4%^>6mo_{{Tz=@BZeeNuN&Dk$%nK z{4|>FPMO1E$X0a!0L9pyLT6os{{S$VbloGUV&5HwW1A})TCUSJ@ ztZW`tkLpu8r$f|Y%EtnSQg|0tH9a>{-2)aZXLF+h!{}#9>DuwD!MHN0Yv-_<-k7<<4OuajfXsRFV>Yfw*v&uU4yAznxrrXfn4gMuRtw_B z$KPyE#YwdP0EJ!Ae-{DCz%FI{TIH>A0W}|rHQ6jF3MO4%Y>jN@7lr1ZL8{M0F4g_b zz?yEGg9!wU?e2RIu!TwF&9b0UAP_7#gb51Qz%<;_gkwz$PVq#@M%jjP3>Q&NPX1w` z9n`HA1bZ2qrD-zqprQIqofA~NqpOeXW=#&aAL_v0&|Ev0xFQUd=5CwBQIWq&vHJ;+ zrt9){!bjD(n7SKx%a{+MiHAd^#anTU_dJ*f!?^eXejr&w0t78CU&5|(ATgHW<8LyD zh;9_Pv;=1YV`~$56L>I_IB0|53@WYM1NV=mz?T%wtg)RNWooc}amv93V zTnP<81TD;0oRKPw0cvFscY>fI5)3%Wh?U|C_J-kUahmQCC_*8}0)QfwF?&EFHwH6& z(cA?U0XvK&+zexOn1?Wd0jOBQ&2r64i#PGazGmjA1;dUi!mtPgVq&xg!QwaC9$*F) z1_hTkv#i+nR{~dvq-}+lY*vP$Xgfet1!FcvQxzZr1)F1_Gt;9I>J>1dg(VT<16)EZTtB7@5C|$W2uY|phQv^6 zJpmMgB9IJff#%^D+2RX|u`!4cOt-o#TFuo97@@8<^$_K86E;X4%=xNrfSJ0ds3FL* z)=?eAYp4P36dS664b7%(F>#V7rbMn_RuHAETvO6FJtI8>aA7njpl&Xmj5s2pfk2rN zU^Ob{$f6u&glq=jN{Bd)3<_mK4Z(0B_J*Uo+pTY5AetE|Jef2Id%X5 literal 0 HcmV?d00001 diff --git a/assets/images/favicon.ico b/assets/images/favicon.ico new file mode 100644 index 0000000..7d936e0 --- /dev/null +++ b/assets/images/favicon.ico @@ -0,0 +1,312 @@ + + + + + + + + + Tom's Java Jive | Premium Coffee Beans & Fresh Roasted Coffee | Weatherford TX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ + + + + + +

+ Made with Emergent +

+
+ + + diff --git a/assets/images/friends-coffee.jpg b/assets/images/friends-coffee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..16f770e7b32a636d95ff845978ae6f1353517e4b GIT binary patch literal 84160 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

M45BaP`GJ%;vtdq9O6XyLZL;|FobvX5fRSF^kA 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 ~G0QCGA@oxmj+!J3Ml_Zwr7H@QR&&(= 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 literal 0 HcmV?d00001 diff --git a/assets/images/logo-icon.png b/assets/images/logo-icon.png new file mode 100644 index 0000000..7d936e0 --- /dev/null +++ b/assets/images/logo-icon.png @@ -0,0 +1,312 @@ + + + + + + + + + Tom's Java Jive | Premium Coffee Beans & Fresh Roasted Coffee | Weatherford TX + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +

+ + + + + + +

+ Made with Emergent +

+
+ + + diff --git a/assets/images/logo-icon.svg b/assets/images/logo-icon.svg new file mode 100644 index 0000000..5c768c2 --- /dev/null +++ b/assets/images/logo-icon.svg @@ -0,0 +1,13 @@ + + + + + + + + + + + + + \ No newline at end of file diff --git a/assets/images/logo.png b/assets/images/logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5680c6af2ad9b48e2a2cc510d62d85e37b5b65f6 GIT binary patch literal 137074 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

XHu7s2#yPeS(|*Ng{C4!R4Uc*=r}u39 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 literal 0 HcmV?d00001 diff --git a/assets/images/logo.svg b/assets/images/logo.svg new file mode 100644 index 0000000..b4fd11a --- /dev/null +++ b/assets/images/logo.svg @@ -0,0 +1,24 @@ + + + + + + + + + + + + + + + + + + + + + + Tom's + Java Jive + \ No newline at end of file diff --git a/assets/images/placeholder-product.svg b/assets/images/placeholder-product.svg new file mode 100644 index 0000000..d6a9813 --- /dev/null +++ b/assets/images/placeholder-product.svg @@ -0,0 +1,7 @@ + + + + + + Product Image + \ No newline at end of file diff --git a/assets/images/premium-coffee.jpg b/assets/images/premium-coffee.jpg new file mode 100644 index 0000000000000000000000000000000000000000..4632c9eb46bc3c486d3f7604d380c29e424806a5 GIT binary patch literal 65998 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

9@o6-XL~gN#$|G8BLSI< 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 literal 0 HcmV?d00001 diff --git a/assets/js/main.js b/assets/js/main.js new file mode 100644 index 0000000..17eb693 --- /dev/null +++ b/assets/js/main.js @@ -0,0 +1,394 @@ +/** + * Tom's Java Jive - Main JavaScript + */ + +// ================================ +// Toast Notifications +// ================================ +const ToastManager = { + container: null, + + init() { + if (!this.container) { + this.container = document.createElement('div'); + this.container.className = 'toast-container'; + document.body.appendChild(this.container); + } + }, + + show(message, type = 'success', duration = 3000) { + this.init(); + + const toast = document.createElement('div'); + toast.className = `toast ${type}`; + toast.innerHTML = ` + + ${message} + `; + + this.container.appendChild(toast); + + setTimeout(() => { + toast.style.animation = 'slideIn 0.3s ease reverse'; + setTimeout(() => toast.remove(), 300); + }, duration); + }, + + success(message) { this.show(message, 'success'); }, + error(message) { this.show(message, 'error'); }, + info(message) { this.show(message, 'info'); } +}; + +// ================================ +// Cart Functions +// ================================ +async function addToCart(productId, quantity = 1) { + try { + const response = await fetch('/api/cart.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'add', + product_id: productId, + quantity: parseInt(quantity) + }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + return; + } + + // Update cart count in header + updateCartCount(data.cart_count); + ToastManager.success(data.message || 'Added to cart!'); + + } catch (error) { + console.error('Add to cart error:', error); + ToastManager.error('Failed to add item to cart'); + } +} + +async function updateCartItem(productId, quantity) { + try { + const response = await fetch('/api/cart.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'update', + product_id: productId, + quantity: parseInt(quantity) + }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + return; + } + + // Update cart count + updateCartCount(data.cart_count); + + // Reload page if cart is now empty or update display + if (data.cart_count === 0) { + location.reload(); + } else if (typeof updateCartDisplay === 'function') { + updateCartDisplay(data); + } else { + location.reload(); + } + + } catch (error) { + console.error('Update cart error:', error); + ToastManager.error('Failed to update cart'); + } +} + +async function removeFromCart(productId) { + try { + const response = await fetch('/api/cart.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ + action: 'remove', + product_id: productId + }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + return; + } + + updateCartCount(data.cart_count); + + // Remove item from DOM or reload + const cartItem = document.querySelector(`.cart-item[data-product-id="${productId}"]`); + if (cartItem) { + cartItem.style.animation = 'slideIn 0.3s ease reverse'; + setTimeout(() => { + cartItem.remove(); + if (data.cart_count === 0) { + location.reload(); + } + }, 300); + } else { + location.reload(); + } + + ToastManager.success('Item removed from cart'); + + } catch (error) { + console.error('Remove from cart error:', error); + ToastManager.error('Failed to remove item'); + } +} + +function updateCartCount(count) { + const cartCountEl = document.querySelector('.cart-count'); + if (cartCountEl) { + if (count > 0) { + cartCountEl.textContent = count; + cartCountEl.style.display = 'flex'; + } else { + cartCountEl.style.display = 'none'; + } + } else if (count > 0) { + const cartLink = document.querySelector('.cart-link'); + if (cartLink) { + const badge = document.createElement('span'); + badge.className = 'cart-count'; + badge.textContent = count; + cartLink.appendChild(badge); + } + } +} + +// ================================ +// Quantity Selectors +// ================================ +document.addEventListener('DOMContentLoaded', function() { + // Quantity +/- buttons + document.querySelectorAll('.qty-minus').forEach(btn => { + btn.addEventListener('click', function() { + const input = this.closest('.quantity-selector').querySelector('.qty-input'); + const current = parseInt(input.value) || 1; + if (current > 1) { + input.value = current - 1; + input.dispatchEvent(new Event('change')); + } + }); + }); + + document.querySelectorAll('.qty-plus').forEach(btn => { + btn.addEventListener('click', function() { + const input = this.closest('.quantity-selector').querySelector('.qty-input'); + const current = parseInt(input.value) || 1; + const max = parseInt(input.max) || 999; + if (current < max) { + input.value = current + 1; + input.dispatchEvent(new Event('change')); + } + }); + }); + + // Add to cart buttons + document.querySelectorAll('.add-to-cart-btn').forEach(btn => { + btn.addEventListener('click', function(e) { + if (!this.dataset.productId) return; + + e.preventDefault(); + const productId = this.dataset.productId; + const qtyInput = document.querySelector('.qty-input'); + const quantity = qtyInput ? parseInt(qtyInput.value) : 1; + + addToCart(productId, quantity); + }); + }); + + // Mobile menu toggle + const menuToggle = document.querySelector('.mobile-menu-toggle'); + const navMenu = document.querySelector('.nav-menu'); + if (menuToggle && navMenu) { + menuToggle.addEventListener('click', function() { + navMenu.classList.toggle('active'); + this.querySelector('i').classList.toggle('fa-bars'); + this.querySelector('i').classList.toggle('fa-times'); + }); + } + + // Confirm delete dialogs + document.querySelectorAll('[data-confirm]').forEach(el => { + el.addEventListener('click', function(e) { + if (!confirm(this.dataset.confirm)) { + e.preventDefault(); + } + }); + }); + + // Auto-hide alerts + document.querySelectorAll('.alert').forEach(alert => { + setTimeout(() => { + alert.style.opacity = '0'; + alert.style.transform = 'translateY(-10px)'; + setTimeout(() => alert.remove(), 300); + }, 5000); + }); +}); + +// ================================ +// Form Helpers +// ================================ +function serializeForm(form) { + const formData = new FormData(form); + const data = {}; + formData.forEach((value, key) => { + data[key] = value; + }); + return data; +} + +async function submitForm(form, url, method = 'POST') { + const data = serializeForm(form); + + try { + const response = await fetch(url, { + method, + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify(data) + }); + + return await response.json(); + } catch (error) { + console.error('Form submit error:', error); + throw error; + } +} + +// ================================ +// Format Helpers +// ================================ +function formatCurrency(amount) { + return '$' + parseFloat(amount).toFixed(2); +} + +function formatDate(date) { + return new Date(date).toLocaleDateString('en-US', { + year: 'numeric', + month: 'short', + day: 'numeric' + }); +} + +// ================================ +// Loading States +// ================================ +function setLoading(button, isLoading) { + if (isLoading) { + button.dataset.originalText = button.innerHTML; + button.innerHTML = ' Loading...'; + button.disabled = true; + } else { + button.innerHTML = button.dataset.originalText || button.innerHTML; + button.disabled = false; + } +} + +// ================================ +// Image Preview +// ================================ +function previewImage(input, previewId) { + const preview = document.getElementById(previewId); + if (!preview) return; + + if (input.files && input.files[0]) { + const reader = new FileReader(); + reader.onload = function(e) { + preview.src = e.target.result; + preview.style.display = 'block'; + }; + reader.readAsDataURL(input.files[0]); + } +} + +// ================================ +// Newsletter Subscription +// ================================ +document.querySelectorAll('.newsletter-form').forEach(form => { + form.addEventListener('submit', async function(e) { + e.preventDefault(); + + const email = this.querySelector('input[type="email"]').value; + const button = this.querySelector('button'); + + setLoading(button, true); + + try { + const response = await fetch('/api/subscribe.php', { + method: 'POST', + headers: { 'Content-Type': 'application/json' }, + body: JSON.stringify({ email }) + }); + + const data = await response.json(); + + if (data.error) { + ToastManager.error(data.error); + } else { + ToastManager.success('Thank you for subscribing!'); + this.reset(); + } + } catch (error) { + ToastManager.error('Subscription failed. Please try again.'); + } finally { + setLoading(button, false); + } + }); +}); + +// ================================ +// Debounce Helper +// ================================ +function debounce(func, wait) { + let timeout; + return function executedFunction(...args) { + const later = () => { + clearTimeout(timeout); + func(...args); + }; + clearTimeout(timeout); + timeout = setTimeout(later, wait); + }; +} + +// ================================ +// Local Storage Helpers +// ================================ +const Storage = { + get(key, defaultValue = null) { + try { + const item = localStorage.getItem(key); + return item ? JSON.parse(item) : defaultValue; + } catch { + return defaultValue; + } + }, + + set(key, value) { + try { + localStorage.setItem(key, JSON.stringify(value)); + } catch (e) { + console.error('Storage error:', e); + } + }, + + remove(key) { + localStorage.removeItem(key); + } +}; diff --git a/cart.php b/cart.php new file mode 100644 index 0000000..3acfcdb --- /dev/null +++ b/cart.php @@ -0,0 +1,172 @@ + $quantity) { + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock, images FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if ($product) { + $images = json_decode($product['images'] ?? '[]', true); + $product['image'] = !empty($images) ? $images[0] : '/assets/images/placeholder-product.svg'; + $product['quantity'] = min($quantity, $product['stock']); + $product['unit_price'] = $product['sale_price'] ?? $product['price']; + $product['total'] = $product['unit_price'] * $product['quantity']; + $subtotal += $product['total']; + $cartItems[] = $product; + } +} + +// Get shipping settings +$shippingSettings = getSetting('shipping', [ + 'flat_rate_enabled' => true, + 'flat_rate_amount' => 5.99, + 'free_shipping_threshold' => 50 +]); + +$shippingCost = 0; +if ($shippingSettings['flat_rate_enabled'] ?? true) { + if ($subtotal >= ($shippingSettings['free_shipping_threshold'] ?? 50)) { + $shippingCost = 0; + } else { + $shippingCost = $shippingSettings['flat_rate_amount'] ?? 5.99; + } +} + +$total = $subtotal + $shippingCost; +?> + +

+
+

Shopping Cart

+ + +
+ +
+ + +
+
+
+ +
+ + <?= htmlspecialchars($item['name']) ?> + +
+ +

+
+

each

+
+ +
+ + + +
+ +
+

+ +
+
+ +
+
+
+ + +
+
+

Order Summary

+
+
+
+ Subtotal + +
+
+ Shipping + + + FREE + + + + +
+ + 0 && isset($shippingSettings['free_shipping_threshold'])): + $remaining = $shippingSettings['free_shipping_threshold'] - $subtotal; + ?> +

+ + Add more for FREE shipping! +

+ + +
+ +
+ Total + +
+ + + Proceed to Checkout + + + + Continue Shopping + +
+
+
+ +
+
+ + + + diff --git a/checkout.php b/checkout.php new file mode 100644 index 0000000..3eb5951 --- /dev/null +++ b/checkout.php @@ -0,0 +1,338 @@ + $quantity) { + $product = db()->fetch( + "SELECT product_id, name, price, sale_price, stock, images FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + + if ($product) { + $images = json_decode($product['images'] ?? '[]', true); + $product['image'] = !empty($images) ? $images[0] : '/assets/images/placeholder-product.svg'; + $product['quantity'] = min($quantity, $product['stock']); + $product['unit_price'] = $product['sale_price'] ?? $product['price']; + $product['total'] = $product['unit_price'] * $product['quantity']; + $subtotal += $product['total']; + $cartItems[] = $product; + } +} + +// Get shipping settings +$shippingSettings = getSetting('shipping', [ + 'flat_rate_enabled' => true, + 'flat_rate_amount' => 5.99, + 'free_shipping_threshold' => 50 +]); + +$shippingCost = 0; +if ($shippingSettings['flat_rate_enabled'] ?? true) { + if ($subtotal >= ($shippingSettings['free_shipping_threshold'] ?? 50)) { + $shippingCost = 0; + } else { + $shippingCost = $shippingSettings['flat_rate_amount'] ?? 5.99; + } +} + +$total = $subtotal + $shippingCost; + +// Get Stripe publishable key +$stripeKey = STRIPE_PUBLISHABLE_KEY; + +$errors = []; + +// Handle form submission +if ($_SERVER['REQUEST_METHOD'] === 'POST') { + // Validate form + $email = trim($_POST['email'] ?? ''); + $name = trim($_POST['name'] ?? ''); + $phone = trim($_POST['phone'] ?? ''); + $address = trim($_POST['address'] ?? ''); + $city = trim($_POST['city'] ?? ''); + $state = trim($_POST['state'] ?? ''); + $zip = trim($_POST['zip'] ?? ''); + + if (empty($email)) $errors['email'] = 'Email is required'; + if (empty($name)) $errors['name'] = 'Name is required'; + if (empty($address)) $errors['address'] = 'Address is required'; + if (empty($city)) $errors['city'] = 'City is required'; + if (empty($state)) $errors['state'] = 'State is required'; + if (empty($zip)) $errors['zip'] = 'ZIP code is required'; + + if (empty($errors)) { + // Create order + $orderId = generateId('ord_'); + $orderNumber = generateOrderNumber(); + + // Get or create customer + $customerId = null; + if ($customer) { + $customerId = $customer['customer_id']; + } else { + $customerId = CustomerAuth::createGuest($email, $name, $phone); + } + + // Prepare order items + $orderItems = []; + foreach ($cartItems as $item) { + $orderItems[] = [ + 'product_id' => $item['product_id'], + 'name' => $item['name'], + 'price' => $item['unit_price'], + 'quantity' => $item['quantity'], + 'total' => $item['total'] + ]; + } + + // Insert order + db()->insert('orders', [ + 'order_id' => $orderId, + 'order_number' => $orderNumber, + 'customer_id' => $customerId, + 'customer_email' => $email, + 'customer_name' => $name, + 'customer_phone' => $phone, + 'items' => json_encode($orderItems), + 'subtotal' => $subtotal, + 'shipping_cost' => $shippingCost, + 'total' => $total, + 'shipping_address' => json_encode([ + 'address' => $address, + 'city' => $city, + 'state' => $state, + 'zip' => $zip, + 'country' => 'USA' + ]), + 'shipping_method' => 'standard', + 'payment_method' => 'stripe', + 'payment_status' => 'pending', + 'order_status' => 'pending' + ]); + + // Insert order items for reporting + foreach ($orderItems as $item) { + db()->insert('order_items', [ + 'order_id' => $orderId, + 'product_id' => $item['product_id'], + 'name' => $item['name'], + 'price' => $item['price'], + 'quantity' => $item['quantity'], + 'total' => $item['total'] + ]); + } + + // Reduce stock + foreach ($cartItems as $item) { + db()->query( + "UPDATE products SET stock = stock - :qty WHERE product_id = :id", + ['qty' => $item['quantity'], 'id' => $item['product_id']] + ); + } + + // Store order ID for payment + $_SESSION['pending_order_id'] = $orderId; + + // Redirect to payment page + redirect('/payment.php?order=' . $orderId); + } +} + +require_once __DIR__ . '/includes/header.php'; +?> + +
+
+

Checkout

+ +
+
+ + +
+ +
+
+

Contact Information

+
+
+ +

Logged in as

+ + + +
+ + + + + +
+ +
+ + + + + +
+ +
+ + +
+ +

+ Already have an account? Sign in +

+ +
+
+ + +
+
+

Shipping Address

+
+
+ + +
+ + + + + +
+ +
+
+ + + + + +
+ +
+ + + + + +
+ +
+ + + + + +
+
+
+
+ + +
+
+

Order Notes (Optional)

+
+
+ +
+
+
+ + +
+
+

Order Summary

+
+
+ +
+ +
+ +
+

+

+ x +

+
+
+ +
+
+ +
+ + +
+ Subtotal + +
+
+ Shipping + + + FREE + + + + +
+ +
+ +
+ Total + +
+ + + + + Back to Cart + + +

+ Secure checkout powered by Stripe +

+
+
+
+
+
+
+ + diff --git a/config/config.php b/config/config.php new file mode 100644 index 0000000..471c53b --- /dev/null +++ b/config/config.php @@ -0,0 +1,62 @@ + PDO::ERRMODE_EXCEPTION, + PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC, + PDO::ATTR_EMULATE_PREPARES => false, +]); diff --git a/docs/DEPLOYMENT.md b/docs/DEPLOYMENT.md new file mode 100644 index 0000000..cdec1f2 --- /dev/null +++ b/docs/DEPLOYMENT.md @@ -0,0 +1,314 @@ +# Tom's Java Jive - PHP/MySQL Deployment Guide + +## cPanel FTP Deployment Instructions + +This guide covers deploying Tom's Java Jive to a cPanel shared hosting environment with FTP access only (no SSH/root). + +### Requirements + +- PHP 8.4+ +- MySQL 8.0+ +- FTP Client (FileZilla, Cyberduck, etc.) +- cPanel access for database creation + +--- + +## Step 1: Create MySQL Database in cPanel + +1. Log into your cPanel dashboard +2. Navigate to **MySQLยฎ Databases** +3. Create a new database: + - Database name: `tomsjavajive` (or your preferred name) + - Note the full database name (usually `cpaneluser_tomsjavajive`) +4. Create a database user: + - Username: (your choice) + - Password: (strong password) +5. Add user to database: + - Select the user and database + - Grant **ALL PRIVILEGES** +6. Note down your credentials: + - Database host: `localhost` (usually) + - Database name: (full name from step 3) + - Username: (full username from step 4) + - Password: (from step 4) + +--- + +## Step 2: Configure Application Settings + +### Edit `config/database.php` + +```php +define('DB_HOST', 'localhost'); +define('DB_NAME', 'cpaneluser_tomsjavajive'); // Your full database name +define('DB_USER', 'cpaneluser_dbuser'); // Your full database username +define('DB_PASS', 'your_secure_password'); // Your database password +``` + +### Edit `config/config.php` + +```php +define('SITE_NAME', "Tom's Java Jive"); +define('SITE_URL', 'https://yourdomain.com'); // Your actual domain +define('SITE_EMAIL', 'support@yourdomain.com'); + +// Set to 'production' for live site +define('ENVIRONMENT', 'production'); +define('DEBUG_MODE', false); + +// Stripe Keys (get from https://dashboard.stripe.com/apikeys) +define('STRIPE_SECRET_KEY', 'sk_live_xxxx'); // Use sk_test_ for testing +define('STRIPE_PUBLISHABLE_KEY', 'pk_live_xxxx'); +define('STRIPE_WEBHOOK_SECRET', 'whsec_xxxx'); + +// SendGrid (get from https://app.sendgrid.com/settings/api_keys) +define('SENDGRID_API_KEY', 'SG.xxxx'); +define('SENDER_EMAIL', 'noreply@yourdomain.com'); + +// Twilio (optional - get from https://www.twilio.com/console) +define('TWILIO_SID', ''); +define('TWILIO_AUTH_TOKEN', ''); +define('TWILIO_PHONE', ''); +``` + +--- + +## Step 3: Upload Files via FTP + +1. Connect to your server using FTP: + - Host: Your domain or ftp.yourdomain.com + - Port: 21 (or 22 for SFTP) + - Username: Your cPanel username + - Password: Your cPanel password + +2. Navigate to `public_html` (or your web root) + +3. Upload ALL files from the `tomsjavajive-php` folder: + ``` + /public_html/ + โ”œโ”€โ”€ admin/ + โ”œโ”€โ”€ api/ + โ”œโ”€โ”€ assets/ + โ”œโ”€โ”€ account/ + โ”œโ”€โ”€ config/ + โ”œโ”€โ”€ docs/ + โ”œโ”€โ”€ includes/ + โ”œโ”€โ”€ install/ + โ”œโ”€โ”€ pages/ + โ”œโ”€โ”€ index.php + โ”œโ”€โ”€ shop.php + โ”œโ”€โ”€ product.php + โ”œโ”€โ”€ cart.php + โ”œโ”€โ”€ checkout.php + โ”œโ”€โ”€ payment.php + โ”œโ”€โ”€ login.php + โ”œโ”€โ”€ register.php + โ”œโ”€โ”€ logout.php + โ””โ”€โ”€ ... (other files) + ``` + +4. Set file permissions (via FTP client or cPanel File Manager): + - All `.php` files: 644 + - All directories: 755 + - `uploads/` directory: 755 (create if not exists) + - `config/` directory: 755 + +--- + +## Step 4: Import Database Schema + +### Option A: Using phpMyAdmin (Recommended) + +1. In cPanel, open **phpMyAdmin** +2. Select your database from the left sidebar +3. Click the **Import** tab +4. Click **Choose File** and select `install/schema.sql` +5. Click **Go** to execute + +### Option B: Using MySQL command in cPanel Terminal (if available) + +```bash +mysql -u cpaneluser_dbuser -p cpaneluser_tomsjavajive < install/schema.sql +``` + +--- + +## Step 5: Create First Admin User + +After importing the schema, create your first admin user via phpMyAdmin: + +1. Open phpMyAdmin +2. Select your database +3. Click the **SQL** tab +4. Run this query (replace with your details): + +```sql +INSERT INTO admin_users (user_id, email, password_hash, name, is_admin, is_master, permissions) +VALUES ( + 'admin_001', + 'admin@yourdomain.com', + '$2y$12$xxxxx', -- Generate bcrypt hash (see below) + 'Admin', + 1, + 1, + '{"dashboard":true,"pos":true,"products":true,"orders":true,"customers":true,"settings_payment":true,"settings_shipping":true,"settings_email":true,"admin_management":true}' +); +``` + +**To generate password hash:** +Create a temporary PHP file called `generate_hash.php`: +```php + 12]); +?> +``` +Upload it, visit it in browser, copy the hash, then DELETE the file. + +--- + +## Step 6: Configure Stripe Webhook (Optional but Recommended) + +1. Go to [Stripe Dashboard > Webhooks](https://dashboard.stripe.com/webhooks) +2. Click **Add endpoint** +3. Set endpoint URL: `https://yourdomain.com/api/webhook.php` +4. Select events: + - `payment_intent.succeeded` + - `payment_intent.payment_failed` + - `charge.refunded` +5. Copy the **Signing secret** to your `config.php` + +--- + +## Step 7: Test Your Installation + +1. Visit `https://yourdomain.com` - Should show storefront +2. Visit `https://yourdomain.com/admin/` - Should show admin login +3. Login with your admin credentials +4. Add a test product +5. Test the checkout flow + +--- + +## Data Migration from MongoDB + +If you have existing data in MongoDB that needs to be migrated: + +### Prerequisites +- PHP with MongoDB extension (`pecl install mongodb`) +- Access to your MongoDB server + +### Running Migration +The migration script is located at `install/migrate_from_mongodb.php`. + +Since cPanel typically doesn't have MongoDB extension, you have two options: + +**Option A: Export/Import Manually** +1. Export MongoDB collections to JSON using `mongoexport` +2. Convert and import to MySQL using phpMyAdmin or custom scripts + +**Option B: Run Migration Locally** +1. Install PHP MongoDB extension locally +2. Connect to both databases +3. Run: `php migrate_from_mongodb.php [mongodb_url] [mongodb_dbname]` + +--- + +## Security Checklist + +Before going live: + +- [ ] Change default admin password +- [ ] Update `SITE_URL` in config.php +- [ ] Set `ENVIRONMENT` to 'production' +- [ ] Set `DEBUG_MODE` to false +- [ ] Configure real Stripe keys (not test keys) +- [ ] Configure SendGrid for emails +- [ ] Delete `install/` folder after setup +- [ ] Set up SSL certificate (HTTPS) +- [ ] Enable Stripe webhook +- [ ] Test payment flow end-to-end + +--- + +## Troubleshooting + +### "Database connection failed" +- Check database credentials in `config/database.php` +- Verify database exists in cPanel +- Ensure user has privileges on the database + +### "500 Internal Server Error" +- Check `.htaccess` file exists +- View error logs in cPanel > Error Log +- Temporarily enable `DEBUG_MODE` in config.php + +### "Blank page" +- Enable PHP error display temporarily +- Check PHP version (requires 8.4+) +- View Apache/PHP error logs + +### "Session errors" +- Ensure `session.save_path` is writable +- Check `sessions/` folder permissions + +### "Payment not working" +- Verify Stripe keys are correct +- Check browser console for JS errors +- Verify webhook endpoint is accessible + +--- + +## File Structure Reference + +``` +tomsjavajive-php/ +โ”œโ”€โ”€ admin/ # Admin panel +โ”‚ โ”œโ”€โ”€ assets/ # Admin CSS/JS +โ”‚ โ”œโ”€โ”€ includes/ # Admin header/footer +โ”‚ โ”œโ”€โ”€ index.php # Dashboard +โ”‚ โ”œโ”€โ”€ products.php # Product management +โ”‚ โ”œโ”€โ”€ orders.php # Order management +โ”‚ โ””โ”€โ”€ ... +โ”œโ”€โ”€ api/ # API endpoints +โ”‚ โ”œโ”€โ”€ cart.php +โ”‚ โ”œโ”€โ”€ products.php +โ”‚ โ”œโ”€โ”€ orders.php +โ”‚ โ””โ”€โ”€ webhook.php # Stripe webhook +โ”œโ”€โ”€ assets/ # Public assets +โ”‚ โ”œโ”€โ”€ css/ +โ”‚ โ”œโ”€โ”€ js/ +โ”‚ โ””โ”€โ”€ images/ +โ”œโ”€โ”€ account/ # Customer account pages +โ”œโ”€โ”€ config/ # Configuration files +โ”‚ โ”œโ”€โ”€ config.php # Main config +โ”‚ โ””โ”€โ”€ database.php # DB credentials +โ”œโ”€โ”€ includes/ # Shared includes +โ”‚ โ”œโ”€โ”€ auth.php +โ”‚ โ”œโ”€โ”€ db.php +โ”‚ โ”œโ”€โ”€ functions.php +โ”‚ โ”œโ”€โ”€ header.php +โ”‚ โ””โ”€โ”€ footer.php +โ”œโ”€โ”€ install/ # Installation files +โ”‚ โ”œโ”€โ”€ schema.sql # Database schema +โ”‚ โ””โ”€โ”€ migrate_from_mongodb.php +โ”œโ”€โ”€ index.php # Homepage +โ”œโ”€โ”€ shop.php # Shop page +โ”œโ”€โ”€ product.php # Product detail +โ”œโ”€โ”€ cart.php # Shopping cart +โ”œโ”€โ”€ checkout.php # Checkout +โ””โ”€โ”€ payment.php # Stripe payment +``` + +--- + +## Support + +For issues with this deployment: +1. Check the troubleshooting section above +2. Review error logs in cPanel +3. Verify all configuration values are correct + +--- + +*Last updated: December 2025* +*PHP Version: 8.4.19 | MySQL Version: 8.0* diff --git a/includes/auth.php b/includes/auth.php new file mode 100644 index 0000000..d39e68c --- /dev/null +++ b/includes/auth.php @@ -0,0 +1,284 @@ +fetch( + "SELECT * FROM admin_users WHERE email = :email", + ['email' => strtolower($email)] + ); + + if (!$admin || !verifyPassword($password, $admin['password_hash'])) { + return false; + } + + // Update last login + db()->update('admin_users', + ['last_login' => date('Y-m-d H:i:s')], + 'user_id = :id', + ['id' => $admin['user_id']] + ); + + // Set session + $_SESSION['admin'] = [ + 'user_id' => $admin['user_id'], + 'email' => $admin['email'], + 'name' => $admin['name'], + 'is_master' => (bool)$admin['is_master'], + 'permissions' => json_decode($admin['permissions'] ?? '[]', true) + ]; + + // Regenerate session ID for security + session_regenerate_id(true); + + return true; + } + + public static function logout() { + unset($_SESSION['admin']); + session_regenerate_id(true); + } + + public static function isLoggedIn() { + return isset($_SESSION['admin']['user_id']); + } + + public static function getUser() { + return $_SESSION['admin'] ?? null; + } + + public static function require() { + if (!self::isLoggedIn()) { + if (isAjax()) { + jsonResponse(['error' => 'Unauthorized'], 401); + } + $_SESSION['admin_redirect'] = currentUrl(); + redirect('/admin/login.php'); + } + } + + public static function hasPermission($permission) { + $admin = self::getUser(); + if (!$admin) return false; + if ($admin['is_master']) return true; + return in_array($permission, $admin['permissions'] ?? []); + } + + public static function register($email, $password, $name = null, $isMaster = false) { + $userId = generateId('admin_'); + + db()->insert('admin_users', [ + 'user_id' => $userId, + 'email' => strtolower($email), + 'password_hash' => hashPassword($password), + 'name' => $name ?? $email, + 'is_admin' => 1, + 'is_master' => $isMaster ? 1 : 0 + ]); + + return $userId; + } +} + +/** + * Customer Authentication + */ +class CustomerAuth { + + public static function login($email, $password) { + $customer = db()->fetch( + "SELECT * FROM customers WHERE email = :email AND password_hash IS NOT NULL", + ['email' => strtolower($email)] + ); + + if (!$customer || !verifyPassword($password, $customer['password_hash'])) { + return false; + } + + // Set session + $_SESSION['customer'] = [ + 'customer_id' => $customer['customer_id'], + 'email' => $customer['email'], + 'name' => $customer['name'] + ]; + + session_regenerate_id(true); + return true; + } + + public static function logout() { + unset($_SESSION['customer']); + session_regenerate_id(true); + } + + public static function isLoggedIn() { + return isset($_SESSION['customer']['customer_id']); + } + + public static function getUser() { + return $_SESSION['customer'] ?? null; + } + + public static function getFullUser() { + if (!self::isLoggedIn()) return null; + + return db()->fetch( + "SELECT customer_id, email, name, phone, shipping_address, billing_address, + wallet_balance, reward_points, addresses, preferences, password_hash, created_at + FROM customers WHERE customer_id = :id", + ['id' => $_SESSION['customer']['customer_id']] + ); + } + + public static function require() { + if (!self::isLoggedIn()) { + if (isAjax()) { + jsonResponse(['error' => 'Unauthorized'], 401); + } + $_SESSION['redirect_after_login'] = currentUrl(); + redirect('/login.php'); + } + } + + public static function register($email, $password, $name = null, $phone = null) { + // Check if email exists + $existing = db()->fetch( + "SELECT customer_id FROM customers WHERE email = :email", + ['email' => strtolower($email)] + ); + + if ($existing) { + return ['error' => 'Email already registered']; + } + + $customerId = generateId('cust_'); + + db()->insert('customers', [ + 'customer_id' => $customerId, + 'email' => strtolower($email), + 'password_hash' => hashPassword($password), + 'name' => $name, + 'phone' => $phone + ]); + + // Auto login after registration + $_SESSION['customer'] = [ + 'customer_id' => $customerId, + 'email' => strtolower($email), + 'name' => $name + ]; + + return ['success' => true, 'customer_id' => $customerId]; + } + + public static function createGuest($email, $name = null, $phone = null) { + // Check if customer exists + $existing = db()->fetch( + "SELECT customer_id FROM customers WHERE email = :email", + ['email' => strtolower($email)] + ); + + if ($existing) { + return $existing['customer_id']; + } + + $customerId = generateId('cust_'); + + db()->insert('customers', [ + 'customer_id' => $customerId, + 'email' => strtolower($email), + 'name' => $name, + 'phone' => $phone, + 'is_guest' => 1 + ]); + + return $customerId; + } + + public static function requestPasswordReset($email) { + $customer = db()->fetch( + "SELECT customer_id FROM customers WHERE email = :email AND password_hash IS NOT NULL", + ['email' => strtolower($email)] + ); + + if (!$customer) { + return false; + } + + $token = bin2hex(random_bytes(32)); + $expiresAt = date('Y-m-d H:i:s', strtotime('+1 hour')); + + db()->insert('password_reset_tokens', [ + 'email' => strtolower($email), + 'token' => $token, + 'user_type' => 'customer', + 'expires_at' => $expiresAt + ]); + + // Send email + $resetUrl = SITE_URL . '/reset-password.php?token=' . $token; + $html = " +

Password Reset Request

+

Click the link below to reset your password:

+

{$resetUrl}

+

This link will expire in 1 hour.

+

If you didn't request this, please ignore this email.

+ "; + + sendEmail($email, 'Password Reset - ' . SITE_NAME, $html); + + return true; + } + + public static function resetPassword($token, $newPassword) { + $reset = db()->fetch( + "SELECT * FROM password_reset_tokens + WHERE token = :token AND user_type = 'customer' AND used = 0 AND expires_at > NOW()", + ['token' => $token] + ); + + if (!$reset) { + return ['error' => 'Invalid or expired token']; + } + + // Update password + db()->update('customers', + ['password_hash' => hashPassword($newPassword)], + 'email = :email', + ['email' => $reset['email']] + ); + + // Mark token as used + db()->update('password_reset_tokens', + ['used' => 1], + 'id = :id', + ['id' => $reset['id']] + ); + + return ['success' => true]; + } +} + +// Initialize session on include +initSession(); diff --git a/includes/db.php b/includes/db.php new file mode 100644 index 0000000..b77ac6f --- /dev/null +++ b/includes/db.php @@ -0,0 +1,104 @@ +pdo = new PDO($dsn, DB_USER, DB_PASS, DB_OPTIONS); + } catch (PDOException $e) { + if (ENVIRONMENT === 'development') { + die("Database connection failed: " . $e->getMessage()); + } else { + die("Database connection failed. Please try again later."); + } + } + } + + public static function getInstance() { + if (self::$instance === null) { + self::$instance = new self(); + } + return self::$instance; + } + + public function getConnection() { + return $this->pdo; + } + + public function query($sql, $params = []) { + $stmt = $this->pdo->prepare($sql); + $stmt->execute($params); + return $stmt; + } + + public function fetch($sql, $params = []) { + return $this->query($sql, $params)->fetch(); + } + + public function fetchAll($sql, $params = []) { + return $this->query($sql, $params)->fetchAll(); + } + + public function insert($table, $data) { + $columns = implode(', ', array_keys($data)); + $placeholders = ':' . implode(', :', array_keys($data)); + + $sql = "INSERT INTO {$table} ({$columns}) VALUES ({$placeholders})"; + $this->query($sql, $data); + + return $this->pdo->lastInsertId(); + } + + public function update($table, $data, $where, $whereParams = []) { + $set = []; + foreach (array_keys($data) as $column) { + $set[] = "{$column} = :{$column}"; + } + $setString = implode(', ', $set); + + $sql = "UPDATE {$table} SET {$setString} WHERE {$where}"; + return $this->query($sql, array_merge($data, $whereParams))->rowCount(); + } + + public function delete($table, $where, $params = []) { + $sql = "DELETE FROM {$table} WHERE {$where}"; + return $this->query($sql, $params)->rowCount(); + } + + public function count($table, $where = '1=1', $params = []) { + $sql = "SELECT COUNT(*) as count FROM {$table} WHERE {$where}"; + $result = $this->fetch($sql, $params); + return $result['count'] ?? 0; + } + + public function lastInsertId() { + return $this->pdo->lastInsertId(); + } + + public function beginTransaction() { + return $this->pdo->beginTransaction(); + } + + public function commit() { + return $this->pdo->commit(); + } + + public function rollback() { + return $this->pdo->rollBack(); + } +} + +// Helper function to get database instance +function db() { + return Database::getInstance(); +} diff --git a/includes/email.php b/includes/email.php new file mode 100644 index 0000000..8758a7a --- /dev/null +++ b/includes/email.php @@ -0,0 +1,369 @@ +apiKey = getSetting('sendgrid_api_key', 'YOUR_SENDGRID_API_KEY_HERE'); + $this->fromEmail = getSetting('sendgrid_from_email', 'noreply@tomsjavajive.com'); + $this->fromName = getSetting('sendgrid_from_name', "Tom's Java Jive"); + } + + /** + * Send email via SendGrid API + */ + public function send(string $to, string $subject, string $htmlContent, ?string $textContent = null): array { + $data = [ + 'personalizations' => [ + [ + 'to' => [['email' => $to]], + 'subject' => $subject + ] + ], + 'from' => [ + 'email' => $this->fromEmail, + 'name' => $this->fromName + ], + 'content' => [] + ]; + + if ($textContent) { + $data['content'][] = ['type' => 'text/plain', 'value' => $textContent]; + } + $data['content'][] = ['type' => 'text/html', 'value' => $htmlContent]; + + $ch = curl_init('https://api.sendgrid.com/v3/mail/send'); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => json_encode($data), + CURLOPT_HTTPHEADER => [ + 'Authorization: Bearer ' . $this->apiKey, + 'Content-Type: application/json' + ], + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 30 + ]); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) { + return ['success' => false, 'error' => $error]; + } + + // SendGrid returns 202 for accepted + if ($httpCode >= 200 && $httpCode < 300) { + return ['success' => true]; + } + + return ['success' => false, 'error' => $response, 'code' => $httpCode]; + } + + /** + * Send order confirmation email + */ + public function sendOrderConfirmation(array $order): array { + $items = json_decode($order['items'], true); + $itemsHtml = ''; + foreach ($items as $item) { + $itemsHtml .= sprintf( + '%s + %d + %s', + htmlspecialchars($item['name']), + $item['quantity'], + formatCurrency($item['total']) + ); + } + + $html = $this->getTemplate('order_confirmation', [ + 'order_number' => $order['order_number'], + 'customer_name' => $order['customer_name'] ?? 'Valued Customer', + 'items_html' => $itemsHtml, + 'subtotal' => formatCurrency($order['subtotal']), + 'tax' => formatCurrency($order['tax']), + 'discount' => $order['discount'] > 0 ? '-' . formatCurrency($order['discount']) : '$0.00', + 'total' => formatCurrency($order['total']), + 'payment_method' => ucfirst($order['payment_method'] ?? 'N/A'), + 'order_date' => date('F j, Y', strtotime($order['created_at'])) + ]); + + return $this->send( + $order['customer_email'], + "Order Confirmation - #{$order['order_number']}", + $html + ); + } + + /** + * Send shipping notification email + */ + public function sendShippingNotification(array $order): array { + $html = $this->getTemplate('shipping_notification', [ + 'order_number' => $order['order_number'], + 'customer_name' => $order['customer_name'] ?? 'Valued Customer', + 'tracking_number' => $order['tracking_number'], + 'tracking_url' => $order['tracking_url'] ?? '#', + 'carrier' => $order['shipping_carrier'] ?? 'Our shipping partner' + ]); + + return $this->send( + $order['customer_email'], + "Your Order Has Shipped - #{$order['order_number']}", + $html + ); + } + + /** + * Send password reset email + */ + public function sendPasswordReset(string $email, string $resetToken, string $name = ''): array { + $resetUrl = SITE_URL . '/reset-password.php?token=' . $resetToken; + + $html = $this->getTemplate('password_reset', [ + 'customer_name' => $name ?: 'there', + 'reset_url' => $resetUrl, + 'expires' => '1 hour' + ]); + + return $this->send( + $email, + "Reset Your Password - Tom's Java Jive", + $html + ); + } + + /** + * Send welcome email to new customer + */ + public function sendWelcome(string $email, string $name = ''): array { + $html = $this->getTemplate('welcome', [ + 'customer_name' => $name ?: 'Coffee Lover', + 'shop_url' => SITE_URL . '/shop.php' + ]); + + return $this->send( + $email, + "Welcome to Tom's Java Jive!", + $html + ); + } + + /** + * Send abandoned cart reminder + */ + public function sendAbandonedCartReminder(array $cart): array { + $items = json_decode($cart['items'], true); + $itemsHtml = ''; + foreach ($items as $item) { + $itemsHtml .= sprintf( + '
%s - %s
', + htmlspecialchars($item['name']), + formatCurrency($item['price']) + ); + } + + $html = $this->getTemplate('abandoned_cart', [ + 'items_html' => $itemsHtml, + 'total' => formatCurrency($cart['subtotal']), + 'cart_url' => SITE_URL . '/cart.php' + ]); + + return $this->send( + $cart['customer_email'], + "You left something behind!", + $html + ); + } + + /** + * Get email template with variables replaced + */ + private function getTemplate(string $name, array $vars = []): string { + $templates = [ + 'order_confirmation' => ' +
+
+

Order Confirmed!

+
+
+

Hi {{customer_name}},

+

Thank you for your order! We\'ve received it and will begin processing right away.

+ +
+

Order #{{order_number}}

+

{{order_date}}

+
+ + + + + + + + + + + {{items_html}} + +
ItemQtyPrice
+ +
+

Subtotal: {{subtotal}}

+

Tax: {{tax}}

+

Discount: {{discount}}

+

Total: {{total}}

+
+ +

Payment Method: {{payment_method}}

+ +

+ If you have any questions, reply to this email or visit our website. +

+
+
+

© ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

+
+
+ ', + + 'shipping_notification' => ' +
+
+

Your Order Has Shipped!

+
+
+

Hi {{customer_name}},

+

Great news! Your order #{{order_number}} is on its way to you.

+ +
+

Tracking Number

+

{{tracking_number}}

+

Carrier: {{carrier}}

+
+ + + +

+ Please allow 24-48 hours for tracking information to update. +

+
+
+

© ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

+
+
+ ', + + 'password_reset' => ' +
+
+

Reset Your Password

+
+
+

Hi {{customer_name}},

+

We received a request to reset your password. Click the button below to create a new password:

+ + + +

+ This link will expire in {{expires}}. If you didn\'t request this, you can safely ignore this email. +

+
+
+

© ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

+
+
+ ', + + 'welcome' => ' +
+
+

Welcome to the Family!

+
+
+

Hi {{customer_name}},

+

Welcome to Tom\'s Java Jive! We\'re thrilled to have you join our community of coffee lovers.

+ +

Here\'s what you can look forward to:

+
    +
  • Exclusive member discounts
  • +
  • Early access to new roasts
  • +
  • Reward points on every purchase
  • +
  • Birthday treats and special offers
  • +
+ + + +

Cheers,
The Tom\'s Java Jive Team

+
+
+

© ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

+
+
+ ', + + 'abandoned_cart' => ' +
+
+

Forget Something?

+
+
+

Hey there!

+

We noticed you left some amazing items in your cart. Don\'t let them get away!

+ +
+ {{items_html}} +
+ Total: {{total}} +
+
+ + + +

+ Need help? Just reply to this email and we\'ll assist you! +

+
+
+

© ' . date('Y') . ' Tom\'s Java Jive. All rights reserved.

+
+
+ ' + ]; + + $template = $templates[$name] ?? '

Email template not found.

'; + + foreach ($vars as $key => $value) { + $template = str_replace('{{' . $key . '}}', $value, $template); + } + + return $template; + } +} + +// Helper function for easy access +function sendEmail(): SendGridEmail { + static $instance = null; + if ($instance === null) { + $instance = new SendGridEmail(); + } + return $instance; +} diff --git a/includes/footer.php b/includes/footer.php new file mode 100644 index 0000000..5e33b6c --- /dev/null +++ b/includes/footer.php @@ -0,0 +1,79 @@ + + + + + + + + + + + + + diff --git a/includes/functions.php b/includes/functions.php new file mode 100644 index 0000000..7a13742 --- /dev/null +++ b/includes/functions.php @@ -0,0 +1,378 @@ + HASH_COST]); +} + +/** + * Verify password + */ +function verifyPassword($password, $hash) { + return password_verify($password, $hash); +} + +/** + * Sanitize input + */ +function sanitize($input) { + if (is_array($input)) { + return array_map('sanitize', $input); + } + return htmlspecialchars(trim($input), ENT_QUOTES, 'UTF-8'); +} + +/** + * Format currency + */ +function formatCurrency($amount) { + return TJJ_CURRENCY_SYMBOL . number_format((float)$amount, 2); +} + +/** + * Format date + */ +function formatDate($date, $format = 'M j, Y') { + return date($format, strtotime($date)); +} + +/** + * Format datetime + */ +function formatDateTime($date, $format = 'M j, Y g:i A') { + return date($format, strtotime($date)); +} + +/** + * JSON response helper + */ +function jsonResponse($data, $statusCode = 200) { + http_response_code($statusCode); + header('Content-Type: application/json'); + echo json_encode($data); + exit; +} + +/** + * Redirect helper + */ +function redirect($url) { + header("Location: $url"); + exit; +} + +/** + * Get current URL + */ +function currentUrl() { + $protocol = isset($_SERVER['HTTPS']) && $_SERVER['HTTPS'] === 'on' ? 'https' : 'http'; + return $protocol . '://' . $_SERVER['HTTP_HOST'] . $_SERVER['REQUEST_URI']; +} + +/** + * Check if request is AJAX + */ +function isAjax() { + return !empty($_SERVER['HTTP_X_REQUESTED_WITH']) && + strtolower($_SERVER['HTTP_X_REQUESTED_WITH']) === 'xmlhttprequest'; +} + +/** + * Get client IP address + */ +function getClientIp() { + $ip = $_SERVER['REMOTE_ADDR']; + if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $ip = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'])[0]; + } elseif (!empty($_SERVER['HTTP_CLIENT_IP'])) { + $ip = $_SERVER['HTTP_CLIENT_IP']; + } + return trim($ip); +} + +/** + * Generate CSRF token + */ +function generateCsrfToken() { + if (empty($_SESSION[CSRF_TOKEN_NAME])) { + $_SESSION[CSRF_TOKEN_NAME] = bin2hex(random_bytes(32)); + } + return $_SESSION[CSRF_TOKEN_NAME]; +} + +/** + * Verify CSRF token + */ +function verifyCsrfToken($token) { + return isset($_SESSION[CSRF_TOKEN_NAME]) && hash_equals($_SESSION[CSRF_TOKEN_NAME], $token); +} + +/** + * Get setting value + */ +function getSetting($key, $default = null) { + $result = db()->fetch( + "SELECT setting_value FROM settings WHERE setting_key = :key", + ['key' => $key] + ); + if ($result) { + return json_decode($result['setting_value'], true) ?? $result['setting_value']; + } + return $default; +} + +/** + * Update setting value + */ +function setSetting($key, $value) { + $jsonValue = json_encode($value); + $existing = db()->fetch( + "SELECT id FROM settings WHERE setting_key = :key", + ['key' => $key] + ); + + if ($existing) { + db()->update('settings', ['setting_value' => $jsonValue], 'setting_key = :key', ['key' => $key]); + } else { + db()->insert('settings', ['setting_key' => $key, 'setting_value' => $jsonValue]); + } +} + +/** + * Flash message helpers + */ +function setFlash($type, $message) { + $_SESSION['flash'][$type] = $message; +} + +function getFlash($type) { + if (isset($_SESSION['flash'][$type])) { + $message = $_SESSION['flash'][$type]; + unset($_SESSION['flash'][$type]); + return $message; + } + return null; +} + +function hasFlash($type) { + return isset($_SESSION['flash'][$type]); +} + +/** + * Pagination helper + */ +function paginate($totalItems, $currentPage, $perPage = ITEMS_PER_PAGE) { + $totalPages = ceil($totalItems / $perPage); + $currentPage = max(1, min($currentPage, $totalPages)); + $offset = ($currentPage - 1) * $perPage; + + return [ + 'total_items' => $totalItems, + 'total_pages' => $totalPages, + 'current_page' => $currentPage, + 'per_page' => $perPage, + 'offset' => $offset, + 'has_prev' => $currentPage > 1, + 'has_next' => $currentPage < $totalPages + ]; +} + +/** + * Render pagination HTML + */ +function renderPagination($pagination, $baseUrl) { + if ($pagination['total_pages'] <= 1) return ''; + + $html = ''; + return $html; +} + +/** + * Truncate text + */ +function truncate($text, $length = 100, $suffix = '...') { + if (strlen($text) <= $length) return $text; + return substr($text, 0, $length) . $suffix; +} + +/** + * Slugify text + */ +function slugify($text) { + $text = preg_replace('~[^\pL\d]+~u', '-', $text); + $text = iconv('utf-8', 'us-ascii//TRANSLIT', $text); + $text = preg_replace('~[^-\w]+~', '', $text); + $text = trim($text, '-'); + $text = preg_replace('~-+~', '-', $text); + return strtolower($text); +} + +/** + * Get cart from session + */ +function getCart() { + return $_SESSION['cart'] ?? []; +} + +/** + * Add item to cart + */ +function addToCart($productId, $quantity = 1) { + if (!isset($_SESSION['cart'])) { + $_SESSION['cart'] = []; + } + + if (isset($_SESSION['cart'][$productId])) { + $_SESSION['cart'][$productId] += $quantity; + } else { + $_SESSION['cart'][$productId] = $quantity; + } +} + +/** + * Update cart item quantity + */ +function updateCartItem($productId, $quantity) { + if ($quantity <= 0) { + removeFromCart($productId); + } else { + $_SESSION['cart'][$productId] = $quantity; + } +} + +/** + * Remove item from cart + */ +function removeFromCart($productId) { + unset($_SESSION['cart'][$productId]); +} + +/** + * Clear cart + */ +function clearCart() { + $_SESSION['cart'] = []; +} + +/** + * Get cart count + */ +function getCartCount() { + return array_sum($_SESSION['cart'] ?? []); +} + +/** + * Get cart total + */ +function getCartTotal() { + $total = 0; + $cart = getCart(); + + foreach ($cart as $productId => $quantity) { + $product = db()->fetch( + "SELECT price, sale_price FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] + ); + if ($product) { + $price = $product['sale_price'] ?? $product['price']; + $total += $price * $quantity; + } + } + + return $total; +} + +/** + * Send email using SendGrid + */ +function sendEmail($to, $subject, $htmlContent, $textContent = '') { + if (empty(SENDGRID_API_KEY)) { + return false; + } + + $data = [ + 'personalizations' => [ + [ + 'to' => [['email' => $to]], + 'subject' => $subject + ] + ], + 'from' => [ + 'email' => SENDER_EMAIL, + 'name' => SENDER_NAME + ], + 'content' => [ + ['type' => 'text/html', 'value' => $htmlContent] + ] + ]; + + if ($textContent) { + array_unshift($data['content'], ['type' => 'text/plain', 'value' => $textContent]); + } + + $ch = curl_init(); + curl_setopt($ch, CURLOPT_URL, 'https://api.sendgrid.com/v3/mail/send'); + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data)); + curl_setopt($ch, CURLOPT_HTTPHEADER, [ + 'Authorization: Bearer ' . SENDGRID_API_KEY, + 'Content-Type: application/json' + ]); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + curl_close($ch); + + return $httpCode >= 200 && $httpCode < 300; +} + +/** + * Log activity + */ +function logActivity($action, $details = [], $userId = null) { + // Implement activity logging if needed +} diff --git a/includes/header.php b/includes/header.php new file mode 100644 index 0000000..8ed8c92 --- /dev/null +++ b/includes/header.php @@ -0,0 +1,88 @@ + + + + + + + <?= $pageTitle ?? SITE_NAME ?> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + +
+ +
+ +
diff --git a/includes/loyalty.php b/includes/loyalty.php new file mode 100644 index 0000000..2988c99 --- /dev/null +++ b/includes/loyalty.php @@ -0,0 +1,438 @@ + [ + 'name' => 'Bronze Bean', + 'min_points' => 0, + 'multiplier' => 1.0, + 'benefits' => [ + 'Earn 1 point per $1 spent', + 'Birthday reward', + 'Member-only offers' + ], + 'color' => '#CD7F32', + 'icon' => 'fa-coffee' + ], + 'silver' => [ + 'name' => 'Silver Roast', + 'min_points' => 500, + 'multiplier' => 1.25, + 'benefits' => [ + 'Earn 1.25 points per $1 spent', + 'Free shipping on orders $25+', + 'Early access to new products', + 'Double points weekends' + ], + 'color' => '#C0C0C0', + 'icon' => 'fa-mug-hot' + ], + 'gold' => [ + 'name' => 'Gold Blend', + 'min_points' => 1500, + 'multiplier' => 1.5, + 'benefits' => [ + 'Earn 1.5 points per $1 spent', + 'Free shipping on all orders', + 'Exclusive Gold-only products', + 'Priority customer support', + 'Quarterly free coffee sample' + ], + 'color' => '#FFD700', + 'icon' => 'fa-crown' + ], + 'platinum' => [ + 'name' => 'Platinum Reserve', + 'min_points' => 5000, + 'multiplier' => 2.0, + 'benefits' => [ + 'Earn 2 points per $1 spent', + 'Free express shipping', + 'VIP early access to everything', + 'Annual free bag of premium coffee', + 'Dedicated account manager', + 'Exclusive tasting events' + ], + 'color' => '#E5E4E2', + 'icon' => 'fa-gem' + ] + ]; + + // Points redemption rates + private float $pointsToValue = 0.01; // 1 point = $0.01 (100 points = $1) + + /** + * Get all tier definitions + */ + public function getTiers(): array { + return $this->tiers; + } + + /** + * Get a specific tier + */ + public function getTier(string $tierKey): ?array { + return $this->tiers[$tierKey] ?? null; + } + + /** + * Determine customer's tier based on total points earned (lifetime) + */ + public function calculateTier(int $lifetimePoints): string { + $currentTier = 'bronze'; + + foreach ($this->tiers as $key => $tier) { + if ($lifetimePoints >= $tier['min_points']) { + $currentTier = $key; + } + } + + return $currentTier; + } + + /** + * Get customer's current tier info + */ + public function getCustomerTier(string $customerId): array { + $customer = db()->fetch( + "SELECT reward_points, lifetime_points, loyalty_tier FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer) { + return ['tier' => 'bronze', 'info' => $this->tiers['bronze'], 'points' => 0]; + } + + $lifetimePoints = $customer['lifetime_points'] ?? $customer['reward_points'] ?? 0; + $tierKey = $this->calculateTier($lifetimePoints); + $tier = $this->tiers[$tierKey]; + + // Calculate progress to next tier + $nextTierKey = $this->getNextTier($tierKey); + $nextTier = $nextTierKey ? $this->tiers[$nextTierKey] : null; + + $progress = 100; + $pointsToNext = 0; + + if ($nextTier) { + $currentMin = $tier['min_points']; + $nextMin = $nextTier['min_points']; + $pointsToNext = $nextMin - $lifetimePoints; + $progress = min(100, (($lifetimePoints - $currentMin) / ($nextMin - $currentMin)) * 100); + } + + return [ + 'tier' => $tierKey, + 'info' => $tier, + 'points' => $customer['reward_points'] ?? 0, + 'lifetime_points' => $lifetimePoints, + 'next_tier' => $nextTierKey, + 'next_tier_info' => $nextTier, + 'points_to_next' => $pointsToNext, + 'progress_percent' => round($progress, 1) + ]; + } + + /** + * Get next tier key + */ + private function getNextTier(string $currentTier): ?string { + $keys = array_keys($this->tiers); + $index = array_search($currentTier, $keys); + + return isset($keys[$index + 1]) ? $keys[$index + 1] : null; + } + + /** + * Award points for a purchase + */ + public function awardPoints(string $customerId, float $amount, string $description = 'Purchase'): array { + $customerTier = $this->getCustomerTier($customerId); + $multiplier = $customerTier['info']['multiplier']; + + // Calculate points (base: 1 point per dollar) + $basePoints = floor($amount); + $bonusPoints = floor($basePoints * ($multiplier - 1)); + $totalPoints = $basePoints + $bonusPoints; + + // Update customer points + db()->query( + "UPDATE customers SET + reward_points = reward_points + :points, + lifetime_points = COALESCE(lifetime_points, 0) + :points, + updated_at = NOW() + WHERE customer_id = :id", + ['points' => $totalPoints, 'id' => $customerId] + ); + + // Log the transaction + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => $totalPoints, + 'type' => 'earn', + 'description' => $description . ($bonusPoints > 0 ? " (+{$bonusPoints} bonus)" : ''), + 'reference_amount' => $amount + ]); + + // Check for tier upgrade + $newTier = $this->checkTierUpgrade($customerId, $customerTier['tier']); + + return [ + 'points_earned' => $totalPoints, + 'base_points' => $basePoints, + 'bonus_points' => $bonusPoints, + 'multiplier' => $multiplier, + 'tier_upgraded' => $newTier !== null, + 'new_tier' => $newTier + ]; + } + + /** + * Redeem points for credit + */ + public function redeemPoints(string $customerId, int $points): array { + $customer = db()->fetch( + "SELECT reward_points FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer || $customer['reward_points'] < $points) { + return ['success' => false, 'error' => 'Insufficient points']; + } + + $creditValue = $points * $this->pointsToValue; + + // Deduct points + db()->query( + "UPDATE customers SET reward_points = reward_points - :points, updated_at = NOW() WHERE customer_id = :id", + ['points' => $points, 'id' => $customerId] + ); + + // Log the redemption + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => -$points, + 'type' => 'redeem', + 'description' => "Redeemed for " . formatCurrency($creditValue) . " credit", + 'reference_amount' => $creditValue + ]); + + // Add to wallet + $newBalance = db()->fetch( + "SELECT wallet_balance FROM customers WHERE customer_id = :id", + ['id' => $customerId] + )['wallet_balance'] ?? 0; + + $newBalance += $creditValue; + + db()->query( + "UPDATE customers SET wallet_balance = :balance WHERE customer_id = :id", + ['balance' => $newBalance, 'id' => $customerId] + ); + + // Log wallet transaction + db()->insert('wallet_transactions', [ + 'transaction_id' => generateId('wt_'), + 'customer_id' => $customerId, + 'amount' => $creditValue, + 'balance_after' => $newBalance, + 'type' => 'loyalty_redemption', + 'description' => "Redeemed {$points} loyalty points" + ]); + + return [ + 'success' => true, + 'points_redeemed' => $points, + 'credit_value' => $creditValue, + 'new_points_balance' => $customer['reward_points'] - $points, + 'new_wallet_balance' => $newBalance + ]; + } + + /** + * Check and process tier upgrade + */ + public function checkTierUpgrade(string $customerId, string $currentTier): ?string { + $customer = db()->fetch( + "SELECT lifetime_points, loyalty_tier FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer) { + return null; + } + + $calculatedTier = $this->calculateTier($customer['lifetime_points'] ?? 0); + $storedTier = $customer['loyalty_tier'] ?? 'bronze'; + + // Compare tier levels + $tierOrder = ['bronze', 'silver', 'gold', 'platinum']; + $calculatedIndex = array_search($calculatedTier, $tierOrder); + $storedIndex = array_search($storedTier, $tierOrder); + + if ($calculatedIndex > $storedIndex) { + // Upgrade! + db()->query( + "UPDATE customers SET loyalty_tier = :tier, updated_at = NOW() WHERE customer_id = :id", + ['tier' => $calculatedTier, 'id' => $customerId] + ); + + // Log the upgrade + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => 0, + 'type' => 'tier_upgrade', + 'description' => "Upgraded from {$this->tiers[$storedTier]['name']} to {$this->tiers[$calculatedTier]['name']}" + ]); + + // Send notifications + $this->sendTierUpgradeNotifications($customerId, $calculatedTier); + + return $calculatedTier; + } + + return null; + } + + /** + * Send tier upgrade notifications + */ + private function sendTierUpgradeNotifications(string $customerId, string $newTier): void { + $customer = db()->fetch( + "SELECT email, phone, name FROM customers WHERE customer_id = :id", + ['id' => $customerId] + ); + + if (!$customer) return; + + $tierInfo = $this->tiers[$newTier]; + + // Send email notification + if (!empty($customer['email'])) { + require_once __DIR__ . '/email.php'; + // Custom email for tier upgrade would go here + } + + // Send SMS notification + if (!empty($customer['phone'])) { + require_once __DIR__ . '/sms.php'; + sendSMS()->sendTierUpgrade($customer['phone'], $tierInfo['name']); + } + + // Send push notification + require_once __DIR__ . '/push.php'; + pushNotify()->sendTierNotification($customerId, $tierInfo['name'], $tierInfo['benefits']); + } + + /** + * Get points conversion info + */ + public function getConversionInfo(): array { + return [ + 'points_per_dollar' => 1, + 'points_value' => $this->pointsToValue, + 'points_for_one_dollar' => intval(1 / $this->pointsToValue), + 'description' => 'Earn 1 point for every $1 spent. Redeem 100 points for $1 credit.' + ]; + } + + /** + * Get customer's loyalty history + */ + public function getHistory(string $customerId, int $limit = 20): array { + return db()->fetchAll( + "SELECT * FROM loyalty_transactions WHERE customer_id = :id ORDER BY created_at DESC LIMIT :limit", + ['id' => $customerId, 'limit' => $limit] + ); + } + + /** + * Award birthday bonus + */ + public function awardBirthdayBonus(string $customerId): array { + $customerTier = $this->getCustomerTier($customerId); + + // Bonus points based on tier + $bonusPoints = match($customerTier['tier']) { + 'platinum' => 500, + 'gold' => 300, + 'silver' => 200, + default => 100 + }; + + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $bonusPoints, 'id' => $customerId] + ); + + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $customerId, + 'points' => $bonusPoints, + 'type' => 'birthday_bonus', + 'description' => "Birthday reward - Happy Birthday!" + ]); + + return ['success' => true, 'points' => $bonusPoints]; + } + + /** + * Award referral bonus + */ + public function awardReferralBonus(string $referrerId, string $newCustomerId): array { + $referrerBonus = 100; + $newCustomerBonus = 50; + + // Award to referrer + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $referrerBonus, 'id' => $referrerId] + ); + + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $referrerId, + 'points' => $referrerBonus, + 'type' => 'referral_bonus', + 'description' => "Referral bonus - Thank you for spreading the word!" + ]); + + // Award to new customer + db()->query( + "UPDATE customers SET reward_points = reward_points + :points WHERE customer_id = :id", + ['points' => $newCustomerBonus, 'id' => $newCustomerId] + ); + + db()->insert('loyalty_transactions', [ + 'transaction_id' => generateId('lt_'), + 'customer_id' => $newCustomerId, + 'points' => $newCustomerBonus, + 'type' => 'referral_welcome', + 'description' => "Welcome bonus from referral" + ]); + + return [ + 'referrer_bonus' => $referrerBonus, + 'new_customer_bonus' => $newCustomerBonus + ]; + } +} + +// Helper function +function loyalty(): LoyaltyProgram { + static $instance = null; + if ($instance === null) { + $instance = new LoyaltyProgram(); + } + return $instance; +} diff --git a/includes/push.php b/includes/push.php new file mode 100644 index 0000000..d102c4e --- /dev/null +++ b/includes/push.php @@ -0,0 +1,181 @@ +publicKey = getSetting('vapid_public_key', 'YOUR_VAPID_PUBLIC_KEY'); + $this->privateKey = getSetting('vapid_private_key', 'YOUR_VAPID_PRIVATE_KEY'); + $this->subject = 'mailto:' . getSetting('admin_email', 'admin@tomsjavajive.com'); + } + + /** + * Get VAPID public key for client + */ + public function getPublicKey(): string { + return $this->publicKey; + } + + /** + * Send push notification to a subscription + */ + public function send(array $subscription, string $title, string $body, array $options = []): array { + $payload = json_encode([ + 'title' => $title, + 'body' => $body, + 'icon' => $options['icon'] ?? '/assets/icons/icon-192.png', + 'badge' => $options['badge'] ?? '/assets/icons/badge-72.png', + 'url' => $options['url'] ?? '/', + 'tag' => $options['tag'] ?? null, + 'data' => $options['data'] ?? [] + ]); + + // For now, we'll store notifications for when the user comes online + // Full web push requires a library like minishlink/web-push + // This is a simplified version that works with the service worker + + try { + // Store notification for retrieval + $notificationId = generateId('notif_'); + db()->insert('push_notifications', [ + 'notification_id' => $notificationId, + 'subscription_endpoint' => $subscription['endpoint'], + 'payload' => $payload, + 'status' => 'pending', + 'created_at' => date('Y-m-d H:i:s') + ]); + + return ['success' => true, 'notification_id' => $notificationId]; + } catch (Exception $e) { + return ['success' => false, 'error' => $e->getMessage()]; + } + } + + /** + * Send notification to all subscribed users + */ + public function broadcast(string $title, string $body, array $options = []): array { + $subscriptions = db()->fetchAll("SELECT * FROM push_subscriptions WHERE is_active = 1"); + + $results = ['sent' => 0, 'failed' => 0]; + + foreach ($subscriptions as $sub) { + $subscription = [ + 'endpoint' => $sub['endpoint'], + 'keys' => [ + 'p256dh' => $sub['p256dh_key'], + 'auth' => $sub['auth_key'] + ] + ]; + + $result = $this->send($subscription, $title, $body, $options); + + if ($result['success']) { + $results['sent']++; + } else { + $results['failed']++; + } + } + + return $results; + } + + /** + * Send order status update notification + */ + public function sendOrderUpdate(string $customerId, array $order, string $status): array { + $subscription = $this->getCustomerSubscription($customerId); + + if (!$subscription) { + return ['success' => false, 'error' => 'No subscription found']; + } + + $messages = [ + 'confirmed' => "Your order #{$order['order_number']} has been confirmed!", + 'processing' => "We're preparing your order #{$order['order_number']}", + 'shipped' => "Your order #{$order['order_number']} is on its way!", + 'delivered' => "Your order #{$order['order_number']} has been delivered!", + 'ready' => "Your order #{$order['order_number']} is ready for pickup!" + ]; + + return $this->send( + $subscription, + "Order Update", + $messages[$status] ?? "Order #{$order['order_number']} status: {$status}", + [ + 'url' => "/account/order.php?id={$order['order_id']}", + 'tag' => "order-{$order['order_id']}" + ] + ); + } + + /** + * Send promotional notification + */ + public function sendPromotion(string $customerId, string $title, string $message, string $url = '/shop.php'): array { + $subscription = $this->getCustomerSubscription($customerId); + + if (!$subscription) { + return ['success' => false, 'error' => 'No subscription found']; + } + + return $this->send($subscription, $title, $message, ['url' => $url]); + } + + /** + * Send loyalty tier notification + */ + public function sendTierNotification(string $customerId, string $tierName, array $benefits): array { + $subscription = $this->getCustomerSubscription($customerId); + + if (!$subscription) { + return ['success' => false, 'error' => 'No subscription found']; + } + + return $this->send( + $subscription, + "Congratulations! You're now {$tierName}!", + "Enjoy new benefits: " . implode(', ', array_slice($benefits, 0, 2)), + ['url' => '/account/'] + ); + } + + /** + * Get customer's push subscription + */ + private function getCustomerSubscription(string $customerId): ?array { + $sub = db()->fetch( + "SELECT * FROM push_subscriptions WHERE customer_id = :id AND is_active = 1 ORDER BY created_at DESC LIMIT 1", + ['id' => $customerId] + ); + + if (!$sub) { + return null; + } + + return [ + 'endpoint' => $sub['endpoint'], + 'keys' => [ + 'p256dh' => $sub['p256dh_key'], + 'auth' => $sub['auth_key'] + ] + ]; + } +} + +// Helper function for easy access +function pushNotify(): PushNotification { + static $instance = null; + if ($instance === null) { + $instance = new PushNotification(); + } + return $instance; +} diff --git a/includes/sms.php b/includes/sms.php new file mode 100644 index 0000000..513f247 --- /dev/null +++ b/includes/sms.php @@ -0,0 +1,195 @@ +accountSid = getSetting('twilio_account_sid', 'YOUR_TWILIO_ACCOUNT_SID'); + $this->authToken = getSetting('twilio_auth_token', 'YOUR_TWILIO_AUTH_TOKEN'); + $this->fromNumber = getSetting('twilio_phone_number', '+1234567890'); + } + + /** + * Send SMS via Twilio API + */ + public function send(string $to, string $message): array { + // Ensure phone number is in E.164 format + $to = $this->formatPhoneNumber($to); + + if (!$to) { + return ['success' => false, 'error' => 'Invalid phone number']; + } + + $url = "https://api.twilio.com/2010-04-01/Accounts/{$this->accountSid}/Messages.json"; + + $data = [ + 'To' => $to, + 'From' => $this->fromNumber, + 'Body' => $message + ]; + + $ch = curl_init($url); + curl_setopt_array($ch, [ + CURLOPT_POST => true, + CURLOPT_POSTFIELDS => http_build_query($data), + CURLOPT_USERPWD => "{$this->accountSid}:{$this->authToken}", + CURLOPT_RETURNTRANSFER => true, + CURLOPT_TIMEOUT => 30 + ]); + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) { + return ['success' => false, 'error' => $error]; + } + + $result = json_decode($response, true); + + if ($httpCode >= 200 && $httpCode < 300) { + return [ + 'success' => true, + 'sid' => $result['sid'] ?? null, + 'status' => $result['status'] ?? 'queued' + ]; + } + + return [ + 'success' => false, + 'error' => $result['message'] ?? 'Failed to send SMS', + 'code' => $result['code'] ?? $httpCode + ]; + } + + /** + * Format phone number to E.164 format + */ + private function formatPhoneNumber(string $phone): ?string { + // Remove all non-numeric characters except + + $phone = preg_replace('/[^0-9+]/', '', $phone); + + // If already in E.164 format + if (preg_match('/^\+[1-9]\d{1,14}$/', $phone)) { + return $phone; + } + + // US number without country code + if (preg_match('/^1?\d{10}$/', $phone)) { + $phone = preg_replace('/^1?/', '', $phone); + return '+1' . $phone; + } + + return null; + } + + /** + * Send order confirmation SMS + */ + public function sendOrderConfirmation(array $order, string $phone): array { + $message = "Tom's Java Jive: Your order #{$order['order_number']} has been confirmed! " . + "Total: " . formatCurrency($order['total']) . ". " . + "Thank you for your purchase!"; + + return $this->send($phone, $message); + } + + /** + * Send shipping notification SMS + */ + public function sendShippingNotification(array $order, string $phone): array { + $message = "Tom's Java Jive: Your order #{$order['order_number']} has shipped! " . + "Tracking: {$order['tracking_number']}. " . + "Track at: " . ($order['tracking_url'] ?? SITE_URL); + + return $this->send($phone, $message); + } + + /** + * Send delivery notification SMS + */ + public function sendDeliveryNotification(array $order, string $phone): array { + $message = "Tom's Java Jive: Great news! Your order #{$order['order_number']} " . + "has been delivered. Enjoy your coffee!"; + + return $this->send($phone, $message); + } + + /** + * Send password reset SMS + */ + public function sendPasswordResetCode(string $phone, string $code): array { + $message = "Tom's Java Jive: Your password reset code is {$code}. " . + "This code expires in 15 minutes. Don't share it with anyone."; + + return $this->send($phone, $message); + } + + /** + * Send OTP verification SMS + */ + public function sendVerificationCode(string $phone, string $code): array { + $message = "Tom's Java Jive: Your verification code is {$code}. " . + "Valid for 10 minutes."; + + return $this->send($phone, $message); + } + + /** + * Send promotional SMS (with opt-out info) + */ + public function sendPromotion(string $phone, string $promoMessage): array { + $message = "Tom's Java Jive: {$promoMessage} " . + "Reply STOP to unsubscribe."; + + return $this->send($phone, $message); + } + + /** + * Send order ready for pickup SMS + */ + public function sendReadyForPickup(array $order, string $phone): array { + $message = "Tom's Java Jive: Your order #{$order['order_number']} is ready for pickup! " . + "Show this message at the counter."; + + return $this->send($phone, $message); + } + + /** + * Send low wallet balance alert + */ + public function sendLowBalanceAlert(string $phone, float $balance): array { + $message = "Tom's Java Jive: Your wallet balance is " . formatCurrency($balance) . ". " . + "Top up now to continue enjoying fast checkout!"; + + return $this->send($phone, $message); + } + + /** + * Send loyalty tier upgrade notification + */ + public function sendTierUpgrade(string $phone, string $tierName): array { + $message = "Tom's Java Jive: Congratulations! You've reached {$tierName} status! " . + "Enjoy your new benefits and rewards. Thank you for being a loyal customer!"; + + return $this->send($phone, $message); + } +} + +// Helper function for easy access +function sendSMS(): TwilioSMS { + static $instance = null; + if ($instance === null) { + $instance = new TwilioSMS(); + } + return $instance; +} diff --git a/includes/stripe.php b/includes/stripe.php new file mode 100644 index 0000000..e12aab8 --- /dev/null +++ b/includes/stripe.php @@ -0,0 +1,214 @@ +secretKey = $secretKey ?: STRIPE_SECRET_KEY; + } + + /** + * Make a cURL request to Stripe API + */ + private function request($method, $endpoint, $data = []) { + $url = $this->apiBase . $endpoint; + + $ch = curl_init(); + + $headers = [ + 'Authorization: Bearer ' . $this->secretKey, + 'Content-Type: application/x-www-form-urlencoded' + ]; + + curl_setopt($ch, CURLOPT_URL, $url); + curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); + curl_setopt($ch, CURLOPT_HTTPHEADER, $headers); + curl_setopt($ch, CURLOPT_TIMEOUT, 30); + curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, true); + + if ($method === 'POST') { + curl_setopt($ch, CURLOPT_POST, true); + curl_setopt($ch, CURLOPT_POSTFIELDS, http_build_query($data)); + } elseif ($method === 'GET' && !empty($data)) { + $url .= '?' . http_build_query($data); + curl_setopt($ch, CURLOPT_URL, $url); + } + + $response = curl_exec($ch); + $httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE); + $error = curl_error($ch); + curl_close($ch); + + if ($error) { + throw new Exception('Stripe API Error: ' . $error); + } + + $decoded = json_decode($response, true); + + if ($httpCode >= 400) { + $errorMsg = $decoded['error']['message'] ?? 'Unknown Stripe error'; + throw new Exception($errorMsg); + } + + return $decoded; + } + + /** + * Create a Payment Intent + */ + public function createPaymentIntent($amount, $currency = 'usd', $options = []) { + $data = [ + 'amount' => (int)($amount * 100), // Convert to cents + 'currency' => strtolower($currency), + 'automatic_payment_methods' => ['enabled' => 'true'] + ]; + + if (!empty($options['metadata'])) { + foreach ($options['metadata'] as $key => $value) { + $data["metadata[$key]"] = $value; + } + } + + if (!empty($options['receipt_email'])) { + $data['receipt_email'] = $options['receipt_email']; + } + + if (!empty($options['description'])) { + $data['description'] = $options['description']; + } + + return $this->request('POST', '/payment_intents', $data); + } + + /** + * Retrieve a Payment Intent + */ + public function getPaymentIntent($paymentIntentId) { + return $this->request('GET', '/payment_intents/' . $paymentIntentId); + } + + /** + * Create a Checkout Session (hosted payment page) + */ + public function createCheckoutSession($lineItems, $successUrl, $cancelUrl, $options = []) { + $data = [ + 'mode' => $options['mode'] ?? 'payment', + 'success_url' => $successUrl, + 'cancel_url' => $cancelUrl + ]; + + // Add line items + foreach ($lineItems as $i => $item) { + $data["line_items[$i][price_data][currency]"] = $item['currency'] ?? 'usd'; + $data["line_items[$i][price_data][product_data][name]"] = $item['name']; + $data["line_items[$i][price_data][unit_amount]"] = (int)($item['price'] * 100); + $data["line_items[$i][quantity]"] = $item['quantity'] ?? 1; + + if (!empty($item['description'])) { + $data["line_items[$i][price_data][product_data][description]"] = $item['description']; + } + } + + if (!empty($options['customer_email'])) { + $data['customer_email'] = $options['customer_email']; + } + + if (!empty($options['metadata'])) { + foreach ($options['metadata'] as $key => $value) { + $data["metadata[$key]"] = $value; + } + } + + return $this->request('POST', '/checkout/sessions', $data); + } + + /** + * Retrieve a Checkout Session + */ + public function getCheckoutSession($sessionId) { + return $this->request('GET', '/checkout/sessions/' . $sessionId); + } + + /** + * Verify webhook signature + */ + public function verifyWebhookSignature($payload, $sigHeader, $webhookSecret) { + if (empty($webhookSecret)) { + return true; // Skip verification if secret not configured + } + + $elements = explode(',', $sigHeader); + $timestamp = null; + $signatures = []; + + foreach ($elements as $element) { + $parts = explode('=', $element, 2); + if (count($parts) === 2) { + if ($parts[0] === 't') { + $timestamp = $parts[1]; + } elseif ($parts[0] === 'v1') { + $signatures[] = $parts[1]; + } + } + } + + if (empty($timestamp) || empty($signatures)) { + throw new Exception('Invalid signature format'); + } + + // Check timestamp tolerance (5 minutes) + if (abs(time() - $timestamp) > 300) { + throw new Exception('Timestamp outside tolerance'); + } + + $signedPayload = $timestamp . '.' . $payload; + $expectedSignature = hash_hmac('sha256', $signedPayload, $webhookSecret); + + foreach ($signatures as $sig) { + if (hash_equals($expectedSignature, $sig)) { + return true; + } + } + + throw new Exception('Signature verification failed'); + } + + /** + * Create a refund + */ + public function createRefund($paymentIntentId, $amount = null) { + $data = ['payment_intent' => $paymentIntentId]; + + if ($amount !== null) { + $data['amount'] = (int)($amount * 100); + } + + return $this->request('POST', '/refunds', $data); + } +} + +/** + * Get Stripe instance + */ +function stripe() { + static $stripe = null; + if ($stripe === null) { + $stripe = new StripeAPI(); + } + return $stripe; +} + +/** + * Check if Stripe is properly configured + */ +function isStripeConfigured() { + return !empty(STRIPE_SECRET_KEY) && + STRIPE_SECRET_KEY !== 'sk_test_your_stripe_key' && + !empty(STRIPE_PUBLISHABLE_KEY) && + STRIPE_PUBLISHABLE_KEY !== 'pk_test_your_stripe_key'; +} diff --git a/index.php b/index.php new file mode 100644 index 0000000..bcf1408 --- /dev/null +++ b/index.php @@ -0,0 +1,192 @@ +fetchAll( + "SELECT * FROM products WHERE is_active = 1 AND is_featured = 1 ORDER BY created_at DESC LIMIT 4" +); + +// If no featured products, get latest products +if (empty($featuredProducts)) { + $featuredProducts = db()->fetchAll( + "SELECT * FROM products WHERE is_active = 1 ORDER BY created_at DESC LIMIT 4" + ); +} + +require_once __DIR__ . '/includes/header.php'; +?> + + +
+
+

Premium Coffee, Delivered Fresh

+

Artisan roasted coffee beans sourced from the world's finest growing regions. Experience the perfect cup, every time.

+ +
+
+ + +
+
+
+
+
+ +
+

Ethically Sourced

+

Direct trade relationships with farmers ensuring fair wages and sustainable practices.

+
+
+
+ +
+

Fresh Roasted

+

Roasted in small batches weekly to ensure maximum freshness and flavor.

+
+
+
+ +
+

Fast Delivery

+

Free shipping on orders over $50. Same-day dispatch for orders before 2pm.

+
+
+
+ +
+

Satisfaction Guaranteed

+

Not happy with your order? We'll make it right or your money back.

+
+
+
+
+ + +
+
+
+

Featured Products

+

Our most popular coffee selections

+
+ +
+ +
+

Products coming soon! Check back later.

+ Add Products +
+ + +
+ + <?= htmlspecialchars($product['name']) ?> + + Sale + + +
+ +
+ +

+ +

+
+ + + + +
+ +
+
+ + +
+ + +
+
+ + +
+
+
+
+

Our Story

+

+ Founded in Fort Worth, Texas, Tom's Java Jive began with a simple mission: to bring exceptional coffee to our community. What started as a small roastery has grown into a beloved local institution. +

+

+ We source our beans directly from farmers around the world, ensuring fair prices and sustainable practices. Every batch is carefully roasted to bring out the unique flavors and characteristics of each origin. +

+ Explore Our Coffee +
+
+ Coffee brewing +
+
+
+
+ + + + + + + diff --git a/install/generate-icons.php b/install/generate-icons.php new file mode 100644 index 0000000..31e6812 --- /dev/null +++ b/install/generate-icons.php @@ -0,0 +1,53 @@ + + + + + + + + +'; + +foreach ($sizes as $size) { + $radius = floor($size * 0.15); + $offset = floor($size * 0.1); + $scale = $size / 100; + + $svg = str_replace( + ['{SIZE}', '{RADIUS}', '{OFFSET}', '{SCALE}'], + [$size, $radius, $offset, $scale], + $svgTemplate + ); + + // Save as SVG + file_put_contents($outputDir . "icon-{$size}.svg", $svg); + + echo "Generated icon-{$size}.svg\n"; +} + +// Also create badge icon +$badgeSvg = ' + + + TJ +'; + +file_put_contents($outputDir . 'badge-72.svg', $badgeSvg); +echo "Generated badge-72.svg\n"; + +echo "\nDone! Icons generated in: $outputDir\n"; +echo "Note: For production, convert SVGs to PNGs using an image tool.\n"; diff --git a/install/migrate_from_mongodb.php b/install/migrate_from_mongodb.php new file mode 100644 index 0000000..9002fbc --- /dev/null +++ b/install/migrate_from_mongodb.php @@ -0,0 +1,435 @@ +selectDatabase($mongoDbName); + echo "Connected to MongoDB database: $mongoDbName\n\n"; + + // Test MySQL connection + $mysql = db(); + echo "Connected to MySQL database: " . DB_NAME . "\n\n"; + +} catch (Exception $e) { + echo "ERROR: " . $e->getMessage() . "\n"; + exit(1); +} + +/** + * Helper function to convert MongoDB document to array + */ +function docToArray($doc) { + if ($doc instanceof MongoDB\Model\BSONDocument || $doc instanceof MongoDB\Model\BSONArray) { + return json_decode(json_encode($doc), true); + } + return $doc; +} + +/** + * Helper function to safely get nested value + */ +function safeGet($array, $key, $default = null) { + return isset($array[$key]) ? $array[$key] : $default; +} + +/** + * Migrate Admin Users + */ +function migrateAdminUsers($mongodb, $mysql) { + echo "Migrating admin users...\n"; + + $cursor = $mongodb->admin_users->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + try { + $mysql->insert('admin_users', [ + 'user_id' => safeGet($doc, 'user_id') ?: safeGet($doc, 'admin_id'), + 'email' => safeGet($doc, 'email'), + 'password_hash' => safeGet($doc, 'password_hash'), + 'name' => safeGet($doc, 'name'), + 'picture' => safeGet($doc, 'picture'), + 'is_admin' => 1, + 'is_master' => safeGet($doc, 'is_master') ? 1 : 0, + 'permissions' => json_encode(safeGet($doc, 'permissions', [])), + 'created_at' => safeGet($doc, 'created_at') ?: date('Y-m-d H:i:s') + ]); + $count++; + } catch (Exception $e) { + echo " Warning: Could not migrate admin {$doc['email']}: " . $e->getMessage() . "\n"; + } + } + + echo " Migrated $count admin users\n\n"; +} + +/** + * Migrate Customers + */ +function migrateCustomers($mongodb, $mysql) { + echo "Migrating customers...\n"; + + $cursor = $mongodb->customers->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + try { + $mysql->insert('customers', [ + 'customer_id' => safeGet($doc, 'customer_id'), + 'email' => safeGet($doc, 'email'), + 'password_hash' => safeGet($doc, 'password_hash'), + 'name' => safeGet($doc, 'name'), + 'phone' => safeGet($doc, 'phone'), + 'shipping_address' => json_encode(safeGet($doc, 'shipping_address')), + 'billing_address' => json_encode(safeGet($doc, 'billing_address')), + 'wallet_balance' => safeGet($doc, 'account_balance', 0), + 'reward_points' => safeGet($doc, 'loyalty_points', 0), + 'is_guest' => safeGet($doc, 'is_guest') ? 1 : 0, + 'created_via' => safeGet($doc, 'created_via', 'web'), + 'created_at' => safeGet($doc, 'created_at') ?: date('Y-m-d H:i:s') + ]); + + // Migrate wallet transactions + $transactions = safeGet($doc, 'account_transactions', []); + foreach ($transactions as $txn) { + try { + $mysql->insert('wallet_transactions', [ + 'transaction_id' => safeGet($txn, 'transaction_id') ?: 'txn_' . bin2hex(random_bytes(6)), + 'customer_id' => $doc['customer_id'], + 'amount' => safeGet($txn, 'amount', 0), + 'balance_after' => safeGet($txn, 'balance_after', 0), + 'type' => mapTransactionType(safeGet($txn, 'type')), + 'description' => safeGet($txn, 'description'), + 'order_id' => safeGet($txn, 'order_id'), + 'created_at' => safeGet($txn, 'date') ?: date('Y-m-d H:i:s') + ]); + } catch (Exception $e) { + // Skip transaction errors + } + } + + $count++; + } catch (Exception $e) { + echo " Warning: Could not migrate customer {$doc['email']}: " . $e->getMessage() . "\n"; + } + } + + echo " Migrated $count customers\n\n"; +} + +function mapTransactionType($type) { + $map = [ + 'deposit' => 'deposit', + 'payment' => 'withdrawal', + 'gift_card_purchase' => 'purchase', + 'admin_deposit' => 'deposit', + 'pos_payment' => 'withdrawal', + 'refund' => 'refund' + ]; + return isset($map[$type]) ? $map[$type] : 'deposit'; +} + +/** + * Migrate Products + */ +function migrateProducts($mongodb, $mysql) { + echo "Migrating products...\n"; + + $cursor = $mongodb->products->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + // Map blend_type to category + $category = safeGet($doc, 'blend_type') ?: safeGet($doc, 'category') ?: 'coffee'; + + try { + $mysql->insert('products', [ + 'product_id' => safeGet($doc, 'product_id'), + 'name' => safeGet($doc, 'name'), + 'description' => safeGet($doc, 'description'), + 'price' => safeGet($doc, 'price', 0), + 'sale_price' => safeGet($doc, 'sale_price'), + 'sku' => safeGet($doc, 'sku'), + 'barcode' => safeGet($doc, 'barcode'), + 'category' => $category, + 'tags' => json_encode([safeGet($doc, 'roast_level'), safeGet($doc, 'product_type')]), + 'images' => json_encode([safeGet($doc, 'image_url')]), + 'stock' => safeGet($doc, 'stock_quantity', 100), + 'low_stock_threshold' => safeGet($doc, 'low_stock_threshold', 10), + 'weight' => safeGet($doc, 'weight'), + 'is_active' => safeGet($doc, 'in_stock', true) ? 1 : 0, + 'is_featured' => safeGet($doc, 'on_sale', false) ? 1 : 0, + 'created_at' => safeGet($doc, 'created_at') ?: date('Y-m-d H:i:s') + ]); + $count++; + } catch (Exception $e) { + echo " Warning: Could not migrate product {$doc['name']}: " . $e->getMessage() . "\n"; + } + } + + echo " Migrated $count products\n\n"; +} + +/** + * Migrate Orders + */ +function migrateOrders($mongodb, $mysql) { + echo "Migrating orders...\n"; + + $cursor = $mongodb->orders->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + try { + $mysql->insert('orders', [ + 'order_id' => safeGet($doc, 'order_id'), + 'order_number' => safeGet($doc, 'order_number'), + 'customer_id' => safeGet($doc, 'customer_id'), + 'customer_email' => safeGet($doc, 'customer_email'), + 'customer_name' => safeGet($doc, 'customer_name'), + 'items' => json_encode(safeGet($doc, 'items', [])), + 'subtotal' => safeGet($doc, 'subtotal', 0), + 'shipping_cost' => safeGet($doc, 'shipping_cost', 0), + 'tax' => safeGet($doc, 'tax', 0), + 'discount' => safeGet($doc, 'discount_amount', 0), + 'total' => safeGet($doc, 'total', 0), + 'shipping_address' => json_encode(safeGet($doc, 'shipping_address')), + 'shipping_method' => safeGet($doc, 'shipping_method'), + 'payment_method' => safeGet($doc, 'payment_method'), + 'payment_status' => safeGet($doc, 'payment_status', 'pending'), + 'order_status' => safeGet($doc, 'order_status', 'pending'), + 'stripe_payment_intent' => safeGet($doc, 'checkout_session_id'), + 'tracking_number' => safeGet($doc, 'tracking_number'), + 'notes' => safeGet($doc, 'pos_notes'), + 'is_pos_order' => safeGet($doc, 'pos_order') ? 1 : 0, + 'created_at' => safeGet($doc, 'created_at') ?: date('Y-m-d H:i:s') + ]); + + // Also insert into order_items for reporting + $items = safeGet($doc, 'items', []); + foreach ($items as $item) { + try { + $mysql->insert('order_items', [ + 'order_id' => $doc['order_id'], + 'product_id' => safeGet($item, 'product_id'), + 'name' => safeGet($item, 'name'), + 'price' => safeGet($item, 'price', 0), + 'quantity' => safeGet($item, 'quantity', 1), + 'total' => safeGet($item, 'total', 0) + ]); + } catch (Exception $e) { + // Skip item errors + } + } + + $count++; + } catch (Exception $e) { + echo " Warning: Could not migrate order {$doc['order_number']}: " . $e->getMessage() . "\n"; + } + } + + echo " Migrated $count orders\n\n"; +} + +/** + * Migrate Gift Cards + */ +function migrateGiftCards($mongodb, $mysql) { + echo "Migrating gift cards...\n"; + + $cursor = $mongodb->gift_cards->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + try { + $mysql->insert('gift_cards', [ + 'gift_card_id' => safeGet($doc, 'gift_card_id'), + 'code' => safeGet($doc, 'code'), + 'initial_balance' => safeGet($doc, 'initial_balance', 0), + 'current_balance' => safeGet($doc, 'current_balance', 0), + 'purchaser_email' => safeGet($doc, 'purchased_by_email'), + 'recipient_email' => safeGet($doc, 'recipient_email'), + 'recipient_name' => safeGet($doc, 'recipient_name'), + 'message' => safeGet($doc, 'message'), + 'is_active' => safeGet($doc, 'status') !== 'disabled' ? 1 : 0, + 'created_at' => safeGet($doc, 'created_at') ?: date('Y-m-d H:i:s') + ]); + $count++; + } catch (Exception $e) { + echo " Warning: Could not migrate gift card {$doc['code']}: " . $e->getMessage() . "\n"; + } + } + + echo " Migrated $count gift cards\n\n"; +} + +/** + * Migrate Reviews + */ +function migrateReviews($mongodb, $mysql) { + echo "Migrating reviews...\n"; + + $cursor = $mongodb->product_reviews->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + try { + $mysql->insert('reviews', [ + 'review_id' => safeGet($doc, 'review_id'), + 'product_id' => safeGet($doc, 'product_id'), + 'customer_id' => safeGet($doc, 'customer_id'), + 'customer_name' => safeGet($doc, 'customer_name'), + 'customer_email' => safeGet($doc, 'customer_email'), + 'rating' => safeGet($doc, 'rating', 5), + 'title' => safeGet($doc, 'title'), + 'comment' => safeGet($doc, 'comment'), + 'is_verified_purchase' => safeGet($doc, 'verified_purchase') ? 1 : 0, + 'is_approved' => safeGet($doc, 'status') === 'approved' ? 1 : 0, + 'created_at' => safeGet($doc, 'created_at') ?: date('Y-m-d H:i:s') + ]); + $count++; + } catch (Exception $e) { + echo " Warning: Could not migrate review: " . $e->getMessage() . "\n"; + } + } + + echo " Migrated $count reviews\n\n"; +} + +/** + * Migrate Email Subscribers + */ +function migrateSubscribers($mongodb, $mysql) { + echo "Migrating email subscribers...\n"; + + $cursor = $mongodb->email_subscribers->find(); + $count = 0; + + foreach ($cursor as $doc) { + $doc = docToArray($doc); + + try { + $mysql->insert('email_subscribers', [ + 'email' => safeGet($doc, 'email'), + 'name' => safeGet($doc, 'name'), + 'is_active' => safeGet($doc, 'status') === 'active' ? 1 : 0, + 'source' => safeGet($doc, 'source', 'website'), + 'created_at' => safeGet($doc, 'subscribed_at') ?: date('Y-m-d H:i:s') + ]); + $count++; + } catch (Exception $e) { + // Skip duplicate emails + } + } + + echo " Migrated $count subscribers\n\n"; +} + +/** + * Migrate Settings + */ +function migrateSettings($mongodb, $mysql) { + echo "Migrating settings...\n"; + + // Shipping settings + $shipping = $mongodb->shipping_settings->findOne(['settings_id' => 'shipping_settings']); + if ($shipping) { + $shipping = docToArray($shipping); + $mysql->query( + "UPDATE settings SET setting_value = :val WHERE setting_key = 'shipping'", + ['val' => json_encode([ + 'flat_rate_enabled' => safeGet($shipping, 'flat_rate_enabled', true), + 'flat_rate_amount' => safeGet($shipping, 'flat_rate_amount', 5.99), + 'free_shipping_threshold' => safeGet($shipping, 'free_shipping_threshold', 50), + 'weight_based_enabled' => safeGet($shipping, 'weight_based_enabled', false) + ])] + ); + echo " Migrated shipping settings\n"; + } + + // Payment settings + $payment = $mongodb->payment_settings->findOne(['settings_id' => 'payment_settings']); + if ($payment) { + $payment = docToArray($payment); + $mysql->query( + "UPDATE settings SET setting_value = :val WHERE setting_key = 'payment'", + ['val' => json_encode([ + 'stripe_enabled' => safeGet($payment, 'stripe_enabled', true), + 'paypal_enabled' => safeGet($payment, 'paypal_enabled', false), + 'cod_enabled' => false + ])] + ); + echo " Migrated payment settings\n"; + } + + echo "\n"; +} + +// Run migrations +echo "Starting migration...\n\n"; + +try { + migrateAdminUsers($mongodb, $mysql); + migrateCustomers($mongodb, $mysql); + migrateProducts($mongodb, $mysql); + migrateOrders($mongodb, $mysql); + migrateGiftCards($mongodb, $mysql); + migrateReviews($mongodb, $mysql); + migrateSubscribers($mongodb, $mysql); + migrateSettings($mongodb, $mysql); + + echo "==============================================\n"; + echo "Migration completed successfully!\n"; + echo "==============================================\n"; + +} catch (Exception $e) { + echo "\nMIGRATION ERROR: " . $e->getMessage() . "\n"; + exit(1); +} diff --git a/install/migration_v2.sql b/install/migration_v2.sql new file mode 100644 index 0000000..b4cbb58 --- /dev/null +++ b/install/migration_v2.sql @@ -0,0 +1,37 @@ +-- Migration: Add wishlist table and addresses column to customers +-- Run this in phpMyAdmin to add the new features + +-- Add addresses column to customers table +ALTER TABLE `customers` ADD COLUMN `addresses` JSON DEFAULT NULL AFTER `billing_address`; + +-- Add preferences column to customers table +ALTER TABLE `customers` ADD COLUMN `preferences` JSON DEFAULT NULL AFTER `addresses`; + +-- Add is_active column to customers table if not exists +ALTER TABLE `customers` ADD COLUMN `is_active` TINYINT(1) DEFAULT 1 AFTER `preferences`; + +-- Create wishlist table +CREATE TABLE IF NOT EXISTS `wishlist` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `customer_id` VARCHAR(50) NOT NULL, + `product_id` VARCHAR(50) NOT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + UNIQUE KEY `unique_wishlist` (`customer_id`, `product_id`), + INDEX `idx_customer` (`customer_id`), + INDEX `idx_product` (`product_id`), + FOREIGN KEY (`customer_id`) REFERENCES `customers`(`customer_id`) ON DELETE CASCADE, + FOREIGN KEY (`product_id`) REFERENCES `products`(`product_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Add reorder_level column to products if not exists +ALTER TABLE `products` ADD COLUMN `reorder_level` INT DEFAULT 10 AFTER `low_stock_threshold`; + +-- Add slug column to products if not exists +ALTER TABLE `products` ADD COLUMN `slug` VARCHAR(255) DEFAULT NULL AFTER `name`; +ALTER TABLE `products` ADD INDEX `idx_slug` (`slug`); + +-- Update existing products to have slugs based on name +UPDATE `products` SET `slug` = LOWER(REPLACE(REPLACE(REPLACE(`name`, ' ', '-'), "'", ''), '"', '')) WHERE `slug` IS NULL; + +-- Add is_pos_order to orders table +ALTER TABLE `orders` ADD COLUMN `is_pos_order` TINYINT(1) DEFAULT 0 AFTER `notes`; diff --git a/install/migration_v3.sql b/install/migration_v3.sql new file mode 100644 index 0000000..8b55223 --- /dev/null +++ b/install/migration_v3.sql @@ -0,0 +1,96 @@ +-- Migration: Add tables for push notifications, loyalty program, and integration settings +-- Run this in phpMyAdmin + +-- Push notification subscriptions +CREATE TABLE IF NOT EXISTS `push_subscriptions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `customer_id` VARCHAR(50) DEFAULT NULL, + `endpoint` TEXT NOT NULL, + `p256dh_key` VARCHAR(255) NOT NULL, + `auth_key` VARCHAR(255) NOT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_customer` (`customer_id`), + INDEX `idx_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Push notifications queue +CREATE TABLE IF NOT EXISTS `push_notifications` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `notification_id` VARCHAR(50) NOT NULL UNIQUE, + `subscription_endpoint` TEXT NOT NULL, + `payload` TEXT NOT NULL, + `status` ENUM('pending', 'sent', 'failed') DEFAULT 'pending', + `error_message` TEXT DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `sent_at` TIMESTAMP NULL DEFAULT NULL, + INDEX `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Loyalty transactions history +CREATE TABLE IF NOT EXISTS `loyalty_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `transaction_id` VARCHAR(50) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) NOT NULL, + `points` INT NOT NULL, + `type` ENUM('earn', 'redeem', 'tier_upgrade', 'birthday_bonus', 'referral_bonus', 'referral_welcome', 'adjustment', 'expiry') NOT NULL, + `description` VARCHAR(255) DEFAULT NULL, + `reference_amount` DECIMAL(10,2) DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_customer` (`customer_id`), + INDEX `idx_type` (`type`), + INDEX `idx_created` (`created_at`), + FOREIGN KEY (`customer_id`) REFERENCES `customers`(`customer_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- Add lifetime_points and loyalty_tier to customers +ALTER TABLE `customers` + ADD COLUMN IF NOT EXISTS `lifetime_points` INT DEFAULT 0 AFTER `reward_points`, + ADD COLUMN IF NOT EXISTS `loyalty_tier` ENUM('bronze', 'silver', 'gold', 'platinum') DEFAULT 'bronze' AFTER `lifetime_points`, + ADD COLUMN IF NOT EXISTS `birthday` DATE DEFAULT NULL AFTER `loyalty_tier`, + ADD COLUMN IF NOT EXISTS `referral_code` VARCHAR(20) DEFAULT NULL AFTER `birthday`, + ADD COLUMN IF NOT EXISTS `referred_by` VARCHAR(50) DEFAULT NULL AFTER `referral_code`; + +-- Add unique index on referral_code +ALTER TABLE `customers` ADD UNIQUE INDEX IF NOT EXISTS `idx_referral_code` (`referral_code`); + +-- Update settings table with integration keys (INSERT IGNORE to not overwrite existing) +INSERT IGNORE INTO `settings` (`setting_key`, `setting_value`, `updated_at`) VALUES +('sendgrid_api_key', '', NOW()), +('sendgrid_from_email', 'noreply@tomsjavajive.com', NOW()), +('sendgrid_from_name', 'Tom''s Java Jive', NOW()), +('twilio_account_sid', '', NOW()), +('twilio_auth_token', '', NOW()), +('twilio_phone_number', '', NOW()), +('vapid_public_key', '', NOW()), +('vapid_private_key', '', NOW()), +('loyalty_enabled', '1', NOW()), +('email_notifications_enabled', '1', NOW()), +('sms_notifications_enabled', '0', NOW()), +('push_notifications_enabled', '1', NOW()); + +-- Add Stripe checkout session column to orders +ALTER TABLE `orders` ADD COLUMN IF NOT EXISTS `stripe_checkout_session` VARCHAR(255) DEFAULT NULL AFTER `stripe_payment_intent`; + +-- Payment transactions table for tracking payment attempts +CREATE TABLE IF NOT EXISTS `payment_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `transaction_id` VARCHAR(50) NOT NULL UNIQUE, + `order_id` VARCHAR(50) NOT NULL, + `customer_id` VARCHAR(50) DEFAULT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `currency` VARCHAR(3) DEFAULT 'USD', + `payment_method` VARCHAR(50) DEFAULT 'stripe', + `stripe_session_id` VARCHAR(255) DEFAULT NULL, + `stripe_payment_intent` VARCHAR(255) DEFAULT NULL, + `status` ENUM('initiated', 'pending', 'processing', 'succeeded', 'failed', 'cancelled', 'refunded') DEFAULT 'initiated', + `metadata` JSON DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_order` (`order_id`), + INDEX `idx_customer` (`customer_id`), + INDEX `idx_status` (`status`), + INDEX `idx_stripe_session` (`stripe_session_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + diff --git a/install/schema.sql b/install/schema.sql new file mode 100644 index 0000000..131425f --- /dev/null +++ b/install/schema.sql @@ -0,0 +1,402 @@ +-- Tom's Java Jive - MySQL Database Schema +-- Version: 1.0 +-- Compatible with MySQL 8.0+ + +SET SQL_MODE = "NO_AUTO_VALUE_ON_ZERO"; +SET AUTOCOMMIT = 0; +START TRANSACTION; +SET time_zone = "+00:00"; + +-- -------------------------------------------------------- +-- Database Schema for Tom's Java Jive +-- NOTE: Database must already exist in cPanel +-- Select your database in phpMyAdmin before importing +-- -------------------------------------------------------- + +-- -------------------------------------------------------- +-- Table: settings +-- -------------------------------------------------------- +CREATE TABLE `settings` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `setting_key` VARCHAR(100) NOT NULL UNIQUE, + `setting_value` JSON, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: admin_users +-- -------------------------------------------------------- +CREATE TABLE `admin_users` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `user_id` VARCHAR(50) NOT NULL UNIQUE, + `email` VARCHAR(255) NOT NULL UNIQUE, + `password_hash` VARCHAR(255) DEFAULT NULL, + `name` VARCHAR(255) DEFAULT NULL, + `picture` VARCHAR(500) DEFAULT NULL, + `is_admin` TINYINT(1) DEFAULT 1, + `is_master` TINYINT(1) DEFAULT 0, + `permissions` JSON DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `last_login` TIMESTAMP NULL, + INDEX `idx_email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: customers +-- -------------------------------------------------------- +CREATE TABLE `customers` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `customer_id` VARCHAR(50) NOT NULL UNIQUE, + `email` VARCHAR(255) NOT NULL UNIQUE, + `password_hash` VARCHAR(255) DEFAULT NULL, + `name` VARCHAR(255) DEFAULT NULL, + `phone` VARCHAR(50) DEFAULT NULL, + `shipping_address` JSON DEFAULT NULL, + `billing_address` JSON DEFAULT NULL, + `wallet_balance` DECIMAL(10,2) DEFAULT 0.00, + `reward_points` INT DEFAULT 0, + `is_guest` TINYINT(1) DEFAULT 0, + `created_via` VARCHAR(50) DEFAULT 'web', + `email_verified` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_email` (`email`), + INDEX `idx_customer_id` (`customer_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: products +-- -------------------------------------------------------- +CREATE TABLE `products` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `product_id` VARCHAR(50) NOT NULL UNIQUE, + `name` VARCHAR(255) NOT NULL, + `description` TEXT, + `price` DECIMAL(10,2) NOT NULL, + `sale_price` DECIMAL(10,2) DEFAULT NULL, + `cost_price` DECIMAL(10,2) DEFAULT NULL, + `sku` VARCHAR(100) DEFAULT NULL, + `barcode` VARCHAR(100) DEFAULT NULL, + `category` VARCHAR(100) DEFAULT NULL, + `tags` JSON DEFAULT NULL, + `images` JSON DEFAULT NULL, + `stock` INT DEFAULT 0, + `low_stock_threshold` INT DEFAULT 10, + `weight` DECIMAL(10,2) DEFAULT NULL, + `dimensions` JSON DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `is_featured` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_product_id` (`product_id`), + INDEX `idx_category` (`category`), + INDEX `idx_is_active` (`is_active`), + FULLTEXT INDEX `idx_search` (`name`, `description`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: orders +-- -------------------------------------------------------- +CREATE TABLE `orders` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `order_id` VARCHAR(50) NOT NULL UNIQUE, + `order_number` VARCHAR(20) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) DEFAULT NULL, + `customer_email` VARCHAR(255) NOT NULL, + `customer_name` VARCHAR(255) DEFAULT NULL, + `customer_phone` VARCHAR(50) DEFAULT NULL, + `items` JSON NOT NULL, + `subtotal` DECIMAL(10,2) NOT NULL, + `shipping_cost` DECIMAL(10,2) DEFAULT 0.00, + `tax` DECIMAL(10,2) DEFAULT 0.00, + `discount` DECIMAL(10,2) DEFAULT 0.00, + `gift_card_discount` DECIMAL(10,2) DEFAULT 0.00, + `wallet_amount_used` DECIMAL(10,2) DEFAULT 0.00, + `total` DECIMAL(10,2) NOT NULL, + `shipping_address` JSON DEFAULT NULL, + `billing_address` JSON DEFAULT NULL, + `shipping_method` VARCHAR(50) DEFAULT NULL, + `payment_method` VARCHAR(50) DEFAULT NULL, + `payment_status` ENUM('pending', 'paid', 'failed', 'refunded', 'partially_refunded') DEFAULT 'pending', + `order_status` ENUM('pending', 'confirmed', 'processing', 'shipped', 'delivered', 'cancelled', 'refunded') DEFAULT 'pending', + `stripe_session_id` VARCHAR(255) DEFAULT NULL, + `stripe_payment_intent` VARCHAR(255) DEFAULT NULL, + `tracking_number` VARCHAR(100) DEFAULT NULL, + `tracking_url` VARCHAR(500) DEFAULT NULL, + `notes` TEXT DEFAULT NULL, + `is_pos_order` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_order_id` (`order_id`), + INDEX `idx_customer_id` (`customer_id`), + INDEX `idx_customer_email` (`customer_email`), + INDEX `idx_order_status` (`order_status`), + INDEX `idx_payment_status` (`payment_status`), + INDEX `idx_created_at` (`created_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: order_items (normalized for reporting) +-- -------------------------------------------------------- +CREATE TABLE `order_items` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `order_id` VARCHAR(50) NOT NULL, + `product_id` VARCHAR(50) NOT NULL, + `name` VARCHAR(255) NOT NULL, + `price` DECIMAL(10,2) NOT NULL, + `quantity` INT NOT NULL, + `total` DECIMAL(10,2) NOT NULL, + INDEX `idx_order_id` (`order_id`), + INDEX `idx_product_id` (`product_id`), + FOREIGN KEY (`order_id`) REFERENCES `orders`(`order_id`) ON DELETE CASCADE +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: gift_cards +-- -------------------------------------------------------- +CREATE TABLE `gift_cards` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `gift_card_id` VARCHAR(50) NOT NULL UNIQUE, + `code` VARCHAR(20) NOT NULL UNIQUE, + `initial_balance` DECIMAL(10,2) NOT NULL, + `current_balance` DECIMAL(10,2) NOT NULL, + `purchaser_email` VARCHAR(255) DEFAULT NULL, + `recipient_email` VARCHAR(255) DEFAULT NULL, + `recipient_name` VARCHAR(255) DEFAULT NULL, + `message` TEXT DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `expires_at` TIMESTAMP NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_code` (`code`), + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: gift_card_transactions +-- -------------------------------------------------------- +CREATE TABLE `gift_card_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `gift_card_id` VARCHAR(50) NOT NULL, + `order_id` VARCHAR(50) DEFAULT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `balance_after` DECIMAL(10,2) NOT NULL, + `type` ENUM('purchase', 'redemption', 'refund') NOT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_gift_card_id` (`gift_card_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: wallet_transactions +-- -------------------------------------------------------- +CREATE TABLE `wallet_transactions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `transaction_id` VARCHAR(50) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) NOT NULL, + `amount` DECIMAL(10,2) NOT NULL, + `balance_after` DECIMAL(10,2) NOT NULL, + `type` ENUM('deposit', 'withdrawal', 'purchase', 'refund', 'reward') NOT NULL, + `description` VARCHAR(255) DEFAULT NULL, + `order_id` VARCHAR(50) DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_customer_id` (`customer_id`), + INDEX `idx_type` (`type`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: reviews +-- -------------------------------------------------------- +CREATE TABLE `reviews` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `review_id` VARCHAR(50) NOT NULL UNIQUE, + `product_id` VARCHAR(50) NOT NULL, + `customer_id` VARCHAR(50) DEFAULT NULL, + `customer_name` VARCHAR(255) NOT NULL, + `customer_email` VARCHAR(255) NOT NULL, + `rating` INT NOT NULL CHECK (rating >= 1 AND rating <= 5), + `title` VARCHAR(255) DEFAULT NULL, + `comment` TEXT, + `is_verified_purchase` TINYINT(1) DEFAULT 0, + `is_approved` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_product_id` (`product_id`), + INDEX `idx_is_approved` (`is_approved`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: email_campaigns +-- -------------------------------------------------------- +CREATE TABLE `email_campaigns` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `campaign_id` VARCHAR(50) NOT NULL UNIQUE, + `name` VARCHAR(255) NOT NULL, + `subject` VARCHAR(255) NOT NULL, + `content` TEXT NOT NULL, + `recipient_type` ENUM('all', 'customers_only', 'subscribers_only') DEFAULT 'all', + `status` ENUM('draft', 'scheduled', 'sent', 'cancelled') DEFAULT 'draft', + `scheduled_at` TIMESTAMP NULL, + `sent_at` TIMESTAMP NULL, + `recipients_count` INT DEFAULT 0, + `opened_count` INT DEFAULT 0, + `clicked_count` INT DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_status` (`status`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: email_subscribers +-- -------------------------------------------------------- +CREATE TABLE `email_subscribers` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `email` VARCHAR(255) NOT NULL UNIQUE, + `name` VARCHAR(255) DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `source` VARCHAR(50) DEFAULT 'website', + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: abandoned_carts +-- -------------------------------------------------------- +CREATE TABLE `abandoned_carts` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `cart_id` VARCHAR(50) NOT NULL UNIQUE, + `customer_id` VARCHAR(50) DEFAULT NULL, + `customer_email` VARCHAR(255) DEFAULT NULL, + `items` JSON NOT NULL, + `subtotal` DECIMAL(10,2) NOT NULL, + `recovery_email_sent` TINYINT(1) DEFAULT 0, + `recovered` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_customer_email` (`customer_email`), + INDEX `idx_recovered` (`recovered`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: referrals +-- -------------------------------------------------------- +CREATE TABLE `referrals` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `referral_id` VARCHAR(50) NOT NULL UNIQUE, + `referrer_customer_id` VARCHAR(50) NOT NULL, + `referral_code` VARCHAR(20) NOT NULL UNIQUE, + `referred_customer_id` VARCHAR(50) DEFAULT NULL, + `referred_email` VARCHAR(255) DEFAULT NULL, + `status` ENUM('pending', 'completed', 'expired') DEFAULT 'pending', + `reward_amount` DECIMAL(10,2) DEFAULT 5.00, + `reward_given` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_referral_code` (`referral_code`), + INDEX `idx_referrer` (`referrer_customer_id`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: visitor_sessions +-- -------------------------------------------------------- +CREATE TABLE `visitor_sessions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `session_id` VARCHAR(100) NOT NULL UNIQUE, + `visitor_id` VARCHAR(50) NOT NULL, + `ip_address` VARCHAR(45) DEFAULT NULL, + `user_agent` TEXT DEFAULT NULL, + `current_page` VARCHAR(500) DEFAULT NULL, + `referrer` VARCHAR(500) DEFAULT NULL, + `country` VARCHAR(100) DEFAULT NULL, + `city` VARCHAR(100) DEFAULT NULL, + `is_active` TINYINT(1) DEFAULT 1, + `page_views` INT DEFAULT 1, + `started_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `last_activity` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_is_active` (`is_active`), + INDEX `idx_last_activity` (`last_activity`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: categories +-- -------------------------------------------------------- +CREATE TABLE `categories` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `category_id` VARCHAR(50) NOT NULL UNIQUE, + `name` VARCHAR(255) NOT NULL, + `slug` VARCHAR(255) NOT NULL UNIQUE, + `description` TEXT DEFAULT NULL, + `image` VARCHAR(500) DEFAULT NULL, + `parent_id` VARCHAR(50) DEFAULT NULL, + `sort_order` INT DEFAULT 0, + `is_active` TINYINT(1) DEFAULT 1, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `updated_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP, + INDEX `idx_slug` (`slug`), + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: coupons +-- -------------------------------------------------------- +CREATE TABLE `coupons` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `coupon_id` VARCHAR(50) NOT NULL UNIQUE, + `code` VARCHAR(50) NOT NULL UNIQUE, + `discount_type` ENUM('percentage', 'fixed') NOT NULL DEFAULT 'percentage', + `discount_value` DECIMAL(10,2) NOT NULL, + `min_order_amount` DECIMAL(10,2) DEFAULT NULL, + `max_uses` INT DEFAULT NULL, + `times_used` INT DEFAULT 0, + `is_active` TINYINT(1) DEFAULT 1, + `starts_at` TIMESTAMP NULL, + `expires_at` TIMESTAMP NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_code` (`code`), + INDEX `idx_is_active` (`is_active`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: password_reset_tokens +-- -------------------------------------------------------- +CREATE TABLE `password_reset_tokens` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `email` VARCHAR(255) NOT NULL, + `token` VARCHAR(255) NOT NULL, + `user_type` ENUM('admin', 'customer') NOT NULL, + `expires_at` TIMESTAMP NOT NULL, + `used` TINYINT(1) DEFAULT 0, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + INDEX `idx_token` (`token`), + INDEX `idx_email` (`email`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Table: sessions +-- -------------------------------------------------------- +CREATE TABLE `sessions` ( + `id` INT AUTO_INCREMENT PRIMARY KEY, + `session_id` VARCHAR(128) NOT NULL UNIQUE, + `user_id` VARCHAR(50) DEFAULT NULL, + `user_type` ENUM('admin', 'customer') DEFAULT NULL, + `data` TEXT, + `ip_address` VARCHAR(45) DEFAULT NULL, + `user_agent` VARCHAR(255) DEFAULT NULL, + `created_at` TIMESTAMP DEFAULT CURRENT_TIMESTAMP, + `expires_at` TIMESTAMP NOT NULL, + INDEX `idx_session_id` (`session_id`), + INDEX `idx_expires_at` (`expires_at`) +) ENGINE=InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_unicode_ci; + +-- -------------------------------------------------------- +-- Insert default settings +-- -------------------------------------------------------- +INSERT INTO `settings` (`setting_key`, `setting_value`) VALUES +('store_name', '"Tom\'s Java Jive"'), +('store_email', '"support@tomsjavajive.com"'), +('store_phone', '""'), +('store_address', '""'), +('currency', '"USD"'), +('currency_symbol', '"$"'), +('tax_rate', '0'), +('shipping', '{"flat_rate_enabled": true, "flat_rate_amount": 5.99, "free_shipping_threshold": 50, "weight_based_enabled": false}'), +('payment', '{"stripe_enabled": true, "paypal_enabled": false, "cod_enabled": false}'), +('email', '{"sendgrid_api_key": "", "sender_email": "noreply@tomsjavajive.com", "sender_name": "Tom\'s Java Jive"}'); + +COMMIT; diff --git a/login.php b/login.php new file mode 100644 index 0000000..40467e5 --- /dev/null +++ b/login.php @@ -0,0 +1,89 @@ + + +
+
+
+
+

Welcome Back

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + Forgot password? +
+ + +
+ +
+ +

+ Don't have an account? Create one +

+ +

+ Or track your order with your order number +

+
+
+
+
+ + diff --git a/logout.php b/logout.php new file mode 100644 index 0000000..23933be --- /dev/null +++ b/logout.php @@ -0,0 +1,10 @@ + + + + + + Offline - Tom's Java Jive + + + +
+
+ + + + +
+ +

You're Offline

+

It looks like you've lost your internet connection. Please check your connection and try again.

+ + + +
+

Some pages you've visited before may still be available offline.

+
+
+ + + + diff --git a/order-confirmation.php b/order-confirmation.php new file mode 100644 index 0000000..6080025 --- /dev/null +++ b/order-confirmation.php @@ -0,0 +1,128 @@ +fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + redirect('/'); +} + +// Clear cart and pending order +clearCart(); +unset($_SESSION['pending_order_id']); + +$items = json_decode($order['items'], true) ?? []; +$shippingAddress = json_decode($order['shipping_address'], true) ?? []; + +require_once __DIR__ . '/includes/header.php'; +?> + +
+
+
+
+
+ +
+ +

Thank You!

+

+ Your order has been placed successfully. +

+ +
+
+ Order Number + +
+ +
+ Status + + + +
+ +
+ Total + +
+
+ +
+

Order Details

+ + +
+ + + x + + +
+ + +
+ Subtotal + +
+ +
+ Shipping + 0 ? formatCurrency($order['shipping_cost']) : 'FREE' ?> +
+ +
+ Total + +
+
+ +
+

Shipping Address

+

+
+
+ , + + +

+
+ +

+ A confirmation email has been sent to . + You will receive tracking information once your order ships. +

+ + +
+
+
+
+ + diff --git a/payment.php b/payment.php new file mode 100644 index 0000000..36ed4be --- /dev/null +++ b/payment.php @@ -0,0 +1,287 @@ +fetch( + "SELECT * FROM orders WHERE order_id = :id", + ['id' => $orderId] +); + +if (!$order) { + redirect('/cart.php'); +} + +// If already paid, redirect to confirmation +if ($order['payment_status'] === 'paid') { + clearCart(); + redirect('/order-confirmation.php?order=' . $orderId); +} + +$stripePublishableKey = STRIPE_PUBLISHABLE_KEY; +$stripeConfigured = isStripeConfigured(); +$total = $order['total']; + +require_once __DIR__ . '/includes/header.php'; +?> + +
+
+
+
+

Complete Payment

+
+
+ +
+ Payment was cancelled. Please try again. +
+ + +
+
+ Order # + +
+

+ +

+
+ + + +
+ Demo Mode: Stripe is not configured. Click below to simulate a successful payment. +
+
+ +
+ + +
+ +

or enter card details below

+
+ +
+
+ +
+
+
+ + +
+ + + + +

+ Your payment is secure and encrypted +

+
+
+
+
+ + + + diff --git a/product.php b/product.php new file mode 100644 index 0000000..a7170ee --- /dev/null +++ b/product.php @@ -0,0 +1,252 @@ +fetch( + "SELECT * FROM products WHERE product_id = :id AND is_active = 1", + ['id' => $productId] +); + +if (!$product) { + header('Location: /shop.php'); + exit; +} + +$pageTitle = $product['name'] . " - Tom's Java Jive"; +$pageDescription = truncate(strip_tags($product['description']), 160); + +// Get product reviews +$reviews = db()->fetchAll( + "SELECT * FROM reviews WHERE product_id = :id AND is_approved = 1 ORDER BY created_at DESC LIMIT 10", + ['id' => $productId] +); + +$avgRating = 0; +$reviewCount = count($reviews); +if ($reviewCount > 0) { + $avgRating = array_sum(array_column($reviews, 'rating')) / $reviewCount; +} + +// Get related products +$relatedProducts = db()->fetchAll( + "SELECT * FROM products WHERE category = :category AND product_id != :id AND is_active = 1 LIMIT 4", + ['category' => $product['category'], 'id' => $productId] +); + +$images = json_decode($product['images'] ?? '[]', true); +$mainImage = !empty($images) ? $images[0] : '/assets/images/placeholder-product.svg'; +$salePrice = $product['sale_price']; +$price = $product['price']; +$inStock = $product['stock'] > 0; + +require_once __DIR__ . '/includes/header.php'; +?> + +
+
+
+ + +
+
+ <?= htmlspecialchars($product['name']) ?> +
+ + 1): ?> +
+ $img): ?> + Product image <?= $index + 1 ?> + +
+ +
+ + +
+ +

+ + + +

+ + +

+ + + 0): ?> +
+
+ + + +
+ ( reviews) +
+ + + +
+ + + + + Save % + + + + +
+ + +

+ + In Stock + + - Only left! + + + Out of Stock + +

+ + + +
+
+
+ + + +
+
+ + +
+ + + + + +
+

Description

+
+ +
+
+ + +
+

Product Details

+ + + + + + + + + + + + + + + + + +
SKU
Weight oz
Category
+
+
+
+ + +
+

Customer Reviews

+ + +
+ +
+
+
+
+ + + + Verified Purchase + + +
+ +
+
+ + + +
+ +

+ +

+
+
+ +
+ +

No reviews yet. Be the first to review this product!

+ +
+ + + +
+

Related Products

+ +
+ +
+
+ + diff --git a/register.php b/register.php new file mode 100644 index 0000000..54eea9e --- /dev/null +++ b/register.php @@ -0,0 +1,127 @@ +fetch("SELECT id FROM email_subscribers WHERE email = :email", ['email' => strtolower($email)]); + if (!$existing) { + db()->insert('email_subscribers', [ + 'email' => strtolower($email), + 'name' => $name, + 'source' => 'registration' + ]); + } + } + + setFlash('success', 'Welcome! Your account has been created.'); + redirect('/account/'); + } + } +} + +require_once __DIR__ . '/includes/header.php'; +?> + +
+
+
+
+

Create Your Account

+ + +
+ + +
+ + +
+
+ + +
+ +
+ + +
+ +
+ + +
+ +
+ + + Minimum 8 characters +
+ +
+ + +
+ +
+ +
+ + +
+ +
+ +

+ Already have an account? Sign in +

+
+
+
+
+ + diff --git a/shop.php b/shop.php new file mode 100644 index 0000000..d2bbc9f --- /dev/null +++ b/shop.php @@ -0,0 +1,164 @@ + 'COALESCE(sale_price, price) ASC', + 'price_high' => 'COALESCE(sale_price, price) DESC', + 'name' => 'name ASC', + default => 'created_at DESC' +}; + +// Get total count +$totalProducts = db()->count('products', $whereClause, $params); +$pagination = paginate($totalProducts, $page, 12); + +// Get products +$products = db()->fetchAll( + "SELECT * FROM products WHERE {$whereClause} ORDER BY {$orderBy} LIMIT :limit OFFSET :offset", + array_merge($params, ['limit' => $pagination['per_page'], 'offset' => $pagination['offset']]) +); + +// Get categories for filter +$categories = db()->fetchAll( + "SELECT DISTINCT category FROM products WHERE category IS NOT NULL AND category != '' AND is_active = 1 ORDER BY category" +); + +require_once __DIR__ . '/includes/header.php'; +?> + + +
+
+

Our Coffee Collection

+

Discover your perfect brew from our selection of premium coffees

+
+
+ +
+
+ +
+
+ All + + + + + +
+ +
+
+ + + + + +
+ + +
+
+ + +

+ Showing of products + +

+ + + +
+ +

No products found

+

Try adjusting your search or filters

+ View All Products +
+ +
+ +
+ + <?= htmlspecialchars($product['name']) ?> + + Sale + + Featured + + +
+ +
+ +

+ +

+
+ + + + +
+ +
+
+ +
+ + + 1): ?> +
+ + + + + +
+ + +
+
+ + diff --git a/sw.js b/sw.js new file mode 100644 index 0000000..6145bc2 --- /dev/null +++ b/sw.js @@ -0,0 +1,269 @@ +const CACHE_NAME = 'tomsjavajive-v1'; +const STATIC_CACHE = 'tomsjavajive-static-v1'; +const DYNAMIC_CACHE = 'tomsjavajive-dynamic-v1'; + +// Static assets to cache immediately +const STATIC_ASSETS = [ + '/', + '/shop.php', + '/cart.php', + '/assets/css/style.css', + '/assets/js/main.js', + '/assets/images/logo.png', + '/manifest.json', + '/offline.html' +]; + +// Install event - cache static assets +self.addEventListener('install', (event) => { + console.log('[Service Worker] Installing...'); + + event.waitUntil( + caches.open(STATIC_CACHE) + .then((cache) => { + console.log('[Service Worker] Caching static assets'); + return cache.addAll(STATIC_ASSETS.map(url => { + return new Request(url, { cache: 'no-cache' }); + })).catch(err => { + console.log('[Service Worker] Some assets failed to cache:', err); + return Promise.resolve(); + }); + }) + .then(() => self.skipWaiting()) + ); +}); + +// Activate event - clean up old caches +self.addEventListener('activate', (event) => { + console.log('[Service Worker] Activating...'); + + event.waitUntil( + caches.keys().then((cacheNames) => { + return Promise.all( + cacheNames + .filter((cacheName) => { + return cacheName !== STATIC_CACHE && + cacheName !== DYNAMIC_CACHE && + cacheName.startsWith('tomsjavajive-'); + }) + .map((cacheName) => { + console.log('[Service Worker] Deleting old cache:', cacheName); + return caches.delete(cacheName); + }) + ); + }) + .then(() => self.clients.claim()) + ); +}); + +// Fetch event - serve from cache or network +self.addEventListener('fetch', (event) => { + const { request } = event; + const url = new URL(request.url); + + // Skip non-GET requests + if (request.method !== 'GET') { + return; + } + + // Skip admin panel + if (url.pathname.startsWith('/admin')) { + return; + } + + // Skip API requests (always network) + if (url.pathname.startsWith('/api')) { + return; + } + + // Handle navigation requests + if (request.mode === 'navigate') { + event.respondWith( + fetch(request) + .then((response) => { + // Clone and cache the response + const responseClone = response.clone(); + caches.open(DYNAMIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + return response; + }) + .catch(() => { + // Try to serve from cache + return caches.match(request) + .then((cachedResponse) => { + if (cachedResponse) { + return cachedResponse; + } + // Serve offline page + return caches.match('/offline.html'); + }); + }) + ); + return; + } + + // Handle static assets (cache-first strategy) + if (isStaticAsset(url.pathname)) { + event.respondWith( + caches.match(request) + .then((cachedResponse) => { + if (cachedResponse) { + // Fetch in background to update cache + fetch(request).then((response) => { + if (response.ok) { + caches.open(STATIC_CACHE).then((cache) => { + cache.put(request, response); + }); + } + }).catch(() => {}); + + return cachedResponse; + } + + return fetch(request).then((response) => { + if (response.ok) { + const responseClone = response.clone(); + caches.open(STATIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + } + return response; + }); + }) + ); + return; + } + + // Handle images (cache-first with network fallback) + if (isImageRequest(request)) { + event.respondWith( + caches.match(request) + .then((cachedResponse) => { + if (cachedResponse) { + return cachedResponse; + } + + return fetch(request) + .then((response) => { + if (response.ok) { + const responseClone = response.clone(); + caches.open(DYNAMIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + } + return response; + }) + .catch(() => { + // Return placeholder image + return caches.match('/assets/images/placeholder-product.svg'); + }); + }) + ); + return; + } + + // Default: network-first with cache fallback + event.respondWith( + fetch(request) + .then((response) => { + if (response.ok) { + const responseClone = response.clone(); + caches.open(DYNAMIC_CACHE).then((cache) => { + cache.put(request, responseClone); + }); + } + return response; + }) + .catch(() => { + return caches.match(request); + }) + ); +}); + +// Helper functions +function isStaticAsset(pathname) { + return pathname.match(/\.(css|js|woff|woff2|ttf|eot)$/i); +} + +function isImageRequest(request) { + return request.destination === 'image' || + request.url.match(/\.(png|jpg|jpeg|gif|svg|webp|ico)$/i); +} + +// Push notification handling +self.addEventListener('push', (event) => { + console.log('[Service Worker] Push received'); + + let data = { title: "Tom's Java Jive", body: 'You have a new notification!' }; + + if (event.data) { + try { + data = event.data.json(); + } catch (e) { + data.body = event.data.text(); + } + } + + const options = { + body: data.body, + icon: '/assets/icons/icon-192.png', + badge: '/assets/icons/badge-72.png', + vibrate: [100, 50, 100], + data: { + url: data.url || '/' + }, + actions: [ + { action: 'view', title: 'View' }, + { action: 'close', title: 'Close' } + ] + }; + + event.waitUntil( + self.registration.showNotification(data.title, options) + ); +}); + +// Notification click handling +self.addEventListener('notificationclick', (event) => { + console.log('[Service Worker] Notification clicked'); + + event.notification.close(); + + if (event.action === 'close') { + return; + } + + const url = event.notification.data?.url || '/'; + + event.waitUntil( + clients.matchAll({ type: 'window', includeUncontrolled: true }) + .then((clientList) => { + // Focus existing window if available + for (const client of clientList) { + if (client.url === url && 'focus' in client) { + return client.focus(); + } + } + // Open new window + if (clients.openWindow) { + return clients.openWindow(url); + } + }) + ); +}); + +// Background sync for cart/orders +self.addEventListener('sync', (event) => { + console.log('[Service Worker] Background sync:', event.tag); + + if (event.tag === 'sync-cart') { + event.waitUntil(syncCart()); + } +}); + +async function syncCart() { + // Get pending cart actions from IndexedDB + // and sync with server + console.log('[Service Worker] Syncing cart...'); +} diff --git a/test.php b/test.php new file mode 100644 index 0000000..a04339f --- /dev/null +++ b/test.php @@ -0,0 +1,36 @@ +PHP Test Page

"; +echo "

PHP Version: " . phpversion() . "

"; + +// Test database connection +try { + require_once __DIR__ . '/config/database.php'; + + $dsn = "mysql:host=" . DB_HOST . ";dbname=" . DB_NAME . ";charset=" . DB_CHARSET; + $pdo = new PDO($dsn, DB_USER, DB_PASS, DB_OPTIONS); + + echo "

โœ… Database connection successful!

"; + + // Check if tables exist + $tables = $pdo->query("SHOW TABLES")->fetchAll(PDO::FETCH_COLUMN); + echo "

Tables found: " . count($tables) . "

"; + + if (empty($tables)) { + echo "

โš ๏ธ No tables found. Please import schema.sql via phpMyAdmin.

"; + echo "

Schema file location: /public_html/install/schema.sql

"; + } else { + echo "
    "; + foreach ($tables as $table) { + echo "
  • $table
  • "; + } + echo "
"; + } + +} catch (PDOException $e) { + echo "

โŒ Database error: " . htmlspecialchars($e->getMessage()) . "

"; +} +?>