
#!/bin/bash
# File	: proc_actionlist.sh
# By	: Maarten.deBoer@Atos.net, 190501
# Subject	: Script to process ActionList data
#(0.2),190501	: Added -w|webupd(ate)
#(0.3),190501	: Added status (PRIO=1,new=6,active=2,paused=4,closed=8)
#(0.4),190501	: Added incomming actions
#(0.5),190501	: Mod sort
#(0.6),190501	: Mod's on STATUs
#(0.7),190501	: Added --planning
#(0.8),190504	: Mod. actions
#(0.9),190504	: Adding cmd's by options -s
PGM=`basename $0|cut -d\. -f1`
VER="0.9"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
FROM="actionlist@agrarix.nl"
SENDBACK=""
MAILSUBJECT=""
WEBUPD=""
MAILTO=""
PLANNING=""
SUBJECT=""
SUBJECT1=""
COMMAND=""

DATADIR="${HOME}/data/actionlist"
LISTFILE="${DATADIR}/actionlist.csv"
PLANFILE="${DATADIR}/planning.csv"
WEBADDR="http://actionlist.agrarix.net"
HTMLDIR="/mnt/nas/www/domains/actionlist.agrarix.net/pages"
HTML="${HTMLDIR}/index.html"
FONTFACE="Arial"
FONTSIZE="3"

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options            : "
  echo "     -f|--from     : From address (${FROM})"
  echo "     -h|--help     : This help"
  echo "     -p|--planning : Planning"
  echo "     -s|--subject  : Subject (${SUBJECT})"
  echo "     -w|--webupd   : Web(page) update"
  echo "     -v            : Verbose"
  echo "     -V            : Version"
}

while [ ${#} -gt 0 ]
do
  case "${1}" in
    '-h'|'--help') USAGE; exit 1 ;;
    '-f'|'--from') FROM="${2}"; shift ;;
    '-p'|'--planning') PLANNING=1; shift ;;
    '-s'|'--subject') SUBJECT="${2}"; shift ;;
    '-w'|'--webupd') WEBUPD=1 ;;
    '-x')  set -x ;;
    '-V')  echo "Version=${VER}" ; exit 1 ;;
    *) echo "Option ${1} not found." ; USAGE; exit 1 ;;
  esac
  shift
done

echo "`date` ${PGM} v${VER} started."|tee -a ${LOG}
echo "LOG=${LOG}"
echo "DATADIR=${DATADIR}"
echo "LISTFILE=${LISTFILE}"
echo "FROM=${FROM}"
echo "HTMLDIR=${HTMLDIR}"
echo "HTML=${HTML}"
echo "PLANNING=${PLANNING}"
echo "PLANFILE=${PLANFILE}"
echo "SENDBACK=${SENDBACK}"
echo "SUBJECT=${SUBJECT}"
echo "COMMAND=${COMMAND}"
echo "MAILSUBJECT=${MAILSUBJECT}"
echo "WEBUPD=${WEBUPD}"

touch ${TMP}
if [ ! -d ${DATADIR} ]; then
  echo "  NO DATADIR (${DATADIR}). Creating ..."|tee -a ${LOG}
  mkdir -p ${DATADIR}
fi

# Proc incomming (mail)data
if [ "${SUBJECT}" != "" ]; then
  echo "  Incomming subject: ${SUBJECT}"|tee -a ${LOG}
# Check if Subject is already in LIST-file
# If not, then update as NEW(7)
  grep ";${SUBJECT};" ${LISTFILE}
  EC=${?}
# 1 = NOT found, then create New (2)
  if [ ${EC} -eq 1 ]; then
    CURDAT=`date +%y%m%d`
# Layout = (short)DATE;CAT;SUBJECT;STATUS;
    echo "${CURDAT};_;${SUBJECT};2;" >> ${LISTFILE}
    echo "  Subject (${SUBJECT}) added to LISTFILE (${LISTFILE})."|tee -a ${LOG}
  fi  # EC=0
  if [ ${EC} -eq 0 ]; then
    echo "  Subject (${SUBJECT}) already in list. NOT added."|tee -a ${LOG}
  fi
  

  WEBUPD=1
  SENDBACK=1
fi  # ${SUBJECT} <> ""


# produce (mail) (week) PLANNING ==============================================
if [ ${PLANNING} ]; then
  cat ${PLANFILE}|grep -v ^#|while read LINE
  do
    DAYLINE=`echo ${LINE}|cut -d\; -f1`
    DAYPART=`echo ${LINE}|cut -d\; -f1|cut -d\- -f1`
    CATPART=`echo ${LINE}|cut -d\; -f2`
    echo "------- ${DAYLINE} | ${DAYPART} (${CATPART})-----------"
    egrep "${CATPART}" ${LISTFILE}|egrep ';2;'|grep "${DAYPART}"|cut -d\; -f2,3
    egrep "${CATPART}" ${LISTFILE}|egrep ';3;'|cut -d\; -f2,3

  done  # cat PLANFILE
  
