<?php

$__functions['init'][]='_enterprise_site_vars' ;
$__functions['boot_site'][]='_enterprise_site_boot' ;

function ENTERPRISE() {
  if (isset($_SESSION['enterprise_system'])) {
    return($_SESSION['enterprise_system']);
  } else {
    $_SESSION['enterprise_system']=new c_enterprise_system();
    return($_SESSION['enterprise_system']);
  }
}


function _enterprise_site_vars()
{
    $_SESSION['init_options']['enterprise']['debug']=0 ;
}

function _enterprise_site_boot($options)
{
  create_system_modul_obj('enterprise',$options) ;

}


class c_enterprise_system
{

    function __construct($create_options=array())
    {

    }

	function declare_menu_items_4($page)
    {
        $page->menu['/cab/esmo_magnit/pdd/']='Прием направлений' ;
        $page->menu['/cab/esmo_magnit/pdd/scan/report/']='Журнал направлений' ;
    }




 function create_event_ag()
 { $event_ext='events_docs/i_event_docs' ;
   $doc_code='napravlenie' ;
  // проверяем наличие мероприятия путем прямого доступа к БД, если мероприятие задублировано - удаляем дубликаты
  $event_ids=execSQL_line('select pkey from obj_site_events_schedule where ext="'.$event_ext.'" and doc_code="'.$doc_code.'" order by pkey') ;
  if (_sizeof($event_ids)>1 and is_object(EVENTS())) EVENTS()->check_dublicate_event_napravlenie() ;

  // повторно провереям единственность мероприятия
  $event_ids=execSQL_line('select pkey from obj_site_events_schedule where ext="'.$event_ext.'" and doc_code="'.$doc_code.'" order by pkey') ;
  if (_sizeof($event_ids)==1) if ($GLOBALS['LS_esmo_ag_event'])
  { echo 'Мероприятие <strong>"Контроль выдачи документов АГ"</strong> уже создано<br>' ;
	// проверяем правильность задания  LS_esmo_ag_event
	$event_id=execSQL_value('select pkey from obj_site_events_schedule where ext="'.$event_ext.'" and doc_code="'.$doc_code.'" order by pkey limit 1') ;
	if ($GLOBALS['LS_esmo_ag_event']!=$event_id) update_site_setting('LS_esmo_ag_event',$event_id) ;

  }
  if (!_sizeof($event_ids))
    {   echo 'Создаем мероприятие <strong>"Контроль выдачи документов АГ"</strong><br>' ;
        $obj_event=EVENTS()->get_event_obj_by_ext($event_ext) ;
        if (!$obj_event->error)
         { $obj_event->default_settings['name']='Направление по АГ' ;
           $obj_event->default_settings['ext']=$event_ext ;
           $obj_event->default_settings['group_id']=1 ;
           $obj_event->default_settings['status']=1 ;
           $obj_event->default_settings['enabled']=1 ;
           $obj_event->default_settings['type']=2 ;
           $obj_event->default_settings['mode']=6 ;
           $obj_event->default_settings['doc_code']=$doc_code ;
           $obj_event->default_settings['sanction']['block_mo']=1;
           $obj_event->default_settings['message1']='Вам необходимо сдать направление по АГ' ;
           $obj_event->default_settings['period_to_status_2']=30 ;
           $obj_event->default_settings['period_to_status_3']=10 ;
           $id=EVENTS()->reg_event($obj_event->default_settings) ;
           if ($id)
           { echo 'Мероприятие <strong>Контроль выдачи документов АГ</strong> успешно создано<br>' ;
             update_site_setting('LS_esmo_ag_event',$id) ;
           }
         } else echo '<strong>'.$event_ext.'</strong> '.$obj_event->error.'<br>' ;
    }

  // проверяем правильность задания  LS_esmo_PMO_event
  $event_id=execSQL_value('select pkey from obj_site_events_schedule where ext="esmo_magnit_pmo/i_event_pmo" and enabled=1  order by pkey limit 1') ;
  if ($GLOBALS['LS_esmo_PMO_event']!=$event_id) update_site_setting('LS_esmo_PMO_event',$event_id) ;
  $event_id=execSQL_value('select pkey from obj_site_events_schedule where ext="events_opo/i_event_opo" and enabled=1 order by pkey limit 1') ;
  if ($GLOBALS['LS_esmo_OPO_event']!=$event_id) update_site_setting('LS_esmo_OPO_event',$event_id) ;
}

