#!/bin/bash

# Verificar si el archivo fue pasado como parámetro
if [ -z "$1" ]; then
    echo "Por favor, proporciona el archivo con los nombres de las tiendas."
    exit 1
fi

# Archivo con los nombres de las tiendas
stores_file="$1"

# Inicializar el array de tiendas y cargar nombres desde el archivo
stores=()
while IFS= read -r line; do
    stores+=("$line")
done < "$stores_file"

# Array con los nombres de las tiendas
# stores=()  # Añade más nombres de tienda según sea necesario
# Cargar nombres desde stores.txt en el array 'stores'
# readarray -t stores < stores.txt


# Configuración inicial
prestashop_url="https://github.com/PrestaShop/PrestaShop/releases/download/8.2.0/prestashop_8.2.0.zip"
prestashop_zip="/tmp/prestashop_outer.zip"  # Cambié el nombre para reflejar el archivo externo

# Ruta base donde estarán las tiendas
base_path="/var/www/webs/semi.internacional.ausiascenter.es"


# Credenciales de la base de datos
db_prefix="psCIS_"
db_user="ps_cis"
db_password="ps_cis_2425"

# Función para establecer permisos adecuados
set_permissions() {
    store_path="$1"
    echo "Estableciendo permisos adecuados para $store_path..."
    sudo chown -R www-data:www-data "$store_path"
    sudo find "$store_path" -type d -exec chmod 755 {} \;
    sudo find "$store_path" -type f -exec chmod 644 {} \;
}

# Descargar PrestaShop si no está ya descargado
if [ ! -f "$prestashop_zip" ]; then
    echo "Descargando PrestaShop..."
    wget -q -O "$prestashop_zip" "$prestashop_url"
fi

# Extraer el archivo externo .zip
inner_zip="/tmp/prestashop_inner.zip"  # Almacenaremos el segundo archivo aquí
unzip -q -o "$prestashop_zip" -d /tmp
mv /tmp/prestashop.zip "$inner_zip"

# Recorrer las tiendas en el array
for store in "${stores[@]}"; do
    echo "Instalando tienda para $store..."

    # Crear el directorio de la tienda si no existe
    store_path="$base_path/$store"
    if [ ! -d "$store_path" ]; then
        mkdir -p "$store_path"
    fi


 # Extraer el ZIP de PrestaShop en la carpeta de la tienda
    if [ -f "$inner_zip" ]; then
        echo "Descomprimiendo PrestaShop para $store..."
        unzip -o -q "$inner_zip" -d "$store_path"
        sleep 1

        # Establecer los permisos adecuados
        set_permissions "$store_path"
		
        # Desactivar advertencias y configuraciones JSON
		echo "Configurando error_reporting..."
		php -r "error_reporting(E_ALL & ~E_NOTICE & ~E_WARNING & ~E_STRICT & ~E_DEPRECATED);"
        # sleep 5
        #php "$store_path/bin/console" cache:clear --env=prod
		#php "$store_path/bin/console" module:uninstall ps_metrics --no-interaction
        
        # Instalación de PrestaShop desde la línea de comandos
        echo "Instalando PrestaShop para -- $store -- en https://semi.internacional.ausiascenter.es/$store"
        
		# Procede con la instalación aquí
        php "$store_path/install/index_cli.php" \
            --domain="semi.internacional.ausiascenter.es" \
            --base_uri="/$store/" \
            --db_server="localhost" \
            --db_name="${db_prefix}${store}" \
            --db_user="$db_user" \
            --db_password="$db_password" \
            --db_create=1 \
            --db_clear=1 \
            --prefix="$db_prefix" \
            --firstname="John" \
            --lastname="Doe" \
            --password="admin_password" \
            --email="admin@example.com" \
            --name="Tienda Alumno" \
            --activity=0 \
            --language="es" \
            --country="es" \
            --timezone="Europe/Madrid" \
            --newsletter=0 \
            --send_email=0 \
            --ssl=1 \
			--rewrite=1 \
            --theme="classic" \
			--fixtures=1 

		# Limpiar caché y desactivar módulo ps_metrics
		php "$store_path/bin/console" cache:clear --env=prod
		# php "$store_path/bin/console" prestashop:module uninstall ps_metrics
		
        # Renombrar la carpeta install por seguridad
        echo "Renombrando carpeta install por seguridad en $store..."
        mv "$store_path/install" "$store_path/install-backup"
    else
        echo "No se encontró un archivo prestashop.zip para $store"
    fi
            # Establecer los permisos adecuados
        set_permissions "$store_path"
done

# Reactivar configuración de error_reporting para producción
php -r "error_reporting(E_ALL);"

echo "Instalación completada para todas las tiendas."