fi  # PLANNING



# WEBUPDate ============================================
if [ ${WEBUPD} ]; then
  echo "  UPDating WEBpage ..."| tee -a ${LOG}
  if [ ! -d ${HTMLDIR} ]; then
    echo "  NO HTMLDIR (${HTMLDIR}) found. Exiting ..."|tee -a ${LOG}
    exit 3
  fi
  if [ ! -f ${LISTFILE} ]; then
    echo "  NO LISTFILE (${LISTFILE}) found. Exiting ..."|tee -a ${LOG}
    exit 4
  fi
  echo "  Copying actionlistfile (${LISTFILE}) to TMP (${TMP}) for sorting ..."
  /bin/cat ${LISTFILE} |/bin/grep -v ^# |while read LINE
  do
    ACTDATE=`echo ${LINE}|cut -d\; -f1`
    ACTCAT=`echo ${LINE}|cut -d\; -f2`
    ACTSUBJECT=`echo ${LINE}|cut -d\; -f3`
    ACTSTATUS=`echo ${LINE}|cut -d\; -f4`
    echo "${ACTSTATUS};${ACTCAT};${ACTSUBJECT};${ACTDATE};" >> ${TMP}
  done  # LISTFILE

  echo "<HTML>" > ${HTML}
  echo "<HEAD>" >> ${HTML}
  echo "</HEAD>" >> ${HTML}
  echo "<BODY>" >> ${HTML}
  echo "<H1>ActionList</H1>" >> ${HTML}

  echo "  <TABLE border=1>" >> ${HTML}

  echo "    <TR>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> STATUS </B> </TD>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> CAT </B> </TD>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> SUBJECT </B> </TD>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> DATE </B> </TD> " >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> Nr </B> </TD>" >> ${HTML}
  echo "    </TR>" >> ${HTML}

# ActionListCounter
  ALCNT=0
# Use TMP to Sort on Cat
  /bin/cat ${TMP}|/usr/bin/sort| while read LINE
  do
    STATUSNR=`echo ${LINE}|cut -d\; -f1`
    CAT=`echo ${LINE}|cut -d\; -f2`
    SUBJECT=`echo ${LINE}|cut -d\; -f3`
    DATE=`echo ${LINE}|cut -d\; -f4`

    echo "${STATUSNR};${CAT};${SUBJECT};${DATE};${ALCNT}"

    if [ "${CAT}" != "" ] ;then
      ALCNT=`expr ${ALCNT} + 1`
      echo "    <TR>" >> ${HTML}

# STATUS
      BGCOL=""
      STATUS="?"
      case ${STATUSNR} in
        1) STATUS="PRIO"; BGCOL="orange" ;;
        2) STATUS="New"; BGCOL="blue" ;;
        3) STATUS="Regular"; BGCOL="lightgreen" ;;
        4) STATUS="Active"; BGCOL="green" ;;
        5) STATUS="Paused"; BGCOL="yellow" ;;
        6) STATUS="On hold"; BGCOL="lightblue" ;;
        7) STATUS="Finished"; BGCOL="pink" ;;
        8) STATUS="Closed"; BGCOL="purple" ;;
        9) STATUS="Unknown"; BGCOL="red" ;;
      esac

      echo "      <TD BGCOLOR=${BGCOL}><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      echo "        ${STATUS}" >> ${HTML}
      echo "      </TD>" >> ${HTML}

      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      echo "        ${CAT}" >> ${HTML}
      echo "      </TD>" >> ${HTML}
      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      echo "        ${SUBJECT}" >> ${HTML}
      echo "      </TD>" >> ${HTML}
      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      echo "        ${DATE}" >> ${HTML}
      echo "      </TD>" >> ${HTML}
      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      echo "        ${ALCNT}" >> ${HTML}
      echo "      </TD>" >> ${HTML}
      echo "    </TR>" >> ${HTML}
    fi

  done  # cat ${TMP}

  echo "  </TABLE>" >> ${HTML}

  echo "<H6> `date` by ${PGM} v${VER} @ ${HOSTNAME} </H6>" >> ${HTML}
  echo "</HTML>" >> ${HTML}

fi  # WEBUPD


# SENDmailBACK ========================================
MAILTO="${FROM} ${MAILTO}"
if [ ${SENDBACK} ]; then
  echo "  Sending mail to ${MAILTO}"|tee -a ${LOG}
  echo "Actionlist has been processed and updated (${WEBADDR})."| mailx -s "Actionlist processed." ${MAILTO}
fi  # SENDBACK


echo "`date` ${PGM} v${VER} finished."|tee -a ${LOG}
rm ${TMP}
exit 0

