<?php // этот модуль необходимо делать тольео для крупных проектов, для небольшых описание пунктов меню и файлов меню лучше делать в init.php
$__functions['init'][]      ='_kt_admin_vars' ;
$__functions['boot_admin'][] ='_kt_admin_boot' ;
//$__functions['alert'][]   ='_kt_admin_alert' ;
$__functions['install'][]	='_kt_install_modul' ;



function _kt_admin_vars() //
{   //$_SESSION['menu_admin_site']['Модули'][]=array('name'=>'Проекты','href'=>'editor_kt.php') ;
    //$_SESSION['menu_admin_site']['Модули'][]=array('name'=>'Счета на оплату','href'=>'editor_chet.php') ;

	//----------------------------------------------------------------------------------------------------------------------
	// описание пунктов верхнего меню админа сайта
	//-----------------------------------------------------------------------------------------------------------------------


	//----------------------------------------------------------------------------------------------------------------------
	// описание функций вывода полей объектов класса
	//-----------------------------------------------------------------------------------------------------------------------
    $_SESSION['descr_clss'][1]['fields']['doc_name']=array('type'=>'varchar(32)') ;
    $_SESSION['descr_clss'][1]['list']['field']['doc_name']=array('title'=>'CODE') ;

    $_SESSION['descr_clss'][20]['fields']['ext_info']=array('type'=>'serialize') ;
    $_SESSION['descr_clss'][20]['fields']['viewer_name']=array('type'=>'varchar(32)') ;

    //-----------------------------------------------------------------------------------------------------

    //-----------------------------------------------------------------------------------------------------
   

    //-----------------------------------------------------------------------------------------------------
    $_SESSION['descr_clss'][240]['name']='Сеанс KT' ;
    $_SESSION['descr_clss'][240]['parent']=0 ;
    $_SESSION['descr_clss'][240]['no_show_in_tree']=0 ; // не показывать объекты класса в дереве
    $_SESSION['descr_clss'][240]['fields']['c_data']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // время начала сенса
    $_SESSION['descr_clss'][240]['fields']['c_data_m']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // дата для группировки по 1 минутe
    $_SESSION['descr_clss'][240]['fields']['c_data_h']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // дата для группировки по 1 часу
    $_SESSION['descr_clss'][240]['fields']['c_data_d']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // дата для группировки по дню
    $_SESSION['descr_clss'][240]['fields']['e_data']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // время окончания сенса
    $_SESSION['descr_clss'][240]['fields']['group_id']=array('type'=>'int(11)') ; // код рабочей группы
    $_SESSION['descr_clss'][240]['fields']['zone_id']=array('type'=>'int(11)') ; // код зоны доступа
    $_SESSION['descr_clss'][240]['fields']['terminal_id']=array('type'=>'varchar(32)') ; // код задействовоанного контроллера
    $_SESSION['descr_clss'][240]['fields']['terminal_pkey']=array('type'=>'int(11)') ; // код задействовоанного контроллера
    $_SESSION['descr_clss'][240]['fields']['creator_id']=array('type'=>'int(11)') ; // код аккаунта, создавшего данный МО (терминал, врач или фельдшер)
    $_SESSION['descr_clss'][240]['fields']['member_id']=array('type'=>'int(11)') ; // код работника
    $_SESSION['descr_clss'][240]['fields']['doctor_id']=array('type'=>'int(11)') ; // код работника
    $_SESSION['descr_clss'][240]['fields']['error']=array('type'=>'int(1)','default'=>0) ; // 0 - допуск к МО есть, 1 - недопуск к МО по причини клиента, 2 - недопуск к МО - не удалось опознпть
    $_SESSION['descr_clss'][240]['fields']['error_reason']=array('type'=>'varchar(255)') ; // причина аннулирования допуска
    $_SESSION['descr_clss'][240]['fields']['status']=array('type'=>'indx_select','array'=>'ARR_status_sess','index'=>'status') ; // этап медосмотра  1 - осмотр начат, 2 - осмотр завершен без ошибок, 3 - осмотр завершен с ошибками
    $_SESSION['descr_clss'][240]['fields']['message_terminal']=array('type'=>'varchar(32)') ;
    $_SESSION['descr_clss'][240]['fields']['terminal_comment']=array('type'=>'varchar(255)') ;

    $_SESSION['descr_clss'][240]['fields']['model']=array('type'=>'indx_select','array'=>'ARR_model_osmotr','default'=>0) ; // модель медосмотра
    $_SESSION['descr_clss'][240]['fields']['mo_type']=array('type'=>'indx_select','array'=>'ARR_mo_type') ; // модель медосмотра
    $_SESSION['descr_clss'][240]['fields']['dopusk']=array('type'=>'int(11)','array'=>'ARR_status_dopusk','default'=>0) ; // допуск 1-есть 2-нет 0-человек уклонился от получения допуска . Допуск не назначается автоматически, а производиться фельдшером или врачем
    $_SESSION['descr_clss'][240]['fields']['dopusk_user_id']=array('type'=>'int(11)') ; // кто задал допуск
    $_SESSION['descr_clss'][240]['fields']['dopusk_time']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // время допуска
    $_SESSION['descr_clss'][240]['fields']['dopusk_time_end']=array('type'=>'timedata','data_format'=>'d.m.y G:i') ; // время окончания допуска
    $_SESSION['descr_clss'][240]['fields']['hand_check_user_id']=array('type'=>'int(11)') ; // кто задал допуск

    $_SESSION['descr_clss'][240]['fields']['alcotester']='int(1)' ;      // делать проверку алкоголя

    $_SESSION['descr_clss'][240]['fields']['alko']='int(1)' ;            // наличие алкоголя
    $_SESSION['descr_clss'][240]['fields']['alko_value']='float(10,2)' ; // величина алкоголя

    $_SESSION['descr_clss'][240]['fields']['res_a']=array('type'=>'int(11)','default'=>0) ;  // результат оценки алкоголя

    $_SESSION['descr_clss'][240]['fields']['comment']='text' ;  // комментарий к автоматической оценке результатов оценки сотрудника. Более сюда ничего не писать!
    $_SESSION['descr_clss'][240]['fields']['question']='int(1)' ;        // жалобы
    $_SESSION['descr_clss'][240]['fields']['question_comment']='text' ; // содержание жалоб
    $_SESSION['descr_clss'][240]['fields']['doctor_comment']='text' ; // Комментарий врача
    $_SESSION['descr_clss'][240]['fields']['reason']=array('type'=>'varchar(32)','default'=>'') ; // тип ошибки
    $_SESSION['descr_clss'][240]['fields']['equipment']=array('type'=>'varchar(255)','default'=>'') ; // оборудование с ошибкой
    $_SESSION['descr_clss'][240]['fields']['video']=array('type'=>'varchar(255)','default'=>'') ; // имя файла видео
    $_SESSION['descr_clss'][240]['fields']['tk']=array('type'=>'int(11)','default'=>0) ; // тип контроля 0 - предрейсовый, 1 - послерейсовый контроль, 2 - межрейсовый контроль
    $_SESSION['descr_clss'][240]['fields']['event_send']=array('type'=>'int(11)','default'=>0,'index'=>'event_send') ;
    $_SESSION['descr_clss'][240]['child_to']=array(1) ;
    $_SESSION['descr_clss'][240]['parent_to']=array(3) ;
    $_SESSION['descr_clss'][240]['no_show_in_tree']=0 ; // не показывать объекты класса в дереве
    $_SESSION['descr_clss'][240]['icons']=_PATH_TO_BASED_CLSS_IMG.'/98.png' ;
    $_SESSION['descr_clss'][240]['index']['c_data']='c_data' ;
    $_SESSION['descr_clss'][240]['index']['group_id']='group_id' ;
    $_SESSION['descr_clss'][240]['index']['zone_id']='zone_id' ;
    $_SESSION['descr_clss'][240]['index']['terminal_id']='terminal_id' ;
    $_SESSION['descr_clss'][240]['index']['member_id']='member_id' ;
    $_SESSION['descr_clss'][240]['index']['dopusk']='dopusk' ;
    $_SESSION['descr_clss'][240]['index']['status']='status' ;
    $_SESSION['descr_clss'][240]['index']['c_data_m']='c_data_m' ;
    $_SESSION['descr_clss'][240]['index']['c_data_d']='c_data_d' ;
    $_SESSION['descr_clss'][240]['index']['c_data_h']='c_data_h' ;

	$_SESSION['descr_clss'][206]['fields']['last_kt_event']=array('type'=>'int(11)') ;
	
	$_SESSION['descr_clss'][241]=array() ;
    $_SESSION['descr_clss'][241]['name']='Терминал контроля трезвости' ;
    $_SESSION['descr_clss'][241]['parent']=0 ;
    $_SESSION['descr_clss'][241]['parent_to']=array(201,1) ;
    $_SESSION['descr_clss'][241]['child_to']=array(206) ;

    $_SESSION['descr_clss'][241]['fields']['obj_name']=array('type'=>'varchar(64)') ;
    $_SESSION['descr_clss'][241]['fields']['zone_id']=array('type'=>'int(11)') ;
    $_SESSION['descr_clss'][241]['fields']['id']=array('type'=>'int(11)') ;
    $_SESSION['descr_clss'][241]['fields']['ip']=array('type'=>'varchar(21)') ;
    $_SESSION['descr_clss'][241]['fields']['video']=array('type'=>'int(1)','default'=>0) ;
    $_SESSION['descr_clss'][241]['fields']['alcotester']=array('type'=>'int(1)','default'=>0) ;
    $_SESSION['descr_clss'][241]['fields']['terminal_type']=array('type'=>'varchar(2)','default'=>'kt') ;
    $_SESSION['descr_clss'][241]['fields']['status']=array('type'=>'int(11)','default'=>0) ;
    $_SESSION['descr_clss'][241]['fields']['VS_IP']=array('type'=>'varchar(20)') ;
    $_SESSION['descr_clss'][241]['fields']['stream_name_1']=array('type'=>'varchar(32)') ;
    $_SESSION['descr_clss'][241]['fields']['stream_name_2']=array('type'=>'varchar(32)') ;
    $_SESSION['descr_clss'][241]['fields']['vers']=array('type'=>'varchar(32)') ;
    $_SESSION['descr_clss'][241]['fields']['assigned_version']=array('type'=>'varchar(32)') ;
    $_SESSION['descr_clss'][241]['fields']['kt_type']=array('type'=>'int(1)') ; //0 - нет/1 - только предсменный осмотр/2 - только послесменный осмотр
    // поля, используемые только для виртуальных терминалов
    $_SESSION['descr_clss'][241]['fields']['virt']=array('type'=>'int(1)') ;
    $_SESSION['descr_clss'][241]['fields']['virt_status']=array('type'=>'int(11)') ;
    $_SESSION['descr_clss'][241]['fields']['virt_time']=array('type'=>'timedata') ;
    $_SESSION['descr_clss'][241]['fields']['ext_info']=array('type'=>'serialize') ;

    $_SESSION['descr_clss'][241]['index']['id']='id' ;
    $_SESSION['descr_clss'][241]['index']['clss']='clss' ;

    $_SESSION['descr_clss'][241]['list']['field']['id']=array('title'=>'id') ;
    $_SESSION['descr_clss'][241]['list']['field']['obj_name']=array('title'=>'Название') ;
    $_SESSION['descr_clss'][241]['list']['field']['ip']=array('title'=>'IP') ;
    $_SESSION['descr_clss'][241]['list']['field']['terminal_type']=array('title'=>'terminal_type') ;
    $_SESSION['descr_clss'][241]['list']['field']['status']=array('title'=>'status') ;
    $_SESSION['descr_clss'][241]['list']['field']['video']=array('title'=>'video') ;
    $_SESSION['descr_clss'][241]['list']['field']['alcotester']=array('title'=>'alcotester') ;
    $_SESSION['descr_clss'][241]['list']['field']['VS_IP']=array('title'=>'IP видеосервера') ;
    $_SESSION['descr_clss'][241]['list']['field']['stream_name_1']=array('title'=>'stream 1') ;
    $_SESSION['descr_clss'][241]['list']['field']['stream_name_2']=array('title'=>'stream 2') ;


    //$_SESSION['descr_clss'][241]['list']['field']['owner']=array('title'=>'Владелец') ;
    $_SESSION['descr_clss'][241]['list']['options']=array('no_icon_edit'=>1);
    $_SESSION['descr_clss'][241]['details']=$_SESSION['descr_clss'][200]['list'] ;

	// Зона доступа - добавляем событие контроля трезвости для мониторинга
    $_SESSION['descr_clss'][600]['fields']['last_kt_event']=array('type'=>'int(11)') ;
	


}

