#!/bin/bash

help_msg() {
	echo "Usage: $(basename $0) [-h][-v][-u UTILISATEUR_SOURCE][-p NOM_DOSSIER_SOURCE][-a UTILISATEUR_CIBLE][-c NOM_DOSSIER_CIBLE]"
	echo 'Description'
	echo '	-h	affiche cette aide'
	echo '	-v	mode verbeux'
	echo '	-u	nom du dossier utilisateur à copier'
	echo '	-p	nom du dossier patient à transférer'
	echo '	-a	nom du dossier utilisateur qui reçoit les données'
	echo '	-c	nom du dossier patient du nouvel utilisateur'
}

verbose_print() {
	local MESSAGE="${@}"
	if [[ "${VERBOSE}" == true ]];then
	  printf "${MESSAGE}\n"
	fi
}

# Si aucun argument donné, on affiche l'aide
if [[ ${#} -eq 0 ]]; then
	help_msg
	exit 1
fi

# Définition des paramètres
optstring=":hvu:p:a:c:" #getopts cherchera les paramètres listés et attendra une valeur pour ceux suivis d'un ':' 

# Voici la liste des variables utilisées par getopts
# OPTIND => index de l'argument
# OPTARG => valeur de l'option si définie (-u option => OPTARG="option")
# IPTERR => 0 ou 1, si égal à 1 bash affiche les messages d'erreur
OPTION_O=false

while getopts ${optstring} arg ; do #itère sur les paramètres types -p, ne prends pas en compte les positionnels (args), le type long (--long) n'est pas accepté => cas '?)'
	case ${arg} in
	 	h)
		  help_msg
		  exit 0
		  ;;
		v)
		  VERBOSE='true'
		  verbose_print "Mode prolixe activé."
		  ;;
		u)
		  NOM_UTILISATEUR_SOURCE="${OPTARG}"
		  ;;
		p)
		  NOM_DOSSIER_PATIENT_SOURCE="${OPTARG}"
		  ;;
		a)
		  NOM_UTILISATEUR_CIBLE="${OPTARG}"
		  ;;
		c)
		  NOM_DOSSIER_PATIENT_CIBLE="${OPTARG}"
		  ;;
		?)
		  echo "option invalide: -{OPTARG}."
		  echo
		  help_msg
		  echo
		 ;;
	esac
done

verbose_print "Nom chirurgien source: $NOM_UTILISATEUR_SOURCE"
verbose_print "Nom patient source: $NOM_DOSSIER_PATIENT_SOURCE"
verbose_print "Nom utilisateur cible: $NOM_UTILISATEUR_CIBLE"
verbose_print "Nom patient cible: $NOM_DOSSIER_PATIENT_CIBLE"

CHEMIN_DOSSIER_COUPES_IMAGERIE_SOURCE=~/www/sauvegarde_anatomique/${NOM_UTILISATEUR_SOURCE}/coupes_imagerie/${NOM_DOSSIER_PATIENT_SOURCE}
CHEMIN_DOSSIER_COUPES_IMAGERIE_CIBLE=~/www/sauvegarde_anatomique/${NOM_UTILISATEUR_CIBLE}/coupes_imagerie/${NOM_DOSSIER_PATIENT_CIBLE}

CHEMIN_DOSSIER_VOLUMES_SOURCE=~/www/sauvegarde_anatomique/${NOM_UTILISATEUR_SOURCE}/volumes/${NOM_DOSSIER_PATIENT_SOURCE}
CHEMIN_DOSSIER_VOLUMES_CIBLE=~/www/sauvegarde_anatomique/${NOM_UTILISATEUR_CIBLE}/volumes/${NOM_DOSSIER_PATIENT_CIBLE}

