
#!/bin/bash
# File	: proc_change.sh
# By	: Maarten.deBoer@Atos.net, 190507
# Subject	: Script to process Change subject
#(0.2),190507	: Mod. COLOR
#(0.3),190521	: Add CMD's
#(0.4),190521	: Added CA/SDM URL at change
#(0.5),190521	: Mod CMD
PGM=`basename $0|cut -d\. -f1`
VER="0.5b"
TMP="/tmp/${PGM}.$$"
LOG="${HOME}/log/${PGM}.log"
FROM="changelist@agrarix.nl"
SENDBACK=""
MAILSUBJECT=""
WEBUPD=""
MAILTO=""
PLANNING=""
SUBJECT=""
SUBJECT1=""
COMMAND=""
HOSTNAME=`hostname|cut -d\. -f1`
MAILHTML=""
MAILHTMLTO="nl19471@nlxmss04.bcklan.ao-srv.com"
CMD=""
PRECAURL="https://sdm.global.atos-srv.net/CAisd/pdmweb.exe?OP=SEARCH+FACTORY=chg+SKIPLIST=1+QBE.EQ.chg_ref_num="
CHNRFILTER="ATF:"
DATEFILTER="20"
MAIL=""


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

USAGE()
{
  echo "Usage: ${PGM} [options]"
  echo "Options            : "
  echo "     -f|--from     : From address (${FROM})"
  echo "     -h|--help     : This help"
  echo "     -m|--mailhtml : Mail html to (${MAILHTMLTO})"
  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 ;;
    '-m'|'--mailhtml') MAILHTML=1 ;;
    '-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 "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 is command, by starting with - and separated by space and "ending" with :
  ANSW=`echo ${SUBJECT}| grep "^\-*"`
echo "ANSW=${ANSW}|" |tee -a ${LOG}
  if [ "${ANSW}" =! "" ]; then
    CMD=`echo ${SUBJECT}|awk '{print $1}'|cut -d\: -f1`
    SUBJECT=`echo ${SUBJECT}|cut -d\: -f2-`
    echo "  CMD=${CMD} SUBJECT=${SUBJECT}"|tee -a ${LOG}
  else
# Check if Subject is already in LIST-file
# If not, then update as NEW(7)
    grep ";${SUBJECT};" ${LISTFILE}
    EC=${?}
    echo "EC=${EC}"|tee -a ${LOG}
# 1 = NOT found, then create New (2)
    if [ ${EC} -eq 1 ]; then
      CURDAT=`date +%y%m%d`
# Layout = ModDATE;CH.NR;SUBJECT;CH.DATE;
      echo "${CURDAT};${SUBJECT};<ChangeNr>;29991231;" >> ${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
    MAILHTML=1
  fi  # ANSW <> ""
  if [ "${CMD}" != "" ]; then
    echo "  CMD=${CMD}"|tee -a ${LOG}
    case "${CMD}" in
      -h | --help)
        echo "HELP:" >> ${TMP}
        ;;
    esac

    MAIL=1
  fi  # CMD<>""
 
fi  # ${SUBJECT} <> ""



# WEBUPDate ============================================
if [ ${WEBUPD} ]; then
  echo "  UPDating WEBpage ..."| tee -a ${LOG}
  UPDATE=`date +%Y-%m-%d-%H-%M-%S`
  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
    CHMDATE=`echo ${LINE}|cut -d\; -f1`
# Empty ACTSUBJECT when 1st char of Subject is #
    CHSUBJECT=`echo ${LINE}|cut -d\; -f2|grep -v ^#`
    CHNR=`echo ${LINE}|cut -d\; -f3`
    CHDATE=`echo ${LINE}|cut -d\; -f4`
    if [ "${CHSUBJECT}" != "" ]; then
      echo "${CHDATE};${CHNR};${CHSUBJECT};${CHMDATE};" >> ${TMP}
    fi
  done  # LISTFILE

  echo "<HTML>" > ${HTML}
  echo "<HEAD>" >> ${HTML}
  echo " <META NAME='generator' content='${PGM} v${VER}' /> " >> ${HTML}
  echo " <META NAME='up-date' content='${UPDATE}' /> " >> ${HTML}
  echo "  <title>ChangeList</title> " >> ${HTML}
  echo "</HEAD>" >> ${HTML}
  echo "<BODY>" >> ${HTML}
  echo "<H1>ChangeList</H1>" >> ${HTML}

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

  echo "    <TR>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> Ch.Date ^ </B> </TD>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> Change Nr </B> </TD>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> Change (subject) </B> </TD>" >> ${HTML}
  echo "      <TD> <FONT face=${FONTFACE} size=${FONTSIZE}> <B> M.Date </B> </TD> " >> ${HTML}
  echo "    </TR>" >> ${HTML}

# Use TMP to Sort on Cat
  /bin/cat ${TMP}|/usr/bin/sort -r| while read LINE
  do
