#!/bin/bash
#  (C) Tomeu Borr� Riera, Octubre 2004
# Lo ejecuta un usuario con privilegios para crear bases de datos. Si no no funciona.
#
# Este script se encarga de crear bases de datos de bulmages.
# para ello precisa de dos parametros (el nombre de la base de datos a crear y el tipo de base de datos que ser�
# Este script no se encarga de hacer las inserciones oportunas en la metabd.
# Aunque es una tarea muy sencilla que puede hacer posteriormente.
# PARAMETROS:
#		$1 Tipo: Texto o dialogo
#               $2 Nombre Base de Datos
#               $3 Tipo:  0.- Base (Vacia)
#			  1.- No se usa de .
#			  2.- Juego de prueba de bulmafact
#		$4 Nombre de la Empresa
#
# La diferencia entre este script y el anterior es que este no hace falta que se ejecute como ROOT
# ------------------------------------------------------------------------------------------------


version="v0.9.1"

#Buscamos el parametro para saber si es texto o no
if [ "$1" = "--texto" ]; then
  texto="1"
  ptexto="--texto"
else
  texto="0"
  ptexto="--dialog"
fi


#Si el nmero de parametros no es el correcto salimos con un mensaje de error.
if [ "$4" = "" ]; then
   echo "creabulmafact [--texto | --dialog] nombre [0 | 1 | 2] nomempresa"
   echo " opcion 0: Base de datos Vacia, (si duda elija esta opcion)"
   echo " opcion 2: Juego de pruebas de bulmafact. Base de datos de ejemplo."
   exit
fi



function mensaje() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e "$1"
   elif [ -e /usr/bin/xdialog ]; then
      xdialog --title "Creacion Base de Datos $version" --backtitle "Asociacion Iglues" --msgbox "$1" 15 60
   else
      dialog --title "Creacion Base de Datos $version" --backtitle "Asociacion Iglues" --msgbox "$1" 15 60
   fi
}


function info() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e "$1"
   elif [ -e /usr/bin/xdialog ]; then
      xdialog  --title "Creacion Base de Datos $version" --backtitle "Asociacion Iglues" --infobox "$1" 10 60
   else
      dialog  --title "Creacion Base de Datos $version" --backtitle "Asociacion Iglues" --infobox "$1" 10 60
   fi
}

function tiempo {
  sleep 1.5
}

function linea {
   if [ ! -e /usr/bin/dialog ]; then
     echo -e "\033[32m----------------------------------------------\033[0m\n"
   fi
}

if [ -e /tmp/errores.txt ]; then
  rm -f /tmp/errores.txt
fi


#Nos situamos en el directorio correcto.
cd /usr/share/bulmages/dbmodels


info "Creamos la base de datos:$2 $3"
tiempo

#dropdb  $2 2>> /tmp/error.txt > /dev/null
# Comprobamos que la base de datos no exista ya en el sistema.
LANG_PSQL=`psql -l | grep $2`
if [ "$LANG_PSQL" != "" ]; then
	mensaje "No se puede crear la base de datos $2 porque ya existe en el sistema"
	exit 1
fi;


# La creacion de las bases de datos como UNICODE da muchos problemas con los caracteres especiales
# Por ese motivo de momento crearemos las bases de datos como SQL_ASCII
#createdb -E UNICODE $2 2>> /tmp/errores.txt > /dev/null
createdb -E UNICODE $2 2>> /tmp/errores.txt > /dev/null

# Creamos la base
info "Importamos el esquema de base de datos de una empresa. \n"
tiempo
psql $2 < crear/bulmafact/bulmafact_schema.sql 2>> /tmp/errores.txt > /dev/null
tiempo

psql $2 < crear/bulmafact/bulmafact_data.sql 2>> /tmp/errores.txt > /dev/null
tiempo

#Ponemos el nombre que corresponde
info "Realizando configuraciones adicionales. \n"
echo "UPDATE configuracion SET valor='$4' WHERE nombre='NombreEmpresa';" | psql $2 >/dev/null
tiempo



if [ "$3" = "1" -o "$3" = "2" ]; then
# Aqu se pondrian los scripts que carguen datos por defecto que puedan ser necesarios pero no imprescindibles
# p.e. Codificacion de Surtido AECOC, lista de provincias espanyolas, codigos postales...
   tiempo
fi




if [ "$3" = "2" ]; then
   # Cargamos todas las tablas que son de ejemplo.
   info "Cargamos datos adicionales. \n"
   psql $2 < crear/bulmafact/bulmafact_data2.sql 2>> /tmp/errores.txt > /dev/null
   tiempo
fi




if [ -e /tmp/errores.txt ]; then
   DBS=`cat /tmp/errores.txt | grep ERROR`
fi
if [ "$DBS" ]; then
   mensaje "Se han producido errores al instalar la base de datos $2 \n Se abortara instalacion. Para mas informacion consulte http://www.iglues.org . \n$DBS"
   dropdb $2
   exit 1
else
   info "La instalacion de la base de datos $2 ha sido un exito. \n"
   if [ -e /tmp/errores.txt ]; then
      rm -f /tmp/errores.txt
   fi
   if [ -e /tmp/error.txt ]; then
      rm -f /tmp/error.txt
   fi
fi
