#!/bin/bash
DATABASE=ubuk
CMDPSQL='psql -At -U db_report -h 127.0.0.1'
CMDTIME='date +\"%H:%M:%S\"'
SHNAME=$(basename $0)
LOG=/var/opt/${SHNAME}/log/${SHNAME}_$(date +"%y%m%d").log

CFGFILE=/etc/opt/bukdbremote/config.ini

CLIENT_IP=$(lsof -a -p $$ -iTCP -nP 2>/dev/null |
            awk '/TCP/ {
                split($9,a,"->")
                split(a[2],b,":")
                print b[1]
                exit
            }')

##Загрузка настроек
if [ -f $CFGFILE ]; then
    . $CFGFILE
fi

while read line; do
    echo $(date +%H:%M:%S.%N)' < '$CLIENT_IP $line >> $LOG
    cmd=$(echo $line | cut -d':' -f1);
    
    if [ "${TYPE}" == "1" ];  then
        if [ "$cmd" == "dm_get_info" ]; then
            data=$(echo $line | cut -d':' -f2-9);
            data=${data//\'/\'\'}
            answer=$(${CMDPSQL} ${DATABASE} -c "SELECT osell::integer||':'||ostatus::text||':'||otext_status FROM userver_dm.sf_get_dm_status('$data')" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "dm_set_status" ]; then
            data=$(echo $line | cut -d':' -f2-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "SELECT * FROM userver_dm.do_dm_change_status_azs($data)" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "test_for_return" ]; then
            idshop=$(echo $line | cut -d':' -f2);
            data=$(echo $line | cut -d':' -f3-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "SELECT userver_dm.sf_test_for_return($idshop,'$data')" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "test_for_income" ]; then
            idshop=$(echo $line | cut -d':' -f2);
            data=$(echo $line | cut -d':' -f3-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "SELECT userver_dm.sf_test_for_income($idshop,'$data')" 2>&1 | sed 's/ОШИБКА/ERROR/')
        else
            answer="ERROR#unknown command(dm)#Ошибка команды"
        fi
    else
        if [ "$cmd" == "talon_get_info" ]; then
            data=$(echo $line | cut -d':' -f2-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "select * from pf_talon_get_info($data)" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "select" ]; then
            data=$(echo $line | cut -d':' -f2-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "select $data limit 1" 2>>$LOG | sed 's/||/|0|')
        elif [ "$cmd" == "utalon_get_info" ]; then   #new
            data=$(echo $line | cut -d':' -f2-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "select * from userver_talon.sf_get_talon_info($data)" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "utalon_get_check_info" ]; then   #new
            data=$(echo $line | cut -d':' -f2-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "select array_to_string(array_agg(o_pos||'|'||o_price_discount||'|'||o_vol),'|') from userver_talon.sf_get_check_info($data)" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "talon_realization" ]; then   #new
            data=$(echo $line | cut -d':' -f2-9);
            answer=$(${CMDPSQL} ${DATABASE} -c "select * from userver_talon.sf_do_talon_realization($data)" 2>&1 | sed 's/ОШИБКА/ERROR/')
        elif [ "$cmd" == "talon_disable" ]; then
            data=$(echo $line | cut -d':' -f2-9);
            DATE=$(echo $data | cut -d';' -f1)
            TALNUM=$(echo $data | cut -d';' -f2)
            answer=$(${CMDPSQL} ${DATABASE} -c \
            "update pd_talon_list set enabled=0, date_mod='$DATE' where strnum='$TALNUM' AND enabled!=101" 2>>$LOG)
        else
            answer="ERROR: unknown command(talon)"
        fi
    fi
    echo $(date +%H:%M:%S.%N)' > '$CLIENT_IP $answer >> $LOG
    echo $answer
done


