#!/bin/bash

# Automated Deployment Script for AiBiMagics E-commerce Platform
# Usage: bash deploy.sh

set -e  # Exit on error

echo "========================================="
echo "AiBiMagics E-commerce Deployment Script"
echo "========================================="

# Configuration
PROJECT_DIR="/var/www/aibimagics"
VENV_DIR="$PROJECT_DIR/venv"
PROJECT_NAME="aibimagics"

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

# Functions
print_success() {
    echo -e "${GREEN}✓ $1${NC}"
}

print_error() {
    echo -e "${RED}✗ $1${NC}"
}

print_info() {
    echo -e "${YELLOW}→ $1${NC}"
}

# Check if running as root
if [ "$EUID" -eq 0 ]; then 
    print_error "Please do not run as root. Use sudo for individual commands if needed."
    exit 1
fi

# Navigate to project directory
print_info "Navigating to project directory..."
cd $PROJECT_DIR
print_success "Current directory: $(pwd)"

# Activate virtual environment
print_info "Activating virtual environment..."
source $VENV_DIR/bin/activate
print_success "Virtual environment activated"

# Pull latest code (if using Git)
# print_info "Pulling latest code from repository..."
# git pull origin main
# print_success "Code updated"

# Install/Update dependencies
print_info "Installing Python dependencies..."
pip install -r requirements.txt --upgrade
print_success "Dependencies installed"

# Run migrations
print_info "Running database migrations..."
python manage.py makemigrations
python manage.py migrate
print_success "Migrations completed"

# Collect static files
print_info "Collecting static files..."
python manage.py collectstatic --noinput
print_success "Static files collected"

# Create necessary directories
print_info "Creating necessary directories..."
mkdir -p media/products media/profiles logs
chmod -R 755 media logs
print_success "Directories created"

# Restart services
print_info "Restarting services..."

# Restart Gunicorn
sudo supervisorctl restart aibimagics-gunicorn
print_success "Gunicorn restarted"

# Restart Celery
sudo supervisorctl restart aibimagics-celery
print_success "Celery worker restarted"

# Restart Celery Beat
sudo supervisorctl restart aibimagics-celery-beat
print_success "Celery beat restarted"

# Reload Nginx
sudo nginx -t && sudo systemctl reload nginx
print_success "Nginx reloaded"

# Check service status
print_info "Checking service status..."
sudo supervisorctl status
print_success "All services status checked"

# Clear cache (optional)
print_info "Clearing Redis cache..."
python manage.py shell -c "from django.core.cache import cache; cache.clear()"
print_success "Cache cleared"

# Run health checks
print_info "Running health checks..."
python manage.py check --deploy
print_success "Health checks passed"

echo ""
echo "========================================="
print_success "Deployment completed successfully!"
echo "========================================="
echo ""
print_info "Application URL: https://yourdomain.com"
print_info "Admin Panel: https://yourdomain.com/admin/"
print_info "API Docs: https://yourdomain.com/api/docs/"
echo ""
print_info "Logs location: $PROJECT_DIR/logs/"
print_info "To view logs: tail -f $PROJECT_DIR/logs/gunicorn-error.log"
echo ""
print_success "Deployment finished! 🎉"
