#!/bin/sh
# Ajenda - agenda testuale
# by Andrea "bunker" Purificato
# http://www.rawlab.org

readonly NULL=""

# variabili di configurazione
readonly NOME="Andrea"
readonly COGNOME="Purificato"
readonly PROGDIR="$HOME/.ajenda"
if [[ $DISPLAY == $NULL ]];
   then	 {
	 # editor da console
	 EDITOR="/usr/bin/vim"
	 }
   else	 {
	 # editor visuale
	 EDITOR="/usr/bin/gvim"
	 }
fi

# variabili programma
readonly VERSIONE="0.1"
readonly ANNO=`date +%Y`
readonly MESE=`date +%m`
readonly GIORNO=`date +%d`
readonly ORE=`date +%H:%M`

# variabili colore
# bg
readonly GRAY_BACKGROUND="\033[47m"
readonly BLACK_BACKGROUND="\033[40m"
readonly RED_BACKGROUND="\033[41m"
# light
readonly GREEN="\033[32m"
readonly RED="\033[31m"
readonly WHITE="\033[37m"
readonly YELLOW="\033[33m"
readonly BLUE="\033[34m"
readonly PURPLE="\033[35m"
readonly CYAN="\033[36m"
# bold
readonly BOLD_GREEN="\033[1;32m"
readonly BOLD_RED="\033[1;31m"
readonly BOLD_WHITE="\033[1;37m"
readonly BOLD_YELLOW="\033[1;33m"
readonly BOLD_BLUE="\033[1;34m"
readonly BOLD_PURPLE="\033[1;35m"
readonly BOLD_CYAN="\033[1;36m"
# reset to default colors
readonly RESET="\033[0m"

# creo directory di ajenda
if [ ! -d $PROGDIR ];
   then	 {
	 mkdir $PROGDIR
	 }
fi

# funzione per leggere un appunto
function leggi() {
   echo -e "Anno [$ANNO]?"
   read -n 4 anno
   if [[ $anno == $NULL ]];
      then  {  
	    anno=$ANNO
	    }
      else  echo ""
   fi
   echo -e "Mese [$MESE]?"
   read -n 2 mese 
   if [[ $mese == $NULL ]];
      then  {
	    mese=$MESE
	    }
      else echo ""
   fi
   echo -e "Giorno [$GIORNO]?"
   read -n 2 giorno
   if [[ $giorno == $NULL ]];
      then  {
	    giorno=$GIORNO
	    }
      else echo ""
   fi
   if [ ! -e $PROGDIR/$anno/$mese/$giorno ];
      then  {
	    echo -e "Nessun appunto disponibile per il $giorno/$mese/$anno"
	    }
      else  {
	    clear
	    cat -n $PROGDIR/$anno/$mese/$giorno | more 
	    }
   fi   
}

# funzione per scrivere un appunto
function scrivi() {
   echo -e "Scrivi l'appunto del giorno o ne modifichi uno esistente [$BOLD_RED w$RESET /$BOLD_RED m$RESET ]?"
   read -sn 1 SCELTA
   echo ""
   case $SCELTA in
      w) if [ ! -d $PROGDIR/$ANNO ];
	    then mkdir $PROGDIR/$ANNO
	 fi
	 if [ ! -d $PROGDIR/$ANNO/$MESE ];
	    then mkdir $PROGDIR/$ANNO/$MESE
	 fi
	 if [ ! -e $PROGDIR/$ANNO/$MESE/$GIORNO ];
	    then
	       echo -e "Giorno: $GIORNO/$MESE/$ANNO\nOre: $ORE\n\n" > $PROGDIR/$ANNO/$MESE/$GIORNO 
	    else
	       echo -e "\n--\nOre: $ORE\n\n" >> $PROGDIR/$ANNO/$MESE/$GIORNO
	 fi	 
	 $EDITOR $PROGDIR/$ANNO/$MESE/$GIORNO ;;
      m) echo -e "Anno [$ANNO]?"
	 read -n 4 anno
	 if [[ $anno == $NULL ]];
	    then  {  
		  anno=$ANNO
		  }
	    else  echo ""
	 fi
	 echo -e "Mese [$MESE]?"
	 read -n 2 mese 
	 if [[ $mese == $NULL ]];
	    then  {
		  mese=$MESE
		  }
	    else echo ""
	 fi
	 echo -e "Giorno [$GIORNO]?"
	 read -n 2 giorno
	 if [[ $giorno == $NULL ]];
	 then  {
	       giorno=$GIORNO
	       }
	 else echo ""
	 fi
	 if [ ! -e $PROGDIR/$anno/$mese/$giorno ];
	    then  {
		  echo -e "Nessun appunto disponibile per il $giorno/$mese/$anno"
		  }
	    else  {
		  clear
		  $EDITOR $PROGDIR/$anno/$mese/$giorno 
		  }
	 fi ;;
      *) echo -e "Ops! Hai premuto il tasto sbagliato..."
	 return -1
	 ;;
   esac
}

