#!/bin/bash

# Flutterwave Integration Setup Script
# Run this script after configuration to verify everything is working correctly

echo "╔════════════════════════════════════════════════════════════════════════╗"
echo "║         Flutterwave Payment Integration - Setup Verification           ║"
echo "╚════════════════════════════════════════════════════════════════════════╝"

# Colors for output
RED='\033[0;31m'
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
BLUE='\033[0;34m'
NC='\033[0m'

# Check 1: Environment variables
echo -e "\n${BLUE}[1/6] Checking Environment Variables...${NC}"
if grep -q "FLUTTERWAVE_PUBLIC_KEY" .env; then
    echo -e "${GREEN}✓${NC} FLUTTERWAVE_PUBLIC_KEY is set"
else
    echo -e "${RED}✗${NC} FLUTTERWAVE_PUBLIC_KEY is missing"
fi

if grep -q "FLUTTERWAVE_SECRET_KEY" .env; then
    echo -e "${GREEN}✓${NC} FLUTTERWAVE_SECRET_KEY is set"
else
    echo -e "${RED}✗${NC} FLUTTERWAVE_SECRET_KEY is missing"
fi

# Check 2: Configuration file
echo -e "\n${BLUE}[2/6] Checking Configuration Files...${NC}"
if [ -f "config/flutterwave.php" ]; then
    echo -e "${GREEN}✓${NC} config/flutterwave.php exists"
else
    echo -e "${RED}✗${NC} config/flutterwave.php not found"
fi

# Check 3: PaymentController
echo -e "\n${BLUE}[3/6] Checking Controller Files...${NC}"
if [ -f "app/Http/Controllers/PaymentController.php" ]; then
    echo -e "${GREEN}✓${NC} PaymentController.php exists"
else
    echo -e "${RED}✗${NC} PaymentController.php not found"
fi

# Check 4: Routes
echo -e "\n${BLUE}[4/6] Checking Routes...${NC}"
if grep -q "payment" routes/web.php; then
    echo -e "${GREEN}✓${NC} Payment routes configured"
else
    echo -e "${RED}✗${NC} Payment routes not found in routes/web.php"
fi

# Check 5: Middleware
echo -e "\n${BLUE}[5/6] Checking Middleware...${NC}"
if grep -q "api/webhooks/flutterwave" app/Http/Middleware/VerifyCsrfToken.php 2>/dev/null; then
    echo -e "${GREEN}✓${NC} Webhook CSRF exemption configured"
else
    echo -e "${YELLOW}!${NC} Webhook CSRF exemption not found - ensure VerifyCsrfToken.php has webhook exemption"
fi

# Check 6: Database
echo -e "\n${BLUE}[6/6] Checking Database Migrations...${NC}"
if [ -f "database/migrations/*_add_flutterwave_fields_to_payments.php" ] || \
   ls database/migrations/*flutterwave* 2>/dev/null | grep -q .; then
    echo -e "${GREEN}✓${NC} Flutterwave migration file exists"
    echo -e "${YELLOW}→${NC} Run: php artisan migrate"
else
    echo -e "${YELLOW}!${NC} Flutterwave migration file not found"
fi

# Summary
echo -e "\n${BLUE}═══════════════════════════════════════════════════════════════════════${NC}"
echo -e "\n${GREEN}Installation Summary:${NC}"
echo -e "
✓ PaymentController created with:
  - initializePayment() endpoint
  - handleCallback() for payment completion
  - handleWebhook() for real-time updates
  - payment verification methods

✓ Configuration files created:
  - config/flutterwave.php
  - Updated .env and .env.example

✓ Routes added:
  - POST /payment/{reference}/initialize
  - GET /payment/callback
  - POST /api/webhooks/flutterwave
  - GET /payment/methods

✓ Booking form updated with payment method selection

✓ Database models updated:
  - Payment model with Flutterwave support
  - Booking model integration

${YELLOW}Next Steps:${NC}
1. Add your Flutterwave API keys to .env:
   FLUTTERWAVE_PUBLIC_KEY=pk_...
   FLUTTERWAVE_SECRET_KEY=sk_...

2. Configure webhook in Flutterwave dashboard:
   URL: https://your-domain.com/api/webhooks/flutterwave

3. Run database migrations:
   php artisan migrate

4. Test the payment flow:
   - Visit a package booking page
   - Select Flutterwave payment method
   - Complete a test transaction

5. Monitor logs:
   tail -f storage/logs/laravel.log

${BLUE}Documentation: FLUTTERWAVE_SETUP.md${NC}
"

echo -e "${BLUE}═══════════════════════════════════════════════════════════════════════${NC}"
