#!/bin/bash

# Deploy Media File Fix to Production
# This script fixes media file serving issues on the production server

echo "🔧 Deploying Media File Fix to Production"
echo "=========================================="

# Set the production directory
PROD_DIR="/home/acbptxvs/public_html/ruralpoint.co.ke"

echo "📁 Production directory: $PROD_DIR"

# Check if we're in the right directory
if [ ! -f "manage.py" ]; then
    echo "❌ Error: manage.py not found. Please run this script from the project root."
    exit 1
fi

echo "✅ Found Django project"

# Create a simple media fix script for production
cat > fix_production_media.py << 'EOF'
#!/usr/bin/env python
"""
Fix Media Files in Production
"""

import os
import sys
import django

# Setup Django environment
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'branch_system.settings_production')
django.setup()

from django.conf import settings
from pathlib import Path

def fix_media_files():
    """Fix media file issues in production"""
    print("🔧 Fixing media files in production...")
    
    # Check media directory
    media_root = Path(settings.MEDIA_ROOT)
    if not media_root.exists():
        print(f"Creating media directory: {media_root}")
        media_root.mkdir(parents=True, exist_ok=True)
    
    # Create subdirectories
    subdirs = ['kyc', 'kyc/bank_statements', 'kyc/id_documents', 'kyc/selfies', 'kyc/utility_bills', 'documents']
    for subdir in subdirs:
        subdir_path = media_root / subdir
        if not subdir_path.exists():
            subdir_path.mkdir(parents=True, exist_ok=True)
            print(f"Created: {subdir_path}")
    
    # Set permissions (755 for directories, 644 for files)
    try:
        os.chmod(media_root, 0o755)
        for root, dirs, files in os.walk(media_root):
            for dir_name in dirs:
                os.chmod(os.path.join(root, dir_name), 0o755)
            for file_name in files:
                os.chmod(os.path.join(root, file_name), 0o644)
        print("✅ Set file permissions")
    except Exception as e:
        print(f"⚠️ Warning: Could not set permissions: {e}")
    
    print("✅ Media files fixed!")

if __name__ == "__main__":
    fix_media_files()
EOF

echo "✅ Created production media fix script"

# Run the production fix
echo "🔧 Running production media fix..."
python fix_production_media.py

# Update .htaccess with better media handling
echo "🔧 Updating .htaccess..."
cat > .htaccess << 'EOF'
# Django .htaccess file for cPanel
# This file configures Apache to work with your Django application

# Enable rewrite engine
RewriteEngine On

# Handle static files
RewriteCond %{REQUEST_URI} ^/static/
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^static/(.*)$ /staticfiles/$1 [L]

# Handle media files - serve directly if file exists
RewriteCond %{REQUEST_URI} ^/media/
RewriteCond %{REQUEST_FILENAME} -f
RewriteRule ^media/(.*)$ media/$1 [L]

# Handle media files - fallback to Django if file doesn't exist
RewriteCond %{REQUEST_URI} ^/media/
RewriteCond %{REQUEST_FILENAME} !-f
RewriteRule ^media/(.*)$ /passenger_wsgi.py/media/$1 [QSA,L]

# Redirect all other requests to Django
RewriteCond %{REQUEST_FILENAME} !-f
RewriteCond %{REQUEST_FILENAME} !-d
RewriteRule ^(.*)$ /passenger_wsgi.py/$1 [QSA,L]

# Security headers
<IfModule mod_headers.c>
    Header always set X-Content-Type-Options nosniff
    Header always set X-Frame-Options DENY
    Header always set X-XSS-Protection "1; mode=block"
    Header always set Referrer-Policy "strict-origin-when-cross-origin"
</IfModule>

# Compression
<IfModule mod_deflate.c>
    AddOutputFilterByType DEFLATE text/plain
    AddOutputFilterByType DEFLATE text/html
    AddOutputFilterByType DEFLATE text/xml
    AddOutputFilterByType DEFLATE text/css
    AddOutputFilterByType DEFLATE application/xml
    AddOutputFilterByType DEFLATE application/xhtml+xml
    AddOutputFilterByType DEFLATE application/rss+xml
    AddOutputFilterByType DEFLATE application/javascript
    AddOutputFilterByType DEFLATE application/x-javascript
</IfModule>

# Cache static files
<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresByType text/css "access plus 1 month"
    ExpiresByType application/javascript "access plus 1 month"
    ExpiresByType image/png "access plus 1 month"
    ExpiresByType image/jpg "access plus 1 month"
    ExpiresByType image/jpeg "access plus 1 month"
    ExpiresByType image/gif "access plus 1 month"
    ExpiresByType image/ico "access plus 1 month"
    ExpiresByType image/icon "access plus 1 month"
    ExpiresByType text/plain "access plus 1 month"
    ExpiresByType application/pdf "access plus 1 month"
</IfModule>
EOF

echo "✅ Updated .htaccess"

# Collect static files
echo "🔧 Collecting static files..."
python manage.py collectstatic --noinput

# Run migrations if needed
echo "🔧 Running migrations..."
python manage.py migrate

echo ""
echo "✅ Media file fix deployment completed!"
echo ""
echo "📋 Next Steps:"
echo "1. Restart your web server in cPanel"
echo "2. Test the website: https://ruralpoint.co.ke/"
echo "3. Check if client files are now displaying"
echo "4. Test media access: https://ruralpoint.co.ke/utils/test-media/"
echo ""
echo "🔍 If files still don't display:"
echo "- Check cPanel file permissions (755 for directories, 644 for files)"
echo "- Verify .htaccess is being read by Apache"
echo "- Check cPanel error logs"
echo "- Ensure media directory is in the correct location" 