\n \n \n Телефоны\n \n" return $txtHeader } proc footer {} { set txtFooter "\n" return $txtFooter } proc body {} { set txtBody "\n

ТЕЛЕФОНЫ

[menu]
\n" return $txtBody } proc menu {} { set txtMenu "
" return $txtMenu } proc connectDB {} { return [mysql::connect -host localhost -user root -db ats] } proc disconnectDB {handle} { mysql::close $handle } # Список внутренних номеров из СУБД proc getInternalNumbers {} { set conn [connectDB] set order "int_number" set result "

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

" set qr "SELECT * FROM int_number 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 $rowData" disconnectDB $conn return "$result
№ п/пТелефонФИООписаниеЭл.почта
[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 {} { 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 [main] ?>