From cad6ff9fef1eca75939c4e3d4e0a4572aec400b7 Mon Sep 17 00:00:00 2001 From: Sergey Kalinin Date: Sat, 3 Feb 2018 20:15:05 +0300 Subject: [PATCH] Added tcl (mod_rivet) realization --- www.tcl/index.rvt | 125 ++++++++++++++++++++++++++++++++++++++++------ www.tcl/vars.rvt | 67 ------------------------- 2 files changed, 109 insertions(+), 83 deletions(-) delete mode 100644 www.tcl/vars.rvt diff --git a/www.tcl/index.rvt b/www.tcl/index.rvt index 4b54ec9..86be1cc 100644 --- a/www.tcl/index.rvt +++ b/www.tcl/index.rvt @@ -8,12 +8,17 @@ package require mysqltcl - proc main {} { if { [::rivet::var exists query_type] } { set query_type [::rivet::var get query_type] if {$query_type == "internal"} { set output "[header] [body] [getInternalNumbers] [footer]" + } elseif {$query_type == "external"} { + set output "[header] [body] [getCOline] [footer]" + } elseif {$query_type == "ldap"} { + set output "[header] [body] [getLDAPusers] [footer]" + } elseif {$query_type == "report"} { + set output "[header] [body] [reportForm] [reportData] [footer]" } } else { set output "[header] [body] [footer]" @@ -21,7 +26,6 @@ proc main {} { return $output } - proc header {} { set txtHeader "\n \n @@ -54,8 +58,10 @@ proc menu {} { } proc connectDB {} { - return [mysql::connect -host localhost -user root -db ats -encoding binary] - + return [mysql::connect -host localhost -user root -db ats] +} +proc disconnectDB {handle} { + mysql::close $handle } # Список внутренних номеров из СУБД @@ -65,7 +71,6 @@ proc getInternalNumbers {} { set result "

Список внутренних телефонов

" set qr "SELECT * FROM int_number ORDER by $order" set query [mysql::query $conn $qr] - set listHeader "\n \n \n @@ -73,34 +78,122 @@ proc getInternalNumbers {} { set result "$result $listHeader" set rowData "" while {[set row [mysql::fetch $query]]!=""} { - set rowData " + append rowData "\n" } mysql::endquery $query - #set result "$result [encoding convertto utf-8 $rowData]" set result "$result $rowData" - + disconnectDB $conn return "$result
№ п/пТелефонФИО
[lindex $row 0]
[lindex $row 0] [lindex $row 1] [lindex $row 2] [lindex $row 4] [lindex $row 3]
\n" - } + + # Список пользователей (ФИО, телефон, почта, отдел) из LDAP (AD) proc getLDAPusers {} { } + +# Список внешних линий proc getCOline {} { + set conn [connectDB] + set order "ext_co_line" + set result "

Список городских линий

" + set qr "SELECT * FROM ext_co_line ORDER by $order" + set query [mysql::query $conn $qr] + + set listHeader "\n + \n + \n + \n" + set result "$result $listHeader" + set rowData "" + while {[set row [mysql::fetch $query]] != ""} { + append rowData " + + + \n" + } + mysql::endquery $query + #set result "$result [encoding convertfro utf-8 $rowData]" + set result "$result $rowData" + disconnectDB $conn + return "$result
№ п/пЛинияНомерОписание
[lindex $row 0][lindex $row 1][lindex $row 2][lindex $row 3]
\n" } -proc ReportForm {} { -} - -proc ReportData {environ} { +proc reportForm {} { + set txtReportForm "

Отчёт по звонкам

" + return $txtReportForm +} + +proc reportData {} { + set result "" + set err "" + # Проверяем введенные параметры отчёта как на наличие так и на корректность + if { [::rivet::var exists int_number] } { + set number [::rivet::var get int_number] + if {[regexp -nocase -all -- {^([0-9][0-9][0-9])$} $number match v1]} { + append result $number + } else { + append err "

Введите номер телефона

" + } + } else { + return + } + if { [::rivet::var exists date_begin] } { + if [regexp -nocase -- {^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20[0-9][0-9])$} [::rivet::var get date_begin] match d m y] { + set dBegin "$y-$m-$d" + } else { + append err "

Введите дату начала

" + } + } + if { [::rivet::var exists date_end] } { + if [regexp -nocase -- {^(0[1-9]|[12][0-9]|3[01])[.](0[1-9]|1[012])[.](19|20[0-9][0-9])$} [::rivet::var get date_end] match d m y] { + set dEnd "$y-$m-$d" + } else { + append err "

Введите дату окончания

" + } + } + if {$err ne ""} { + return "
+
+
+ + + +
+
+ +
$err
" + } + set conn [connectDB] + set order "call_date" + set result "

Список звонков с номера $number

" + set qr "SELECT * FROM cdr where int_number=\'$number\' AND call_date BETWEEN CAST(\'$dBegin\' AS DATE) AND CAST(\'$dEnd\' AS DATE) LIMIT 1000" + set query [mysql::query $conn $qr] + set listHeader " + + " + + append result $listHeader + set rowData "" + while {[set row [mysql::fetch $query]]!=""} { + append rowData "" + # этот цикл формирует строку: + #rowData = ''\ + #.format(row[0], row[1], row[2], row[3], row[4], row[5], row[5], row[7], row[9], row[9], row[10]) + for {set i 0} {$i <=10} {incr i} { + append rowData "" + } + } + + append result "$rowData
№ п/пДатаВремяВнут.номерВнеш.линияВызываемый номерRingДлительностьАССКод звонкаНаправление
{}{}{}{}{}{}{}{}{}{}{}
[lindex $row $i]
" + + return $result } -#puts [header] -#puts [body] -#puts [footer] puts [main] ?> + diff --git a/www.tcl/vars.rvt b/www.tcl/vars.rvt deleted file mode 100644 index f3ed54d..0000000 --- a/www.tcl/vars.rvt +++ /dev/null @@ -1,67 +0,0 @@ - $err " - } -} else { - puts "Thanks for the information!" - ?> - - - - - - - - - - - - - - - - - - - -
Title:
Boss:
Salary:
Skills:
-