#!/bin/bash

# Скрипт для удаления приложения Brabus из Azure Cloud

# Цвета для вывода
GREEN='\033[0;32m'
YELLOW='\033[1;33m'
RED='\033[0;31m'
NC='\033[0m' # No Color

# Проверяем, установлен ли Azure CLI
if ! command -v az &> /dev/null; then
    echo -e "${RED}Azure CLI не установлен. Пожалуйста, установите его перед запуском скрипта.${NC}"
    echo "Инструкции: https://docs.microsoft.com/en-us/cli/azure/install-azure-cli"
    exit 1
fi

# Проверяем, авторизован ли пользователь в Azure
echo -e "${YELLOW}Проверка авторизации в Azure...${NC}"
az account show > /dev/null 2>&1
if [ $? -ne 0 ]; then
    echo -e "${YELLOW}Требуется авторизация в Azure. Запуск процесса входа...${NC}"
    az login
    if [ $? -ne 0 ]; then
        echo -e "${RED}Ошибка авторизации в Azure. Выход.${NC}"
        exit 1
    fi
fi

# Загружаем переменные окружения
if [ -f .env ]; then
    echo -e "${GREEN}Загрузка переменных окружения из файла .env${NC}"
    export $(grep -v '^#' .env | xargs)
else
    echo -e "${RED}Файл .env не найден. Пожалуйста, укажите переменные окружения вручную${NC}"
    
    # Запрашиваем нужные переменные
    read -p "Введите имя группы ресурсов: " AZURE_RESOURCE_GROUP
    if [ -z "$AZURE_RESOURCE_GROUP" ]; then
        echo -e "${RED}Имя группы ресурсов обязательно. Выход.${NC}"
        exit 1
    fi
    
    read -p "Введите имя реестра контейнеров (или нажмите Enter, если не нужно удалять): " AZURE_CONTAINER_REGISTRY
    read -p "Введите имя учетной записи хранения (или нажмите Enter, если не нужно удалять): " AZURE_STORAGE_ACCOUNT
    read -p "Введите имя Key Vault (или нажмите Enter, если не нужно удалять): " AZURE_KEY_VAULT_NAME
fi

# Запрашиваем подтверждение перед удалением
echo -e "${RED}ВНИМАНИЕ: Вы собираетесь удалить следующие ресурсы:${NC}"
echo -e "${RED}  - Группа контейнеров: brabus-container-group в группе ресурсов ${AZURE_RESOURCE_GROUP}${NC}"

if [ ! -z "$AZURE_CONTAINER_REGISTRY" ]; then
    echo -e "${RED}  - Реестр контейнеров: ${AZURE_CONTAINER_REGISTRY}${NC}"
fi

if [ ! -z "$AZURE_STORAGE_ACCOUNT" ]; then
    echo -e "${RED}  - Учетная запись хранения: ${AZURE_STORAGE_ACCOUNT}${NC}"
fi

if [ ! -z "$AZURE_KEY_VAULT_NAME" ]; then
    echo -e "${RED}  - Key Vault: ${AZURE_KEY_VAULT_NAME}${NC}"
fi

read -p "Вы уверены, что хотите продолжить? (y/n): " -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]; then
    echo -e "${YELLOW}Операция отменена пользователем.${NC}"
    exit 0
fi

# Удаляем группу контейнеров
echo -e "${YELLOW}Удаление группы контейнеров...${NC}"
az container delete \
    --resource-group $AZURE_RESOURCE_GROUP \
    --name brabus-container-group \
    --yes

# Удаляем реестр контейнеров, если указан
if [ ! -z "$AZURE_CONTAINER_REGISTRY" ]; then
    echo -e "${YELLOW}Удаление реестра контейнеров ${AZURE_CONTAINER_REGISTRY}...${NC}"
    az acr delete \
        --resource-group $AZURE_RESOURCE_GROUP \
        --name $AZURE_CONTAINER_REGISTRY \
        --yes
fi

# Удаляем учетную запись хранения, если указана
if [ ! -z "$AZURE_STORAGE_ACCOUNT" ]; then
    echo -e "${YELLOW}Удаление учетной записи хранения ${AZURE_STORAGE_ACCOUNT}...${NC}"
    az storage account delete \
        --resource-group $AZURE_RESOURCE_GROUP \
        --name $AZURE_STORAGE_ACCOUNT \
        --yes
fi

# Удаляем Key Vault, если указан
if [ ! -z "$AZURE_KEY_VAULT_NAME" ]; then
    echo -e "${YELLOW}Удаление Key Vault ${AZURE_KEY_VAULT_NAME}...${NC}"
    
    # Сначала нужно изменить политику удаления, чтобы обойти защиту от удаления
    az keyvault update \
        --name $AZURE_KEY_VAULT_NAME \
        --resource-group $AZURE_RESOURCE_GROUP \
        --enable-purge-protection false \
        --enable-soft-delete false
    
    # Теперь можно удалить Key Vault
    az keyvault delete \
        --name $AZURE_KEY_VAULT_NAME \
        --resource-group $AZURE_RESOURCE_GROUP
fi

# Запрашиваем, нужно ли удалить всю группу ресурсов
read -p "Хотите полностью удалить группу ресурсов ${AZURE_RESOURCE_GROUP}? (y/n): " -n 1 -r
echo
if [[ $REPLY =~ ^[Yy]$ ]]; then
    echo -e "${YELLOW}Удаление группы ресурсов ${AZURE_RESOURCE_GROUP}...${NC}"
    az group delete --name $AZURE_RESOURCE_GROUP --yes
fi

echo -e "${GREEN}Удаление ресурсов завершено!${NC}"
