#!/bin/bash
###########################################################################################################
#	Este script tem o objetivo de realizar o upgrade da versao 10.4 para 11 de forma simples e facil
#	Nao e necessario entrar com nenhuma informaçao, apenas executa-lo e aguardar
#	Rafael Carreiro
#	rafael.oliveira@arcasolutions.com
#	https://netuno.arcasolutions.com/rafael.oliveira/v11-tools
#	iniciar_upgrade_automatico.sh
###########################################################################################################
#
# Modo de usar
#
# Com o usuario do cliente, na pasta raiz do projeto, execute a seguinte linha de comando:
# wget https://s3-sa-east-1.amazonaws.com/upgradev11/scripts/iniciar_upgrade_automatico.sh ; chmod +x iniciar_upgrade_automatico.sh ; ./iniciar_upgrade_automatico.sh

upgrade(){
	#Definindo caminhos
	cd $HOME
	mkdir edirectory
	EDIR_ROOT=$HOME/public_html
	EDIR11_ROOT=$HOME/edirectory
	DOMAIN_STAGING1=`cat $HOME/.dns | cut -f1 -d "@"`

	#Baixando e extraindo codigo-fonte
	cd $EDIR11_ROOT
	wget https://s3-sa-east-1.amazonaws.com/upgradev11/base/live.tar.gz
	tar zxf live.tar.gz
	wget https://s3-sa-east-1.amazonaws.com/upgradev11/base/11.0.00.tar.gz
	tar zxf 11.0.00.tar.gz
	mv 11.0.00 $EDIR11_ROOT/app/Resources/upgrades/
	rm -rf live.tar.gz ._11.0.00 11.0.00.tar.gz

	#Ajustar permissoes
	echo -e "\nAjustando permissoes..."
	find ./ -type d -exec chmod 755 {} \;
	find ./ -type f -exec chmod 644 {} \;
	chmod +x $EDIR11_ROOT/web/bin/linux32bits/reg.bin
	echo -e "Permissoes ok!\n"

	cd $EDIR_ROOT
	echo -e "\n[+]Diretorio edirectory pronto para ser configurado!\n"
	echo -e "DOMAIN_STAGING1\t:$DOMAIN_STAGING1" > info_direto
	echo -e "--------------------------------------------------\n\n" >> info_direto 
	EDIR_VERSION=`grep -E "define\(\"VERSION\"\,\ \"" $EDIR_ROOT/conf/constants.inc.php | cut -f2,3 -d "."`
		echo -e "\nEDIR_VERSION\t:$EDIR_VERSION" >> info_direto
	PREFIX=`grep -E "define\(\"DB_NAME_PREFIX\"\," $EDIR_ROOT/conf/config.inc.php | cut -f4 -d '"'`
		echo -e "PREFIX\t\t\t:$PREFIX" >> info_direto
	IP_DB_HOST=`grep -E "define\(\"_DIRECTORYDB_HOST\"\," $EDIR_ROOT/conf/config.inc.php | cut -f4 -d '"'`
		echo -e "IP_DB_HOST\t\t:$IP_DB_HOST" >> info_direto
	DB_USER=`grep -E "define\(\"_DIRECTORYDB_USER\"\," $EDIR_ROOT/conf/config.inc.php | cut -f4 -d '"'`
		echo -e "DB_USER\t\t\t:$DB_USER" >> info_direto
	DB_PASS=`grep -E "define\(\"_DIRECTORYDB_PASS\"\," $EDIR_ROOT/conf/config.inc.php  | cut -f4 -d '"'`
		echo -e "DB_PASS\t\t\t:$DB_PASS" >> info_direto
	DB_MAIN_NAME=`grep -E "define\(\"_DIRECTORYDB_NAME\"\," $EDIR_ROOT/conf/config.inc.php | cut -f4 -d '"'`
		echo -e "DB_MAIN_NAME\t\t:$DB_MAIN_NAME" >> info_direto
	PROJDOMAIN1=`grep -E "domainInfo\[" $EDIR_ROOT/custom/domain/domain.inc.php | cut -f2 -d '"'`
		echo -e "PROJDOMAIN1\t\t:$PROJDOMAIN1" >> info_direto
	DB_DOMAIN1=`mysql -u$DB_USER -p$DB_PASS -e "use $DB_MAIN_NAME ; select database_name from Domain;" | grep "domain"`
		echo -e "DB_DOMAIN1\t\t:$DB_DOMAIN1" >> info_direto
	BRANDED=`grep -E "BRANDED_PRINT" custom/domain_1/conf/constants.inc.php | cut -f4 -d '"'`
		echo -e "BRANDED\t\t\t:$BRANDED" >> info_direto
	echo -e "--------------------------------------------------\n\n" >> info_direto

	TITLE=eDirectory
	ES_HOST=172.31.13.139
	#Obtendo o idioma do projeto
	LOCALE=$(mysql -u$DB_USER -p$DB_PASS -e "use $DB_DOMAIN1; select id from Lang where lang_enabled='y';")
    LOCALE=`echo $LOCALE | cut -f2 -d " "`

	echo -e "\n[+]Criando arquivos .yml (configs, payment, route) em app/config/domains"
	cd $EDIR11_ROOT/app/config/domains
	cp domain.configs.yml.sample $DOMAIN_STAGING1.configs.yml
	cp domain.payment.yml.sample $DOMAIN_STAGING1.payment.yml
	cp domain.route.yml.sample $DOMAIN_STAGING1.route.yml
	echo -e "[+]OK\n"

	echo "Editando arquivo app/config/domain.yml ..."
	cd $EDIR11_ROOT/app/config/
	sed -i 's/automation.arcasolutions.com/'"$DOMAIN_STAGING1"'/g' domain.yml
	sed -i 's/LOCALE/'"$LOCALE"'/g' domain.yml
	sed -i 's/DB_DOMAIN_NAME/'"$DB_DOMAIN1"'/g' domain.yml
	sed -i 's/ELASTIC_INDEX/'"$DB_DOMAIN1"'/g' domain.yml
	sed -i 's/TITLE/'"$TITLE"'/g' domain.yml
	sed -i 's/.*branded.*/            branded: '"$BRANDED"'/' domain.yml
	echo -e "[+]OK\n"

	echo "Editando arquivo /app/conf/parameters.yml ..."
	sed -i 's/database_host:.*/database_host:\ '"$localhost"'/' parameters.yml
	sed -i 's/database_name:.*/database_name:\ '"$DB_MAIN_NAME"'/' parameters.yml
	sed -i 's/database_user:.*/database_user:\ '"$DB_USER"'/' parameters.yml
	sed -i 's/database_password:.*/database_password:\ \"'"$DB_PASS"'\"/' parameters.yml
	sed -i 's/ES_HOST/'"$ES_HOST"'/' parameters.yml
	sed -i 's/ES_PORT/9200/' parameters.yml
	sed -i 's/TOKEN/eZz8K862WwiZOq71lt8Kr481u1F70v34/' parameters.yml
	echo -e "[+]OK\n"

	echo "Editando arquivo /web/conf/config.inc.php ..."
	cd $EDIR11_ROOT/web/conf
	sed -i 's/\"_DIRECTORYDB_HOST\"\,\ \ \".*/\"_DIRECTORYDB_HOST\"\,\ \ \"'"$IP_DB_HOST"'\"\)\;/' config.inc.php
	sed -i 's/\"_DIRECTORYDB_USER\"\,\ \ \".*/\"_DIRECTORYDB_USER\"\,\ \ \"'"$DB_USER"'\"\)\;/' config.inc.php
	sed -i 's/\"_DIRECTORYDB_PASS\"\,\ \ \".*/\"_DIRECTORYDB_PASS\"\,\ \ \"'"$DB_PASS"'\"\)\;/' config.inc.php
	sed -i 's/\"_DIRECTORYDB_NAME\"\,\ \ \".*/\"_DIRECTORYDB_NAME\"\,\ \ \"'"$DB_MAIN_NAME"'\"\)\;/' config.inc.php 
	sed -i 's/\"DB_NAME_PREFIX\"\,\ \".*/\"DB_NAME_PREFIX\"\,\ \"'"$PROJNAME"'\"\)\;/' config.inc.php
	echo -e "[+]OK\n"

	echo "Editando arquivo web/custom/domain/domain.inc.php ..."
	cd $EDIR11_ROOT/web/custom/domain
	sed -i "s/\$domainInfo\[\".*/\$domainInfo\[\"$DOMAIN_STAGING1\"\]\ \=\ 1\;/g" domain.inc.php
	echo -e "[+]OK\n"

	mysql -u$DB_USER -p$DB_PASS -e "use $DB_MAIN_NAME; update Domain set name='$DOMAIN_STAGING1', url='$DOMAIN_STAGING1' where id='1'"
	echo -e "[+]Sucesso!\n"

	echo -e "\nUpgrade!\n"
	cd $EDIR_ROOT/custom
	
	echo -e "Transferindo domain_1 do cliente para edirectory/web/custom/ ..."
	tar zcf domains.tar.gz domain_*
	mv domains.tar.gz $EDIR11_ROOT/web/custom/
	cd $EDIR11_ROOT/web/custom/
	mv domain_1/ domain_1_bkp_original
	tar zxf domains.tar.gz
	echo -e "Transferencia ok!\n"

	cd $EDIR11_ROOT
	php app/console edirectory:upgrade --env=prod --force
	mysql -u$DB_USER -p$DB_PASS -e "use $DB_DOMAIN1; INSERT INTO Setting (name, value) VALUES ('socialnetwork_feature', 'on');"
	php app/console assets:install --symlink web --env=prod
	php app/console edirectory:synchronize --env=prod --recreate-index --domain=$DOMAIN_STAGING1 -f $DOMAIN_STAGING1
	

	cd $BEFORE_EDIR_ROOT
	echo -e "\nAtualizando public_html...\n"
	mv public_html/ public_html_old
	ln -s edirectory/web public_html
	cd $EDIR11_ROOT
	echo -e "\nSucesso!\n"
	echo -e "\nVisite $DOMAIN_STAGING1 e confira o resultado!\n\n"
	rm -rf $EDIR11_ROOT/app/cache
}

upgrade
