#!/bin/bash

# Define users and folders
users=("alice" "bob" "brian" "charlotte" "david" "emma")
bobFolders=("Search Emails" "Forward Emails" "Disposition" "MailBase64")

# Add users
for user in "${users[@]}"; do
  james-cli AddUser "$user@example.com" "$user"
done

# Create folders for user Bob
for folderName in "${bobFolders[@]}"; do
  echo "Creating $folderName folder for user bob"
  james-cli CreateMailbox \#private "bob@example.com" "$folderName"
done

# Function to check if mailbox exists
function wait_for_mailbox() {
  local email="$1"
  local folder="$2"
  local retries=10
  local count=0

  while [ $count -lt $retries ]; do
    if james-cli ListUserMailboxes "$email" | grep -q "$folder"; then
      echo "Mailbox '$folder' for user '$email' is ready."
      return 0
    fi
    echo "Waiting for mailbox '$folder' to be created..."
    sleep 2
    ((count++))
  done

  echo "Error: Mailbox '$folder' for user '$email' was not created in time."
  return 1
}

# Ensure all mailboxes exist before importing emails
for folderName in "${bobFolders[@]}"; do
  wait_for_mailbox "bob@example.com" "$folderName" || exit 1
done

# For test search email with sort order
# Import emails into 'Search Emails' folder for user Bob
for eml in {0..4}; do
  echo "Importing $eml.eml into 'Search Emails' folder for user bob"
  james-cli ImportEml \#private "bob@example.com" "Search Emails" "/root/conf/integration_test/eml/search_email_with_sort_order/$eml.eml"
done

# For test forward email
# Import emails into 'Forward Emails' folder for user Bob
echo "Importing 0.eml into 'Forward Emails' folder for user bob"
james-cli ImportEml \#private "bob@example.com" "Forward Emails" "/root/conf/integration_test/eml/forward_email/0.eml"

# For test email with no-disposition inline image
# Import email into 'Disposition' folder for user Bob
echo "Importing no_disposition_inline.eml into 'Disposition' folder for user bob"
james-cli ImportEml \#private "bob@example.com" "Disposition" "/root/conf/integration_test/eml/no_disposition_inline/no_disposition_inline.eml"

# For test reply email with image base64
# Import email into 'MailBase64' folder for user Bob
echo "Importing 0.eml into 'MailBase64' folder for user bob"
james-cli ImportEml \#private "bob@example.com" "MailBase64" "/root/conf/integration_test/eml/reply_email_with_image_base64/0.eml"