CHEMIN_DOSSIER_SCENES_SOURCE=~/www/sauvegarde_anatomique/${NOM_UTILISATEUR_SOURCE}/scenes/${NOM_DOSSIER_PATIENT_SOURCE}
CHEMIN_DOSSIER_SCENES_CIBLE=~/www/sauvegarde_anatomique/${NOM_UTILISATEUR_CIBLE}/scenes/${NOM_DOSSIER_PATIENT_CIBLE}

EXISTANCE_DOSSIERS=true

if [ ! -d ${CHEMIN_DOSSIER_COUPES_IMAGERIE_SOURCE} ]; then
	echo "le dossier ${CHEMIN_DOSSIER_COUPES_IMAGERIE_SOURCE} n'existe pas"
	EXISTENCE_DOSSIERS=false
fi

if [ ! -d ${CHEMIN_DOSSIER_VOLUMES_SOURCE} ]; then
	echo "le dossier ${CHEMIN_DOSSIER_VOLUMES_SOURCE} n'existe pas"
	EXISTANCE_DOSSIERS=false
fi

if [ ! -d ${CHEMIN_DOSSIER_SCENES_SOURCE} ]; then
	echo "le dossier ${CHEMIN_DOSSIER_SCENES_SOURCE} n'existe pas"
	EXISTANCE_DOSSIERS=false
fi

if [[ "${EXISTANCE_DOSSIERS}" == false ]]; then
	echo "Erreur! il manque des données..."
	exit 0
fi

verbose_print "Traitement du $CHEMIN_DOSSIER_COUPES_IMAGERIE_SOURCE :"
if [ ! -d  ${CHEMIN_DOSSIER_COUPES_IMAGERIE_CIBLE} ]; then
	verbose_print " Création dossier ${CHEMIN_DOSSIER_COUPES_IMAGERIE_CIBLE}"
	mkdir ${CHEMIN_DOSSIER_COUPES_IMAGERIE_CIBLE}
fi
cd ${CHEMIN_DOSSIER_COUPES_IMAGERIE_CIBLE}
ln -s ../../../${NOM_UTILISATEUR_SOURCE}/coupes_imagerie/${NOM_DOSSIER_PATIENT_SOURCE}/coupes_imagerie.nrrd -t ${CHEMIN_DOSSIER_COUPES_IMAGERIE_CIBLE}/

verbose_print "Traitement du $CHEMIN_DOSSIER_SCENES_SOURCE :"
if [ ! -d  ${CHEMIN_DOSSIER_SCENES_CIBLE} ]; then
	verbose_print " Création dossier ${CHEMIN_DOSSIER_SCENES_CIBLE}"
	mkdir ${CHEMIN_DOSSIER_SCENES_CIBLE}
fi
cp ${CHEMIN_DOSSIER_SCENES_SOURCE}/scene.txt -t ${CHEMIN_DOSSIER_SCENES_CIBLE}/

verbose_print "Traitement du $CHEMIN_DOSSIER_VOLUMES_SOURCE :"
if [ ! -d  ${CHEMIN_DOSSIER_VOLUMES_CIBLE} ]; then
	verbose_print " Création dossier ${CHEMIN_DOSSIER_VOLUMES_CIBLE}"
	mkdir ${CHEMIN_DOSSIER_VOLUMES_CIBLE}
fi
cd ${CHEMIN_DOSSIER_VOLUMES_CIBLE}
ln -s ../../../${NOM_UTILISATEUR_SOURCE}/volumes/${NOM_DOSSIER_PATIENT_SOURCE}/glene.wrl -t ${CHEMIN_DOSSIER_VOLUMES_CIBLE}/
ln -s ../../../${NOM_UTILISATEUR_SOURCE}/volumes/${NOM_DOSSIER_PATIENT_SOURCE}/humerus.wrl -t ${CHEMIN_DOSSIER_VOLUMES_CIBLE}/
ln -s ../../../${NOM_UTILISATEUR_SOURCE}/volumes/${NOM_DOSSIER_PATIENT_SOURCE}/scapula.wrl -t ${CHEMIN_DOSSIER_VOLUMES_CIBLE}/