#!/bin/bash

# Trust Tax Advisor - Easy Installation (Linux/Mac)
# This script provides a simple, automated setup process

set -e

# Color codes
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
CYAN='\033[0;36m'
NC='\033[0m' # No Color

# Print functions
print_header() {
  echo -e "\n${CYAN}${1}${NC}\n"
}

print_step() {
  echo -e "${BLUE}→${NC}  ${1}"
}

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

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

print_warning() {
  echo -e "${YELLOW}⚠${NC}  ${1}"
}

# Clear screen
clear

# Print banner
echo -e "${CYAN}"
echo "╔═══════════════════════════════════════════════════════╗"
echo "║                                                       ║"
echo "║   Trust Tax Advisor - Easy Installation Setup        ║"
echo "║                                                       ║"
echo "║   Production-Ready SaaS Platform for Tax Pros        ║"
echo "║                                                       ║"
echo "╚═══════════════════════════════════════════════════════╝"
echo -e "${NC}\n"

# Step 1: Check requirements
print_header "Step 1: Checking System Requirements"

print_step "Checking Node.js..."
if ! command -v node &> /dev/null; then
  print_error "Node.js not found. Please install Node.js 14.0 or higher"
  exit 1
fi
NODE_VERSION=$(node --version)
print_success "Node.js $NODE_VERSION found"

print_step "Checking npm..."
if ! command -v npm &> /dev/null; then
  print_error "npm not found. Please install Node.js"
  exit 1
fi
NPM_VERSION=$(npm --version)
print_success "npm $NPM_VERSION found"

# Step 2: Create directories if needed
print_header "Step 2: Verifying Project Structure"

if [ -d "backend" ]; then
  print_success "Backend directory found"
else
  print_error "Backend directory not found"
  exit 1
fi

if [ -d "frontend" ]; then
  print_success "Frontend directory found"
else
  print_error "Frontend directory not found"
  exit 1
fi

if [ -d "database" ]; then
  print_success "Database directory found"
else
  print_error "Database directory not found"
  exit 1
fi

# Step 3: Install backend
print_header "Step 3: Installing Backend"

if [ -f "backend/package.json" ]; then
  print_step "Installing backend dependencies..."
  cd backend
  npm install --legacy-peer-deps
  cd ..
  print_success "Backend dependencies installed"
else
  print_warning "backend/package.json not found, skipping"
fi

# Step 4: Install frontend
print_header "Step 4: Installing Frontend"

if [ -f "frontend/package.json" ]; then
  print_step "Installing frontend dependencies..."
  cd frontend
  npm install --legacy-peer-deps
  cd ..
  print_success "Frontend dependencies installed"
else
  print_warning "frontend/package.json not found, skipping"
fi

# Step 5: Create .env files
print_header "Step 5: Creating Configuration Files"

if [ ! -f "backend/.env" ]; then
  print_step "Creating backend/.env..."
  if [ -f "backend/.env.example" ]; then
    cp backend/.env.example backend/.env
    print_success "backend/.env created (please edit with your credentials)"
  else
    print_warning "backend/.env.example not found"
  fi
else
  print_warning "backend/.env already exists, skipping"
fi

if [ ! -f "frontend/.env" ]; then
  print_step "Creating frontend/.env..."
  if [ -f "frontend/.env.example" ]; then
    cp frontend/.env.example frontend/.env
    print_success "frontend/.env created"
  else
    print_warning "frontend/.env.example not found"
  fi
else
  print_warning "frontend/.env already exists, skipping"
fi

# Step 6: Database setup info
print_header "Step 6: Database Setup"

print_warning "Database setup requires manual action:"
print_step "1. Create database: CREATE DATABASE trust_tax_advisor;"
print_step "2. Import schema: mysql -u root -p trust_tax_advisor < database/schema.sql"
print_step "3. Or use our interactive installer: node install.js"

# Step 7: Summary
print_header "Installation Complete!"

echo -e "${GREEN}✓ All done!${NC}\n"

echo -e "${CYAN}Next Steps:${NC}\n"
echo "  1. Edit configuration files:"
echo "     - backend/.env (database, email, WhatsApp)"
echo "     - frontend/.env (API URL)\n"
echo "  2. Setup database:"
echo "     mysql -u root -p trust_tax_advisor < database/schema.sql\n"
echo "  3. Start development servers:"
echo "     Backend:  cd backend && npm start"
echo "     Frontend: cd frontend && npm run dev\n"
echo -e "${CYAN}Access:${NC}\n"
echo "  Frontend: ${BLUE}http://localhost:3000${NC}"
echo "  Backend:  ${BLUE}http://localhost:5000${NC}\n"
echo -e "${CYAN}For Interactive Setup:${NC}\n"
echo "  Run: ${BLUE}node install.js${NC}\n"
echo -e "${CYAN}Documentation:${NC}\n"
echo "  - README.md"
echo "  - CPANEL_DEPLOYMENT.md"
echo "  - SMTP_SETUP.md"
echo "  - WHATSAPP_SETUP.md\n"

print_success "Happy coding! 🎉"
