#!/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" #TIMETAG="Time:" ###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]
" $DODBG && echo "TIMETAG=[$TIMETAG]
" 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 [ -z "$TIMETAG" ]; then TIMETAG="Time:" 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 "$TIMETAG *[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 "TIMETAG=[$TIMETAG]" 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'|' \ -v "SDATE=$SDATE" \ -v "EDATE=$EDATE" \ -v "MONTH=$MONTH" \ -v "CUSTOMER=$CUSTOMER" \ -v "TIMETAG=$TIMETAG" \ ' 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:/Quote: 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]*\.*[0-9]*/) ##re = "/" TIMETAG " *[0-9]*\.*[0-9]*/" ##i = match(tolower(threadtext), re) #if ( tolower(TIMETAG) == "quote:" ) # i = match(tolower(threadtext), /quote: *[0-9]*\.*[0-9]*/) #else # i = match(tolower(threadtext), /time: *[0-9]*\.*[0-9]*/) i = index(tolower(threadtext),tolower(TIMETAG)) if ( i > 0 ) { #print ">>>>" substr(s1, length(TIMETAG)) "<<<<" j = match(substr(s1, length(TIMETAG)), / *[0-9]*\.*[0-9]*/) } if ( j > 0 ) { #print " DEBUG: threadtext=[" threadtext "]" #print "
" #s1 = substr(threadtext, RSTART, RLENGTH) s1 = substr(threadtext, i) #print " s1=[" s1 "]" #print "
" split(s1, time_sub, ":") #print " time_sub[1]=[" time_sub[1] "]" #print "
" #print " time_sub[2]=[" time_sub[2] "]" #print "
" hours = 0 + sprintf("%0.2f", time_sub[2]) #printf(" hours=[%0.2f]", hours) #print "
" } 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] "]" #print "
" } prev_rowid = rowid } END { #print "
%d%s
" #print "
" print "" print "" print "" print "" print "" print "" print "" print "" grandtotal = 0 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) grandtotal += ticket_hours_for_day print "\n" print "" } print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "" print "
" print "ReferenceDateTask DescriptionRequested ByProduct/Service TypeHours Used
%d%s%s%s%s%s%d
       
     Total" grandtotal "
" } ' #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