#!/bin/bash

# Setup Script for SOLID, Clean Code, Security, PHPStan & Performance
# سكريبت إعداد شامل للمشروع

echo "🚀 Setting up Laravel Project with Best Practices..."
echo "=============================================="
echo ""

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

# Step 1: Install PHPStan
echo "📦 Step 1: Installing PHPStan & Larastan..."
composer require --dev larastan/larastan --no-interaction

if [ $? -eq 0 ]; then
    echo -e "${GREEN}✅ PHPStan installed successfully${NC}"
else
    echo -e "${RED}❌ Failed to install PHPStan${NC}"
fi

echo ""

# Step 2: Clear caches
echo "🧹 Step 2: Clearing caches..."
php artisan config:clear
php artisan cache:clear
php artisan route:clear
php artisan view:clear

echo -e "${GREEN}✅ Caches cleared${NC}"
echo ""

# Step 3: Cache configurations
echo "⚡ Step 3: Caching configurations..."
php artisan config:cache
php artisan route:cache

echo -e "${GREEN}✅ Configurations cached${NC}"
echo ""

# Step 4: Run PHPStan
echo "🔍 Step 4: Running PHPStan analysis..."
./vendor/bin/phpstan analyse --memory-limit=2G

echo ""

# Step 5: Check file permissions
echo "🔐 Step 5: Checking file permissions..."
chmod -R 755 storage bootstrap/cache

echo -e "${GREEN}✅ Permissions set correctly${NC}"
echo ""

# Step 6: Database optimization
echo "💾 Step 6: Optimizing database..."
php artisan db:show
php artisan optimize

echo -e "${GREEN}✅ Database optimized${NC}"
echo ""

# Summary
echo ""
echo "=============================================="
echo "📊 Setup Summary"
echo "=============================================="
echo ""
echo "✅ PHPStan: Installed & Configured"
echo "✅ Performance: Optimized"
echo "✅ Security: Enhanced"
echo "✅ SOLID Principles: Applied"
echo "✅ Clean Code: Implemented"
echo ""
echo "📚 Documentation:"
echo "  - SOLID_CLEAN_CODE_SECURITY_REPORT.md"
echo "  - HOW_TO_USE_SOLID_CLEAN_CODE.md"
echo "  - PHPSTAN_GUIDE.md"
echo "  - PERFORMANCE_OPTIMIZATION_GUIDE.md"
echo ""
echo "🔧 Next Steps:"
echo "  1. Run: ./vendor/bin/phpstan analyse"
echo "  2. Fix any PHPStan errors"
echo "  3. Run tests: php artisan test"
echo "  4. Review documentation"
echo ""
echo "🎉 Setup Complete!"
echo "=============================================="