 function update_group_risk()
 { ?><h2>Формирование группы риска</h2><?
   $arr_groups_risk=array() ;
   $list_rec_age=execSQL('select pkey,dr,c_data,age,obj_name from obj_site_personals where age>=55 and age<100 and enabled=1') ;
   echo 'Получаем данные по сотрудникам старше 55 лет: <strong>'._sizeof($list_rec_age).'</strong> записей за '.round($GLOBALS['t_work_sql'],4).' сек<br>' ;
   /* старое обращение - получали данные по всем группам
    * $list_rec_gr=execSQL('select L.o_id as pkey,P.enabled,L.c_data
                              from obj_site_link L,obj_site_personals P
                              where L.p_clss=254 and P.pkey=L.o_id and P.clss=211 and P.enabled=1') ;*/
   // получаем данные только с заданных групп
   $list_rec_gr=execSQL('select pkey,c_data from view_personals_medic_group_1 union 
                         select pkey,c_data from view_personals_medic_group_2 union 
                         select pkey,c_data from view_personals_medic_group_3 union 
                         select pkey,c_data from view_personals_medic_group_4 union 
                         select pkey,c_data from view_personals_medic_group_5 union 
                         select pkey,c_data from view_personals_medic_group_6 union 
                         select pkey,c_data from view_personals_medic_group_7 union 
                         select pkey,c_data from view_personals_medic_group_8 union 
                         select pkey,c_data from view_personals_medic_group_9  
                        ') ;

   echo 'Получаем данные по сотрудникам в группе АГ: <strong>'._sizeof($list_rec_gr).'</strong> записей за '.round($GLOBALS['t_work_sql'],4).' сек<br>' ;
   $list_rec_alco=execSQL('select M.member_id as pkey,min(M.c_data) as c_data ,count(M.pkey) as cnt_alco 
                           from obj_site_mo_session M, obj_site_personals P  
                           where M.dopusk=3 and M.res_a=2 and P.pkey=M.member_id and P.clss=211 and P.enabled=1 
                           group by M.member_id') ;
   echo 'Получаем данные по сотрудникам с алкоголем: <strong>'._sizeof($list_rec_alco).'</strong> записей за '.round($GLOBALS['t_work_sql'],4).' сек<br>' ;
   //$list_rec=execSQL_row('select member_id as personal_id,c_data from obj_site_mo_session where dopusk=3 and res_a=2 order by c_data',2) ;
   if (_sizeof($list_rec_age)) foreach($list_rec_age as $rec_personal)
   {  // вычисляем, когда сотруднику исполнилось 55 лет
      $now=getdate(strtotime($rec_personal['dr'])) ;
      $dr=mktime(0,0,0,$now['mon'],$now['mday'],$now['year']+55) ;
      $from=($rec_personal['c_data']>$dr)? $rec_personal['c_data']:$dr ;
      $arr_groups_risk[$rec_personal['pkey']]['c_data']=$from ;
      $arr_groups_risk[$rec_personal['pkey']]['age']=1 ;
      //$arr_groups_risk[$rec_personal['pkey']]['age_db']=$rec_personal['age'] ;
      //$arr_groups_risk[$rec_personal['pkey']]['dr']=$rec_personal['dr'] ;
      //$arr_groups_risk[$rec_personal['pkey']]['obj_name']=$rec_personal['obj_name'] ;
   }
   if (_sizeof($list_rec_gr)) foreach($list_rec_gr as $rec_personal)
   {   $from=(isset($arr_groups_risk[$rec_personal['pkey']]['c_data']) and $arr_groups_risk[$rec_personal['pkey']]['c_data']<$rec_personal['c_data'])? $arr_groups_risk[$rec_personal['pkey']]['c_data']:$rec_personal['c_data'] ;
       $arr_groups_risk[$rec_personal['pkey']]['c_data']=$from ;
       $arr_groups_risk[$rec_personal['pkey']]['ag']=1 ;

   }
   if (_sizeof($list_rec_alco)) foreach($list_rec_alco as $rec_personal)
   {   $from=(isset($arr_groups_risk[$rec_personal['pkey']]['c_data']) and $arr_groups_risk[$rec_personal['pkey']]['c_data']<$rec_personal['c_data'])? $arr_groups_risk[$rec_personal['pkey']]['c_data']:$rec_personal['c_data'] ;
       $arr_groups_risk[$rec_personal['pkey']]['c_data']=$from ;
       $arr_groups_risk[$rec_personal['pkey']]['alco']=$rec_personal['cnt_alco'] ;
   }
   //print_2x_arr($arr_groups_risk) ;
   $cnt=execSQL_value('select count(pkey) from obj_site_group_risk') ;
   echo  'Группа риска - будет сброшено <strong>'.$cnt.'</strong> записей<br>' ;
   echo  'Будет добавлено <strong>'._sizeof($arr_groups_risk).'</strong> записей в группу риска<br>' ;
   execSQL_update('truncate table obj_site_group_risk') ;
   if (_sizeof($arr_groups_risk)) foreach($arr_groups_risk as $personal_id=>$rec)
     multiSQL_insert('obj_site_group_risk')->append(array('clss'=>365,
                                                                 'personal_id'=>$personal_id,
                                                                  'c_data'=>$rec['c_data'],
                                                                  'age'=>($rec['age'])? $rec['age']:0,
                                                                  'ag'=>($rec['ag'])? $rec['ag']:0,
                                                                  'alco'=>($rec['alco'])? $rec['alco']:0
                                                                )) ;
   multiSQL_insert('obj_site_group_risk')->flush() ;
 }

}



?>