#      echo "${CHDATE};${CHNR};${CHSUBJECT};${CHMDATE};" >> ${TMP}
    CHDATE=`echo ${LINE}|cut -d\; -f1`
    CHANGENR=`echo ${LINE}|cut -d\; -f2`
    SUBJECT=`echo ${LINE}|cut -d\; -f3`
    MDATE=`echo ${LINE}|cut -d\; -f4`

    echo "${CHDATE};${CHANGENR};${SUBJECT};${MDATE};"

    if [ "${SUBJECT}" != "" ] ;then
      echo "    <TR>" >> ${HTML}

# COLORs
      BGCOL=""
      CURDATE=`date +%Y%m%d`
echo "CURDATE=${CURDATE} CHDATE=${CHDATE}"
      if [ ${CURDATE} -gt ${CHDATE} ];  then
        BGCOL="lightgreen"
      fi
      if [ ${CURDATE} -eq ${CHDATE} ];  then
        BGCOL="orange"
      fi
      if [ ${CURDATE} -lt ${CHDATE} ];  then
        BGCOL="yellow"
      fi
      if [ "${CHANGENR}" = "<ChangeNr>" ];  then
        BGCOL="lightblue"
        CHANGENR="ChangeNr ??"
      fi
      if [ "${CHANGENR}" = "" ];  then
        BGCOL="lightblue"
        CHANGENR="ChangeNr ??"
      fi

      ANSW=`echo "${CHDATE}"|grep "${DATEFILTER}"`
      if [ "${ANSW}" != "" ]; then
        echo "      <TD BGCOLOR=${BGCOL}><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      else
        echo "      <TD BGCOLOR=blue><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      fi
      echo "        ${CHDATE}" >> ${HTML}
      echo "      </TD>" >> ${HTML}

      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      ANSW=`echo "${CHANGENR}"|grep "${CHNRFILTER}"`
      if [ "${ANSW}" != "" ]; then
        echo "        <A HREF=\"${PRECAURL}${CHANGENR}\" TARGET="_blank" >${CHANGENR}" >> ${HTML}
      else
        echo "        ${CHANGENR}" >> ${HTML}
      fi
      echo "      </TD>" >> ${HTML}
      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
# When SUBJECT starts with FAKE. Print Italic
      ANSW=`echo ${SUBJECT}|grep ^FAKE`
      if [ "${ANSW}" != "" ]; then
        echo "        <I> ${SUBJECT}" >> ${HTML}
      else
        echo "        ${SUBJECT}" >> ${HTML}
      fi
      echo "      </TD>" >> ${HTML}
      echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
      echo "        ${MDATE}" >> ${HTML}
      echo "      </TD>" >> ${HTML}
      echo "    </TR>" >> ${HTML}
    fi

  done  # cat ${TMP}

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

  echo "  <TABLE border=0>" >> ${HTML}
  echo "    <TR>" >> ${HTML}
  echo "      <TD><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
  echo "        Ch.Date legenda:" >> ${HTML}
  echo "      </TD>" >> ${HTML}
  echo "      <TD BGCOLOR="blue"><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
  echo "        Incorrect date" >> ${HTML}
  echo "      </TD>" >> ${HTML}
  echo "      <TD BGCOLOR="lightblue"><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
  echo "        Unknown Ch.Nr" >> ${HTML}
  echo "      </TD>" >> ${HTML}
  echo "      <TD BGCOLOR="yellow"><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
  echo "        Upcomming" >> ${HTML}
  echo "      </TD>" >> ${HTML}
  echo "      <TD BGCOLOR="orange"><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
  echo "        Today" >> ${HTML}
  echo "      </TD>" >> ${HTML}
  echo "      <TD BGCOLOR="lightgreen"><FONT face=${FONTFACE} size=${FONTSIZE}> " >> ${HTML}
  echo "        Old" >> ${HTML}
  echo "      </TD>" >> ${HTML}
  echo "    </TR>" >> ${HTML}
  echo "  </TABLE>" >> ${HTML}

  echo "<H6> `date` by ${PGM} v${VER} @ ${HOSTNAME} (mailed HTML to ${MAILHTMLTO}) </H6>" >> ${HTML}
  echo "</HTML>" >> ${HTML}

fi  # WEBUPD


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

if [ ${MAILHTML} ]; then
  MAILTO="${MAILHTMLTO}"
  echo "  Sending HTML by mail to ${MAILTO}"|tee -a ${LOG}
  cat ${HTML} | mailx -s "${PGM}.html: " ${MAILTO}
fi  # MAILHTML

if [ ${MAIL} ]; then
  MAILTO="${FROM}"
  echo "  Sending mail to ${MAILTO}"|tee -a ${LOG}
  cat ${TMP} | mailx -s "${PGM} " ${MAILTO}
fi  # MAIL

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

