#!/bin/sh echo "Content-type: text/html" echo "" DODBG="false"; export DODBG; tmpfile1="/tmp/tmp1_$$.tmp" tmpfile2="/tmp/tmp2_$$.tmp" rm -f $tmpfile1 rm -f $tmpfile2 ############################################## # TESTING #SDATE="01/06/1996" #EDATE="03/06/1996" MONTH="07/2014" CUSTOMER="Victrack" #SITEID=ALL ############################################## myprogname=`basename "$0"` mytitle="Extracting data from Telmax21" echo "" echo "" echo "$mytitle" echo "" echo "" echo "

$myprogname

" echo "

$mytitle...

" # set environment variables. #. /u/catcom/catcom_vars ################################################################# lastdayinmonth() # Returns the last day in month, Inputs: $1=mm $2=yyyy { cal $1 $2 | awk '{ if ( NF > 0 ) x=$NF } END { print x }' } ################################### # handle params # stdin post if [ "$REQUEST_METHOD" = "POST" ]; then cmd=`echo "$stdinput" | awk -f wbt_splitqstr.awk` $DODBG && echo "cmd=[$cmd]
" >>"$dbgfile" for cmdtok in `echo "$cmd"` do $DODBG && echo "cmdtok=[$cmdtok]
" >>"$dbgfile" fixcmdtok=`echo "$cmdtok" | ./wbt_fixqstr` $DODBG && echo "fixcmdtok=[$fixcmdtok]
" >>"$dbgfile" eval "$fixcmdtok" done $DODBG && echo "
" >>"$dbgfile" fi # process query string if [ ! -z "$QUERY_STRING" ]; then $DODBG && echo "QUERY_STRING=[$QUERY_STRING]
" >>"$dbgfile" qstr=`echo "$QUERY_STRING" | awk -f wbt_splitqstr.awk` $DODBG && echo "qstr=[$qstr]
" >>"$dbgfile" for qtok in `echo "$qstr"` do $DODBG && echo "qtok=[$qtok]
" >>"$dbgfile" #echo "qtok=[$qtok]" >>/tmp/1 fixqtok=`echo "$qtok" | ./wbt_fixqstr` $DODBG && echo "fixqtok=[$fixqtok]
" >>"$dbgfile" #echo "fixqtok=[$fixqtok]" >>/tmp/1 eval $fixqtok done $DODBG && echo "
" >>"$dbgfile" fi # handle cookies if [ ! -z "$HTTP_COOKIE" ]; then cookie=`echo "$HTTP_COOKIE" | awk -f wbt_splitqstr.awk` $DODBG && echo "cookie=[$cookie]
" >>"$dbgfile" for cookietok in `echo "$cookie"` do $DODBG && echo "cookietok=[$cookietok]
" >>"$dbgfile" fixcookietok=`echo "$cookietok" | ./wbt_fixqstr` fixcookietok="conf_$fixcookietok" $DODBG && echo "fixcookietok=[$fixcookietok]
" >>"$dbgfile" eval $fixcookietok done $DODBG && echo "
" >>"$dbgfile" fi ################################### # get lock #LOCKFILE="/tmp/t21websql.lok" #while true #do # if [ ! -f "$LOCKFILE" ]; then # break; # fi # sleep 2 #done #touch $LOCKFILE ################################### if [ -n "$MONTH" ]; then mm=`echo $MONTH | sed -e 's/\/....$//g'` yyyy=`echo $MONTH | sed -e 's/^..\///g'` ldd=`lastdayinmonth $mm $yyyy` SDATE="01/$mm/$yyyy" EDATE="$ldd/$mm/$yyyy" $DODBG && echo "MONTH=[$MONTH] ldd=[$ldd] SDATE=[$SDATE] EDATE=[$EDATE]
" $DODBG && echo "CUSTOMER=[$CUSTOMER]
" fi #if [ -z "$SITEID" -z "$SDATE" -o -z "$EDATE" ]; then # echo "You Must set SITEID, MONTH (mm/yyyy) or SDATE and EDATE (dd/mm/yyyy)" # echo "
" # exit 1 #fi if [ -z "$SITEID" ]; then SITEID="ALL" fi if [ -z "$CUSTOMER" ]; then CUSTOMER="ALL" fi ######## if [ "$SITEID" = "ALL" ]; then SITEBIT="" else SITEBIT="and siteid = $SITEID" fi if [ "$CUSTOMER" = "ALL" -o "$CUSTOMER" = "" ]; then CUSTOMERBIT="" else CUSTOMERBIT="and UPPER(ost_organization.name) = UPPER('$CUSTOMER')" fi ################################################################## SQLCMD0=`cat << MYSQL0 SELECT ost_ticket.number, DATE_FORMAT(ost_ticket_thread.created, '%d/%m/%Y'), ost_ticket__cdata.subject, ost_user.name, --# ost_organization.name, --# ost_staff.username, ost_help_topic.topic, ost_ticket_thread.body FROM ( ost_ticket INNER JOIN ost_ticket__cdata ON ost_ticket.ticket_id = ost_ticket__cdata.ticket_id INNER JOIN ost_ticket_thread ON ost_ticket.ticket_id = ost_ticket_thread.ticket_id AND ost_ticket_thread.thread_type = "N" AND LOWER(ost_ticket_thread.body) REGEXP "time: *[0-9]*" ) LEFT OUTER JOIN ( ost_user LEFT OUTER JOIN ost_organization ON ost_user.org_id = ost_organization.id ) ON ost_user.id = ost_ticket.user_id LEFT OUTER JOIN ost_staff ON ost_staff.staff_id = ost_ticket.staff_id LEFT OUTER JOIN ost_help_topic ON ost_help_topic.topic_id = ost_ticket.topic_id WHERE MONTH(ost_ticket.created)=$mm and YEAR(ost_ticket.created)=$yyyy $CUSTOMERBIT ORDER BY ost_ticket_thread.created, ost_ticket.number MYSQL0 ` ################################################################## echo "SITEID=[$SITEID] MONTH=[$MONTH] SDATE=[$SDATE] EDATE=[$EDATE]
" echo "CUSTOMER=[$CUSTOMER]" echo "SQLCMD0=[$SQLCMD0]" echo "
" sdd=`echo $SDATE | sed -e 's/\/..\/....$//g'` smm=`echo $SDATE | sed -e 's/^..\///g;s/\/....$//g'` syyyy=`echo $SDATE | sed -e 's/^..\/..\///g'` edd=`echo $EDATE | sed -e 's/\/..\/....$//g'` emm=`echo $EDATE | sed -e 's/^..\///g;s/\/....$//g'` eyyyy=`echo $EDATE | sed -e 's/^..\/..\///g'` #(echo "unload to $tmpfile1 $SQLCMD0" | runisql 2>&1) >$tmpfile2 ( echo "$SQLCMD0 INTO OUTFILE '$tmpfile1' FIELDS TERMINATED BY '|' LINES TERMINATED BY '\n'; " | mysql -u apache -ptimsnart osticket 2>&1 ) >$tmpfile2 ##strip tempfile header for improting into excel #sed -i '1d' $tmpfile1 ################################## if [ ! -s $tmpfile1 ]; then echo "NO OUTPUT|SQL:[$SQLCMD0]|" >$tmpfile1 echo "ERROR:|$tmpfile2|" >>$tmpfile1 fi cat $tmpfile1 | sed -e 's/|$//' | awk -F'|' ' END { print "" } function trim(s) { sub(/^[ \t]*/,"",s) sub(/[ \t]*$/,"",s) gsub(/\,/,";",s) return s } function ceil(n) { return (int(n) == n ? n : (int(n) + 1)) } BEGIN { NROWS = 0 prev_rowid = "" print "" } # ussumes data is in datetime order for the Internal Time: threads { print "" printf("", ++cnt) for ( i=1; i <= NF; ++i ) { printf("", $i) } print "\n" print "" NCR = trim($1) NCRdate = trim($2) ticketDesc = trim($3) RequestedBy = trim($4) ServiceType = trim($5) threadtext = trim($6) rowid = NCR "|" NCRdate NCR_arr[rowid] = NCR NCRdate_arr[rowid] = NCRdate ticketDesc_arr[rowid] = ticketDesc RequestedBy_arr[rowid] = RequestedBy ServiceType_arr[rowid] = ServiceType threadtext_arr[rowid] = threadtext # add up timese for each day i = match(tolower(threadtext), /time: *([0-9]*)/, time_sub) if ( i > 0 ) { hours = 0 + time_sub[0,"start"] print " DEBUG: threadtext=[" threadtext "]" print " time_sub[0,\"start\"]=[" time_sub[0,"start"] "]" } else { hours = 0 } hours_daily_total_arr[rowid] += hours if ( rowid != prev_rowid ) { proc_order_arr[++NROWS] = rowid print "DEBUG: proc_order_arr[" NROWS "]=[" proc_order_arr[NROWS] "]" } prev_rowid = rowid } END { print "
%d%s
" print "
" print "" for ( row = 1; row <= NROWS; ++row ) { print "" rowid = proc_order_arr[row] NCR = NCR_arr[rowid] NCRdate = NCRdate_arr[rowid] ticketDesc = ticketDesc_arr[rowid] RequestedBy = RequestedBy_arr[rowid] ServiceType = ServiceType_arr[rowid] threadtext = threadtext_arr[rowid] hours_daily_total = hours_daily_total_arr[rowid] # ceil hours to next whoe number ticket_hours_for_day = ceil(hours_daily_total) printf("", row) printf("", NCR) printf("", NCRdate) printf("", ticketDesc) printf("", RequestedBy) printf("", ServiceType) printf("", ticket_hours_for_day) print "\n" print "" } print "
%d%s%s%s%s%s%d
" } ' #dd=$sdd; mm=$smm; yyyy=$syyyy #while true #do # dodate="$dd/$mm/$yyyy" # tbldate=`echo $dodate | sed -e 's/\//_/g'` # cdrtable="c$tbldate" # $DODBG && echo "dodate=$dodate cdrtable=$cdrtable dd=$dd mm=$mm yyyy=$yyyy" # ############### ############### # # # increment date variables # dd=`expr $dd + 1 | awk '{printf("%02d\n",$1)}'` # if [ $dd -gt `lastdayinmonth $mm $yyyy` ]; then # dd=01 # mm=`expr $mm + 1 | awk '{printf("%02d\n",$1)}'` # if [ $mm -gt 12 ]; then # mm=01 # yyyy=`expr $yyyy + 1 | awk '{printf("%04d\n",$1)}'` # fi # fi # # # break out if we are past end date # if [ $yyyy$mm$dd -gt $eyyyy$emm$edd ]; then # break; # fi # #echo #done # show errors if [ -s $tmpfile2 ]; then echo "
" echo "SQL Status:" cat $tmpfile2 echo "
" fi rm -f $tmpfile1 rm -f $tmpfile2 ############################### # remove lock #rm -f $LOCKFILE ############################### echo "

" echo "Done." echo "" echo "" exit 0