# funzione per listare gli appunti
function lista() {
   clear
   echo -e "Lista degli appunti disponibili: \n"
   ls -Rt $PROGDIR
}

function aiuto() {
   clear
   echo -e "\n Se e' la prima volta che utilizzi Ajenda non avrai nessun appunto memorizzato."
   echo -e " Utilizza l'opzione$BOLD_RED scrivi$RESET per scrivere il tuo primo appunto e salvalo."
   echo -e " Utilizza le funzioni$BOLD_RED leggi$RESET e$BOLD_RED lista$RESET una volta creati i tuoi appunti!"
   echo -e "\n I tuoi appunti vengono memorizzati in:$BOLD_GREEN $PROGDIR $RESET"
   echo -e "\n Sono organizzati in normali file di testo secondo il semplice schema:"
   echo -e " $BOLD_GREEN\$$PROGDIR/anno/mese/giorno $RESET"
}

# main
ESCI=0
while [[ $ESCI == 0 ]] 
do
   clear
   echo -e "\n$BOLD_RED Ajenda$RESET - Ver$BOLD_RED $VERSIONE $RESET\n"
   if [ -e $PROGDIR/$ANNO/$MESE/$GIORNO ];
      then  {
	    echo -e " Ciao$BOLD_CYAN $NOME $COGNOME $RESET, hai degli appunti oggi!"
	    }
      else  {
	    echo -e " Ciao$BOLD_CYAN $NOME $COGNOME $RESET, oggi non hai appunti!"
	    }
   fi
   echo -e "\n$GREEN   #####################"
   echo -e "   #                   #"
   echo -e "   #$RESET  Leggi \t[$BOLD_RED r $RESET]$GREEN  #"
   echo -e "   #$RESET  Scrivi \t[$BOLD_RED w $RESET]$GREEN  #"
   echo -e "   #$RESET  Lista \t[$BOLD_RED l $RESET]$GREEN  #"
   echo -e "   #$RESET  Aiuto \t[$BOLD_RED h $RESET]$GREEN  #"
   echo -e "   #$RESET  Esci \t[$BOLD_RED q $RESET]$GREEN  #"
   echo -e "   #                   #"
   echo -e "   #####################$RESET\n"
   read -sn 1 SCELTA 
   case $SCELTA in
      r) leggi
	 echo -e "\n [premi un tasto per continuare...]\n"
	 read -sn 1
	 ;;
      w) scrivi
	 echo -e "\n [premi un tasto per continuare...]\n"
	 read -sn 1
	 ;;
      l) lista
	 echo -e "\n [premi un tasto per continuare...]\n" 
	 read -sn 1
	 ;;
      h) aiuto
	 echo -e "\n [premi un tasto per continuare...]\n" 
	 read -sn 1
	 ;;
      q) ESCI=1
	 ;;
      *) echo -e " Ops! Hai premuto il tasto sbagliato..."
	 echo -e "\n [premi un tasto per continuare...]\n" 
	 read -sn 1
	 ;;
   esac
done
exit 0
