#!/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'|' '
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("%d | ", ++cnt)
#for ( i=1; i <= NF; ++i ) {
# printf("%s | ", $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]*/)
if ( i > 0 ) {
#print " DEBUG: threadtext=[" threadtext "]"
#print "
"
s1 = substr(threadtext, RSTART, RLENGTH)
#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 "
"
#print "
"
print ""
print ""
print " | Reference | "
print "Date | "
print "Task Description | "
print "Requested By | "
print "Product/Service Type | "
print "Hours Used | "
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("%d | ", row)
printf("%s | ", NCR)
printf("%s | ", NCRdate)
printf("%s | ", ticketDesc)
printf("%s | ", RequestedBy)
printf("%s | ", ServiceType)
printf("%d | ", 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 "Total | "
print "" grandtotal " | "
print "
"
print "
"
}
'
#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