function _kt_admin_boot($options)
{
  create_system_modul_obj('kt') ;
}


function _kt_install_modul($DOT_root)
{   check_exists_dir('/public/kt_photo') ;
	check_exists_dir('/temp/monitor') ;
	check_exists_dir('/temp/monitor/kt') ;

	SETUP()->reg_report('Контроль трезвости','kt/report_kt.php') ;         //
    SETUP()->reg_report('Контроль трезвости','kt/report_kt_itog1.php') ;         //
    SETUP()->reg_report('Контроль трезвости','kt/report_kt_forma2.php') ;         //

    $id_sect=SETUP_add_section_to_site_setting('Контроль трезвости') ;
    SETUP_add_rec_to_site_setting($id_sect,"Интервал между попытками прохождения КТ, мин",270,'LS_setting_auto_kt_interval',array('human'=>'min')) ;
    SETUP_add_rec_to_site_setting($id_sect,"Логгирование этапов КТ",0,'LS_kt_logging_full',array('el'=>'checkbox')) ;
    SETUP_add_rec_to_site_setting($id_sect,"Номер события мониторинга КТ",0,'LS_kt_event_id',array('hidden'=>1)) ;
    SETUP_add_rec_to_site_setting($id_sect,"Время действия допуска по КТ, мин.",1,'LS_setting_auto_kt_allow_interval',array('human'=>'min')) ;
    SETUP_add_rec_to_site_setting($id_sect,"Время действия недопуска по КТ, мин.",2,'LS_setting_auto_kt_denited_interval',array('human'=>'min')) ;
    SETUP_add_rec_to_site_setting($id_sect,"Время ожидания сотрудника на РМВ после недопуска на ТКТ, мин.",30,'LS_kt_time_rmv_after_tkt',array('human'=>'min')) ;
    SETUP_add_rec_to_site_setting($id_sect,"Оповещать о запрете допуска по алкоголю",0,'LS_kt_notife_alco',array('el'=>'checkbox')) ;
    SETUP_add_rec_to_site_setting($id_sect,"email для оповещения по алкоголю",'','LS_kt_notife_alco_email') ;
    SETUP_add_rec_to_site_setting($id_sect,"Таймаут для выведенного сообщения на терминале КТ,  сек",5,'LS_kt_setting_term_mess_view',array('human'=>'sec')) ;
    SETUP_add_rec_to_site_setting($id_sect,"Таймаут для прохождения КТ в секундах",180,'LS_setting_kt_timeout',array('human'=>'sec')) ;

    SETUP()->reg_event_lister('examination_result_kt','KT','on_event_examination_result_kt') ;         //
    SETUP()->reg_event_lister('kt_fixed_hand_check_allow','KT','on_event_examination_result_kt') ;         //
    SETUP()->reg_event_lister('kt_fixed_hand_check_denited','KT','on_event_examination_result_kt') ;         //

    // терминалы контроля трезвости
    $pattern=array() ;
    $pattern['table_title']		        = 	'Терминалы КТ' ;
    $pattern['use_clss']		        = 	'241' ;
    $pattern['table_name']				= 	'obj_site_device' ;
    $pattern['table_clss']				= 	101 ;
    $pattern['table_parent']			= 	$DOT_root;
    $id_DOT_mo=create_table_by_pattern($pattern) ;


    // сеансы медосмотра
    $pattern=array() ;
    $pattern['table_title']		        = 	'Сеансы КТ' ;
    $pattern['use_clss']		        = 	'240' ;
    $pattern['table_name']				= 	'obj_site_kt_session' ;
    $pattern['table_clss']				= 	101 ;
    $pattern['table_parent']			= 	$DOT_root;
    $id_DOT_mo=create_table_by_pattern($pattern) ;

    // создавем вьюверы
    $sql='create view view_kt_session as
                select  t1.*,
                        t2.pkey as personal_id,
                        t2.obj_name as member_name,
                        t2.obj_name as personal_name,
                        t2.uid as member_uid,
                        t2.tab_number as member_tabnumber,
                        t2.client_id as member_client_id,
                        t2.dr as member_dr,
                        t2.age as personal_age,
                        t2.pol as member_pol,
                        t2.demo_access as member_demo_access,
                        t2.driving as member_driving,
                        t2.group_id as personal_group_id,
                        t2.parent as member_parent,
                        t2.parent as personal_parent,
                        t2.parent1 as personal_parent1,
                        t2.parent2 as personal_parent2,
                        t2.parent3 as personal_parent3,
                        t2.parent4 as personal_parent4,
                        t2.parent5 as personal_parent5,
                        t2.parent6 as personal_parent6,
                        t2.parent7 as personal_parent7,
                        t2.parent8 as personal_parent8,
                        t2.parent9 as personal_parent9,
                        t2.enabled as member_enabled,
                        t2.enabled as personal_enabled,
                        t2.working,
                        t2.age,
                        t2.propusk,
                        t2._image_name as member_img,
                        t2._image_name as personal_img,
                        t3.pkey as _org_id,
                        t3.obj_name as _org_name,
                        t4.pkey as _otdel_id,
                        t4.obj_name as _otdel_name,
                        t5.obj_name as terminal_name,
                        t5.stream_name_1 as _term_cam_1,
                        t6.obj_name as zone_name
                from obj_site_kt_session t1
                left join obj_site_personals t2 on t2.pkey=t1.member_id
                
                left join obj_site_personals t3 on t3.pkey=t2.parent2
                left join obj_site_personals t4 on t4.pkey=t2.parent3
                left join obj_site_device t5 on t5.id=t1.terminal_id
                left join obj_site_skd t6 on t6.pkey=t5.zone_id
                
                

                ' ;
    create_viewer('view_kt_session',$sql) ;

    // создавем вьюверы
    $sql='create view view_personal_kt as
                select  t1.*,
                        (select count(pkey) from obj_site_kt_session t_mo where t_mo.member_id=t1.pkey) as cnt_mo,
                        (select min(c_data) from obj_site_kt_session t_mo where t_mo.member_id=t1.pkey) as first_mo,
                        (select max(c_data) from obj_site_kt_session t_mo where t_mo.member_id=t1.pkey) as last_mo
                from view_personals t1
                ' ;
    create_viewer('view_personal_kt',$sql) ;




}




?>