#!/bin/bash
###############################################################################
# Script de instalacion de BulmaGes.
# (C) Tomeu Borras y Rene Merou Septiembre 2004
# Este documento es GPL
#------------------------------------------------------------------------------
# Parametros
#     $1 : --texto
#          --dialog (por defecto)
###############################################################################


version="v"`cat version`" - server"
direj=$(pwd)


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

# Borramos antiguos archivos que puedan dar problemas.
if [ -e /tmp/bulmages/errores.txt ]; then
   rm -f /tmp/bulmages/errores.txt
fi
if [ -e /tmp/bulmages/listdb.lst ]; then
   rm -f /tmp/bulmages/listdb.lst
fi
if [ -e /tmp/bulmages/listuser.lst ]; then
   rm -f /tmp/bulmages/listuser.lst
fi
if [ -e /tmp/bulmages/error.txt ]; then
   rm -f /tmp/bulmages/error.txt
fi


# Esta funcion presenta mensajes por pantalla.
function mensaje() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e "$2" "$1"  "$3"
   elif [ -e /usr/bin/xdialog ]; then
      xdialog --title "Instalacion de BulmaGes $version" --backtitle "Asociacion Iglues" --msgbox "$1" 10 60
   else
      dialog --title "Instalacion de BulmaGes $version" --backtitle "Asociacion Iglues" --msgbox "$1" 10 60
   fi
}


# Esta funcion presenta mensajes.
function info() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e  "$2" "$1"  "$3"
   elif [ -e /usr/bin/xdialog ]; then
      xdialog --title "Instalacion de BulmaGes $version" --backtitle "Asociacion Iglues" --infobox "$1" 10 60
   else
      dialog --title "Instalacion de BulmaGes $version" --backtitle "Asociacion Iglues" --infobox "$1" 10 60
   fi
}


#Esta funcion crea usuarios que van a manejar la base de datos.
function lee() {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
      echo -e  "\033[33m""Indique el usuario que va a trabajar normalmente con el programa:"  "\033[0m"
      read user
   elif [ -e /usr/bin/xdialog ]; then
      xdialog --title "Instalacion de BulmaGes $version" --inputbox "Nombre del usuario que va a trabajar normalmente con BulmaGes. \n deje el campo en blanco para terminar." 10 60  2>/tmp/bulmages/dialog.ans
      user=`cat /tmp/bulmages/dialog.ans`
      rm -f /tmp/bulmages/dialog.ans # don't litter !
   else
      xdialog --title "Instalacion de BulmaGes $version" --inputbox "Nombre del usuario que va a trabajar normalmente con BulmaGes. \n deje el campo en blanco para terminar." 10 60  2>/tmp/bulmages/dialog.ans
      user=`cat /tmp/bulmages/dialog.ans`
      rm -f /tmp/bulmages/dialog.ans # don't litter !
   fi
   while [ "$user" != "" ]
   do
      su - postgres -c "createuser --adduser --createdb $user"
      if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
         echo -e  "\033[33m""Indique el usuario que va a trabajar normalmente con el programa:"  "\033[0m"
         read user
      elif [ -e /usr/bin/xdialog ]; then
         dialog --title "Instalacion de BulmaGes $version" --inputbox "Nombre del usuario que va a trabajar normalmente con BulmaGes. \n deje el campo en blanco para terminar." 10 60  2>/tmp/bulmages/dialog.ans
         user=`cat /tmp/bulmages/dialog.ans`
         rm -f /tmp/bulmages/dialog.ans # don't litter !
      else
         dialog --title "Instalacion de BulmaGes $version" --inputbox "Nombre del usuario que va a trabajar normalmente con BulmaGes. \n deje el campo en blanco para terminar." 10 60  2>/tmp/bulmages/dialog.ans
         user=`cat /tmp/bulmages/dialog.ans`
         rm -f /tmp/bulmages/dialog.ans # don't litter !
      fi
   done
}

function tiempo {
  sleep 1.5
}

function linea {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
     echo -e "\033[32m----------------------------------------------\033[0m\n"
   fi
}

function dlinea {
   if [ ! -e /usr/bin/dialog -a ! -e /usr/bin/xdialog -o $texto = 1 ]; then
     echo -e "\033[32m===============================================\033[0m\n"
   fi
}


function instalararchivos {
   # Hacemos una insercion inicial de las bases de datos.
   info "Inicializando directorio /usr/share/bulmages.\n"
   tiempo
   if [ ! -e /usr/share/bulmages ]; then
      mkdir /usr/share/bulmages
   fi

   info "Instalando archivos de revision del archivo de configuracion. \n"
   tiempo
   cp rev-* /usr/share/bulmages

   info "Instalando archivos de ayuda del programa, imagenes, iconos, listados y traducciones. \n"
   tiempo
   cp -r dbmodels /usr/share/bulmages
   cp -r ayuda /usr/share/bulmages
}

# Comprobamos que estamos ejecutando como root el programa
if [ ! $(whoami) = "root" ]; then
   mensaje "Este script de instalacion debe ejecutarse como root. \n"
   exit 1
fi


# Iniciamos el tema de los errores.
if [ -e /tmp/bulmages/errores.txt ]; then
    rm -f /tmp/bulmages/errores.txt
fi

#Comprobamos que estamos en el directorio adecuado
if [ ! -e ./installbulmages-server ]; then
 mensaje "Directorio incorrecto. La instalacion debe ejecutarse desde el directorio donde se encuentra el script. \n"
 exit 1
fi


#instal alos archivos necesarios para el servidor.
instalararchivos


# Distinguimos entre una instalacion y una actualizacion.
info "Comprobando la existencia de versiones anteriores. \n" "\033[32m" "\033[0m"
tiempo
if [ -e /etc/bulmages/bulmages-server.conf ]; then
   # Tratando base de datos de.
   # La forma mas limpia para obtener un listado de las bases de datos instaladas.
   LIST_DATABASES=`su - postgres -c "echo 'SELECT datname FROM pg_database' | psql -t template1"`
   for database in $LIST_DATABASES; do
	dlinea
	info "Comprobamos $database \n"
	   su - postgres -c "/usr/share/bulmages/dbmodels/actualizabulmafact --texto $database"
	   su - postgres -c "/usr/share/bulmages/dbmodels/actualizabulmacont --texto $database"
   done 
else

      info "Creando bases de datos del sistema y empresas de ejemplo. \n"
      tiempo

      # Creamos las bases de datos para bulmacont.
      su - postgres -c "/usr/share/bulmages/dbmodels/creabulmacont $ptexto bulmacont 2 BulmaCont 2006"
      su - postgres -c "/usr/share/bulmages/dbmodels/creabulmacont $ptexto bgplangcont 1 \"Plan Contable Vacio\" 2006"
      
      # Creamos las bases de datos para bulmafact.
      su - postgres -c "/usr/share/bulmages/dbmodels/creabulmafact $ptexto bulmafact 2 \"Facturacion Vacia\""
      
      # Tratamos el archivo de configuracion.
      info "Instalando la nueva version del archivo de configuracion. \n"
      touch /etc/bulmages/bulmages-server.conf
      # Dejamos que la insercionœ del usuario la haga una funcionœ y asi encapsulamos un poco.
      lee
fi

# Presentamos los errores acaecidos.
if [ -e /tmp/bulmages/errores.txt ]; then
   cat /tmp/bulmages/errores.txt | grep ERROR
fi
      
mensaje "INSTALACION FINALIZADA CON EXITO" "\033[32m" "\033[0m"
