#!/bin/bash

FICH_CONF_CENTRO="/usr/share/vitalinux/conf-centro/vx-centro.conf.json"
CURSO=( $(vx-curso-academico) )

EXPIRAR="false"
ELIMINAR="false"
MODIFICAR="false"

help() {
    echo "#> ${0}: Script encargado de gestionar cuentas de usuario relacionadas con cursos académicos"
    echo ">> Es necesario pasar parámetros para indicar que deseamos hacer."
    echo "#> Uso de parámetros (todos opcionales):"
    echo -e "\t'-e': Expira las cuentas de usuario que de cursos académicos pasados o las que se indiquen a través de la opción -u"
    echo -e "\t'-d': Elimina todas las cuentas de usuario que estén expiradas en el sistema o sólo las expiradas que se pasen como parámetro -u"
    echo -e "\t'-m': Modifica en el JSON del centro las referencias al curso académico en las secciones relativas a usuarios"
    echo -e "\t'-u': Permite pasar una lista de usuarios separados por [;:,.] para las opciones anteriores"
    echo -e "\t'-a': Indica que queremos hacer todo lo anterior, equivalente a -edm"
    echo "#> Uso: $0 [-u usu1,usu2,...] [-e]"
    echo -e "Ej. ${0} '-e' '-u' 'usu1,usu2,...'"
    exit 1
}

while getopts :haedmu: OPT; do
    case "${OPT}" in
        a)  EXPIRAR="true"
            ELIMINAR="true"
            MODIFICAR="true"
        ;;
        e) EXPIRAR="true" ;;
        d) ELIMINAR="true" ;;
        m) MODIFICAR="true" ;;
        u) USUARIOS="${OPTARG}" ;;
        \?) help ;;
        :) help ;;
        h | *) help ;;
    esac
done

if [[ "${USUARIOS}" ]] ; then
  LISTA_USUARIOS=( $(sed -e "s/[;:,.]/ /g" <<< ${USUARIOS}) )
  LISTA_USUARIOS_GRAFICOS=( "${LISTA_USUARIOS[@]}" )
  LISTA_USUARIOS_GRAFICOS_CURSO_ANTERIOR=( "${LISTA_USUARIOS[@]}" )
else
  LISTA_USUARIOS=()
  LISTA_USUARIOS_GRAFICOS=( $(awk -F: '($3 >= 1000) {print $1}' "/etc/passwd") )
  LISTA_USUARIOS_GRAFICOS_CURSO_ANTERIOR=(
        $(awk -F: '($3 >= 1000) {print $1}' "/etc/passwd" | grep -E "$(( CURSO[0] - 1 ))" | grep -E "$(( CURSO[0] ))" )
    )
fi

# 1) Empezamos eliminando usuarios que tengan la cuenta explirada para eliminar rastros:
if "${ELIMINAR}" ; then
    echo "#> Eliminamos las cuentas de usuario que estén expiradas:"
    vx-usuarios-eliminar-inhabilitados "${LISTA_USUARIOS[@]}"
fi

# 2) Expiramos cuentas de usuario de cursos anteriores:
if "${EXPIRAR}" ; then
  if [[ "${LISTA_USUARIOS[@]}" ]] ; then
    echo "#> Expiraramos cuentas de usuarios gráficos: ${LISTA_USUARIOS[*]}:"
    vx-usuarios-expirar-dia-siguiente "${LISTA_USUARIOS[@]}"
  else
    echo "#> Expiraramos cuentas de usuarios gráficos del curso académico anterior $(( CURSO[0] - 1 ))_$(( CURSO[1] - 1 )): ${LISTA_USUARIOS_GRAFICOS_CURSO_ANTERIOR[*]}:"
    vx-usuarios-expirar-dia-siguiente "${LISTA_USUARIOS_GRAFICOS_CURSO_ANTERIOR[@]}"
  fi    
fi

# 3) Modificamos el JSON para adoptar las nuevas fechas del nuevo curso:
if "${MODIFICAR}" ; then
    echo "#> Modifcamos las fechas de los usuarios anuales a crear: $(( CURSO[0] - 1 ))_$(( CURSO[1] - 1 )) => ${CURSO[0]}_${CURSO[1]}:"
    vx-conf-centro-mod_curso_academico "${FICH_CONF_CENTRO}"
fi

echo "#> Fin de la renovación de las cuentas de usuario del Curso Académico ${CURSO[*]}"
