#!/bin/bash

echo "=========================================="
echo "  WiFi Billing - Deploy to Hosting"
echo "=========================================="
echo

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m' # No Color

echo -e "${BLUE}Preparing files for hosting deployment...${NC}"
echo

# Create deployment directory
echo -e "${YELLOW}Creating deployment package...${NC}"
mkdir -p deploy-package

# Copy necessary files
echo "Copying backend files..."
cp -r backend deploy-package/
echo "Copying admin panel files..."
cp -r admin-panel deploy-package/
echo "Copying database schema..."
cp -r database deploy-package/ 2>/dev/null || echo "Database folder not found, copying from backend..."
mkdir -p deploy-package/database
cp backend/database/schema.sql deploy-package/database/ 2>/dev/null || echo "Schema file not found"

# Copy configuration files
echo "Copying configuration files..."
cp backend/.env.hosting deploy-package/backend/.env.example
cp admin-panel/.env.production deploy-package/admin-panel/.env.example
cp DEPLOY_HOSTING.md deploy-package/
cp README.md deploy-package/

# Create package.json for root
cat > deploy-package/package.json << 'EOF'
{
  "name": "wifi-billing-system",
  "version": "1.0.0",
  "description": "WiFi Billing System for Production Hosting",
  "scripts": {
    "install-backend": "cd backend && npm install --production",
    "install-admin": "cd admin-panel && npm install",
    "build-admin": "cd admin-panel && npm run build",
    "start-backend": "cd backend && npm start",
    "deploy": "npm run install-backend && npm run install-admin && npm run build-admin"
  },
  "engines": {
    "node": ">=16.0.0",
    "npm": ">=8.0.0"
  }
}
EOF

# Remove node_modules to reduce size
echo "Cleaning up node_modules..."
find deploy-package -name "node_modules" -type d -exec rm -rf {} + 2>/dev/null || true
find deploy-package -name "package-lock.json" -delete 2>/dev/null || true

# Create .htaccess for Apache hosting
echo "Creating .htaccess for Apache hosting..."
cat > deploy-package/.htaccess << 'EOF'
RewriteEngine On

# Redirect HTTP to HTTPS
RewriteCond %{HTTPS} off
RewriteRule ^(.*)$ https://%{HTTP_HOST}%{REQUEST_URI} [L,R=301]

# Admin Panel (React App)
RewriteCond %{REQUEST_URI} !^/api
RewriteCond %{REQUEST_URI} !^/uploads
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule . /admin-panel/build/index.html [L]

# API Routes - Adjust path if needed
RewriteRule ^api/(.*)$ /backend/server.js [L,QSA]
EOF

# Create deployment instructions
cat > deploy-package/DEPLOY_INSTRUCTIONS.txt << 'EOF'
WiFi Billing System - Hosting Deployment Instructions
=====================================================

1. UPLOAD FILES:
   - Upload all files to your hosting public_html folder
   - Or create a subfolder like public_html/wifi-billing/

2. SETUP DATABASE:
   - Create MySQL database via cPanel
   - Import database/schema.sql
   - Note database credentials

3. CONFIGURE:
   - Copy backend/.env.example to backend/.env
   - Update database credentials in backend/.env
   - Update domain in backend/.env (CORS_ORIGIN)
   - Copy admin-panel/.env.example to admin-panel/.env.production

4. INSTALL DEPENDENCIES:
   - Via SSH: npm run deploy
   - Or manually: cd backend && npm install --production
   - Then: cd admin-panel && npm install && npm run build

5. START APPLICATION:
   - Via cPanel Node.js Apps (if available)
   - Or via SSH: cd backend && npm start

6. ACCESS:
   - Admin Panel: https://yourdomain.com
   - API: https://yourdomain.com/api
   - Login: admin / admin123

For detailed instructions, see DEPLOY_HOSTING.md
EOF

# Create ZIP file for upload
echo -e "${YELLOW}Creating ZIP file for upload...${NC}"
cd deploy-package
zip -r ../wifi-billing-hosting.zip . -x "*.git*" "*.DS_Store*" "*Thumbs.db*"
cd ..

echo
echo -e "${GREEN}✅ Deployment package created successfully!${NC}"
echo
echo -e "${BLUE}Files created:${NC}"
echo "📦 wifi-billing-hosting.zip - Upload this to your hosting"
echo "📁 deploy-package/ - Extracted files"
echo
echo -e "${YELLOW}Next steps:${NC}"
echo "1. Upload wifi-billing-hosting.zip to your hosting"
echo "2. Extract the ZIP file in public_html"
echo "3. Follow instructions in DEPLOY_INSTRUCTIONS.txt"
echo "4. Read DEPLOY_HOSTING.md for detailed guide"
echo
echo -e "${GREEN}🚀 Ready for hosting deployment!${NC}"