<?
include_once(_DIR_EXT.'/HTML/c_page_XML_AJAX.php') ;
//include_once('messages.php') ;
class c_page_ajax extends c_page_XML_AJAX
{
 function get_panel_upload_file()
 { ?><div id="panel_upload_promt" style="margin:20px;"><form action="" method="POST" enctype="multipart/form-data"><input type="hidden" name="cmd" value="upload_file">
      <p>Загрузите список сотрудников, используя заранее подготовленный файл Excel. <!--<a href="<?echo _PATH_TO_EXT?>/aspmo_personal/demo/members.xls">Образец файла</a>--><p>
      <div class=comment>Размер файла не более 1М, формат файла - Excel XLS.</div>
      <div class=buttons>
          <input class=button name="upload_file[]" type="file" size="50"><input type="submit" value="Загрузить файл">
      </div>
     </form></div><?
     $this->add_element('show_modal_window','HTML',array('title'=>'Загрузка файла')) ; ;
 }

    function merge_persons()
    { $main_id=$_POST['main_id'] ;
      $second_ids=$_POST['second_ids'] ;
      if ($_POST['main_id'])
      { // проверяем пропуск - он не должен потеряться при объединении
        $arr_propusk=execSQL_line('select propusk from obj_site_personals where pkey in ('.$second_ids.') and not (propusk like "id%" or propusk=0 or propusk="")') ;
        $main_propusk=execSQL_line('select propusk from obj_site_personals where pkey in ('.$main_id.') and not (propusk like "id%" or propusk=0 or propusk="")') ;
        if (!$main_propusk)
        { echo 'Основному аккаунту будет назначен пропуск <strong>'.$arr_propusk[0].'</strong><br>' ;
          PERSONAL()->personal_save($main_id,array('propusk'=>$arr_propusk[0]),array('source_action'=>'merge_persons')) ;
        }
        echo 'Переводим МО на основной аккаунт - ' ;
        $sql='update obj_site_mo_session set member_id='.$main_id.' where member_id in ('.$second_ids.') and member_id!='.$main_id ;
        $cnt=execSQL_update($sql) ;
        echo 'Затронуто <strong>'.$cnt.'</strong> записей по МО<br>' ;

        echo 'Переносим фото сотрудника - ' ;
        $sql='update obj_site_personals_image set parent='.$main_id.' where parent in ('.$second_ids.') and parent!='.$main_id ;
        $cnt=execSQL_update($sql) ;
        echo 'Затронуто <strong>'.$cnt.'</strong> записей по фото<br>' ;

        $sql='update obj_site_personals set _image_name=(select file_name from obj_site_personals_image where parent='.$main_id.' order by indx limit 1) where pkey='.$main_id ;
        //echo $sql.'<br>' ;
        $cnt=execSQL_update($sql) ;


        echo 'Удаляем дубликаты - ' ;
        $sql='delete from obj_site_personals where pkey in ('.$second_ids.') and pkey!='.$main_id ;
        $cnt=execSQL_update($sql) ;
        echo 'Затронуто <strong>'.$cnt.'</strong> записей<br>' ;

        echo '<p>Персоны успешно объединены. Все МО переведены на аккаунт '.$main_id.'</p>
        <p>Откройте <a href="/cab/personal/person/'.$main_id.'/" class="new_window">карточку этого аккаунта</a> и при необходимости выберите лучшее фото.</p>
        <button class="cancel">Закрыть</button>' ;
      }
      else echo '<div class="alert">Выберите основной аккаунт для объединения</div>' ;
      $this->add_element('show_modal_window','HTML',array('title'=>'Объединение дубликатов сотрудников','after_close_update_page'=>1)) ;
    }

   //------------------------------------------------------------------------------------------------------------------------------------------------------------------
   //
   // настройка правил фильтрации сотрудников
   //
   //
   //------------------------------------------------------------------------------------------------------------------------------------------------------------------


   function save_usl_select_persons()
   {   //damp_array($_POST,1,-1);
       include_once(_DIR_EXT.'/personal/report_personals_ids_by_filter.php');
       $report_obj=new report_personals_ids_by_filter();
       // внимание, в  $_POST['filter'] значения элементов в мультисписках идут не в индексах, а в значениях
       $report_obj->filter=ENGINE()->filter_array_flip($_POST['filter']) ;
       $report_obj->no_use_account_usl_select=1 ;
       $usl=$report_obj->create_usl_select_obj();
       $cnt=$report_obj->get_cnt_items($usl) ; // этот отчет дает ФЛ, тут не могут иметь место искажения из-за совмещенцев
       $info_filter=$report_obj->panel_info_filter();
       if($info_filter) echo '<strong>При отборе сотрудников будут использоваться следующие параметры:</strong><div style="width:100%;height:100px;overflow:scroll;border:1px solid gray;text-align:left;">'.strip_tags(nl2br($info_filter)).'</div>';
       else echo 'Не задано условие отбора сотрудников<br>';

       switch($_POST['extended'])
       { case 'events':  echo 'По данному правилу в мероприятие будут включены <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудник,сотрудника,сотрудников').'<br>'; break ;
         case 'workgroups':  echo 'По данному правилу в рабочую группу будут включены <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудник,сотрудника,сотрудников').'<br>'; break ;
         case 'groups':  echo 'По данному правилу в группу будут включены <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудник,сотрудника,сотрудников').'<br>'; break ;
         case 'rol':  echo 'По данному правилу роли будут доступны <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудник,сотрудника,сотрудников').'<br>'; break ;
         case 'account': echo 'По данному правилу аккаунту будут доступны <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудник,сотрудника,сотрудников').'<br>'; break ;
         case 'quiz': echo 'По данному правилу контроль знаний будет включен для <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудника,сотрудников,сотрудников').'<br>'; break ;
         case 'poll': echo 'По данному правилу опрос будет включен для <strong>'.$cnt.'</strong> '.get_case_by_count_1_2_5($cnt,'сотрудника,сотрудников,сотрудников').'<br>'; break ;
         default: ?><div class="alert">Для <?echo $_POST['extended'] ?> не описано правило в save_usl_select_persons</div><?
       }

       // переводим на передачу данных между страницами на yaml
       $setting['filter']=ENGINE()->clear_filter_space_values($report_obj->filter);
       $setting['info_filter']=$info_filter;
       $setting['extended']=$_POST['extended'];
       $setting['item_id']=$_POST['item_id'];
       $setting['item_reffer']=$_POST['item_reffer'];
       $file_uid=ENGINE()->save_temp_setting($setting);

       ?><button class="button v2" cmd="personal/save_usl_select_persons_apply" setting_uid="<? echo $file_uid ?>">Подтверждаю</button>
         <button class="button cancel">Отмена</button>
       <?
       $this->add_element('show_modal_window','HTML',array('title'=>'Добавление правила отбора сотрудников','width'=>'800px')) ;
   }

   // сохранение условий отбора для мероприятий с pass по факту участия
   // внимание!!! $setting['item_id'] и  $setting['item_reffer'] это разные понятия
   function save_usl_select_persons_apply($setting)
   {   if ($_POST['setting_uid']) $setting=ENGINE()->load_temp_setting($_POST['setting_uid']);
       $item_reffer=$setting['item_reffer'] ;
       $id=$setting['item_id'] ;
       list($pkey,$tkey)=explode('.',$item_reffer) ;

       $viewer_name='' ; $alert='' ; $options=[] ;

       // вьюверы надо создавать только для рабочих групп, аккаунтов и групп сотрудников
       // $setting['extended'] передается из формы выбора фильтров
       switch($setting['extended'])
          { case 'workgroups':  $viewer_name='view_personals_workgroup_'.$pkey ; break ;
            case 'account':     $viewer_name='view_personals_account_'.$pkey; break ;
            case 'rol':         $viewer_name='view_personals_rol_'.$pkey; break ;
            case 'groups':      $viewer_name='view_personals_group_'.$id ; break ;
            case 'quiz':        $viewer_name='view_personals_quiz_section_'.$pkey ; break ;
            case 'events':      $viewer_name='view_personals_event_'.$pkey ;

                                $options['event_id']=$pkey ;
                                $alert='<strong>Внимание!</strong> После окончания формирования правил отбора не забудьте обновить список участников мепроприятия. Автоматическое обновление списка участников будет произведено согласно расписания заданий планировщика.<br>' ;
                                break ;
          }

       if ($viewer_name) echo 'Будет создан вьювер сотрудников "<strong>'.$viewer_name.'</strong>"<br>' ;

       PERSONALS_FILTER()->save_personal_filter($item_reffer,$setting['filter'],$viewer_name) ;

       // в мероприятиях имя вьювера дублируется в таблице obj_site_events_chedule
       if ($setting['extended']=='events') update_rec_in_table($tkey,['viewer_name'=>$viewer_name],'pkey='.$pkey,['debug'=>0]) ;
       // в КЗ имя вьювера дублируется в таблице obj_site_quiz_themes
       if ($setting['extended']=='quiz')   update_rec_in_table($tkey,['viewer_name'=>$viewer_name],'pkey='.$pkey,['debug'=>0]) ;
       // для групп сотрудников временно дублируем информацию по фильтрам в ext_info/personals
       if ($setting['extended']=='groups') PERSONAL()->sync_personals_group_filter($id) ;

       if ($alert) echo $alert ;

       echo '<button class="button cancel">Закрыть</button>' ;
       $this->add_element('show_modal_window','HTML',array('title'=>'Обновление правил отбора','after_close_update_page'=>1,'width'=>'700')) ;   // показываем модальное окно
   }

   // сохранение условий отбора для мероприятий с pass по факту участия
   function recreate_usl_select_persons()
   {
       $this->save_usl_select_persons_apply($_POST) ;
       }

   function delete_usl_select_persons()
   { $item_reffer=$_POST['item_reffer'] ;
     $filter_id=($_POST['filter_id'])? $_POST['filter_id']:0 ;
     PERSONALS_FILTER()->remove_personal_filter($item_reffer,$filter_id) ;
     echo 'Правило отбора сотрудников успешно удалено<br><br>' ;
       echo '<button class="button cancel">Закрыть</button>' ;
     //$this->add_element('show_modal_window','HTML',array('title'=>'Удаление правила отбора','after_close_update_page'=>1,'width'=>'700')) ;   // показываем модальное окно
     $this->update_page=1 ;


     // для групп сотрудников временно дублируем информацию по фильтрам в ext_info/personals
     $viewer_name=PERSONALS_FILTER()->get_viewer_name_by_filter_reffer($item_reffer) ;
     if (stripos($viewer_name,'view_personals_group_')!==false)
     {   $id=(int)str_replace('view_personals_group_','',$viewer_name) ;
         PERSONAL()->sync_personals_group_filter($id) ;
     }
     //$this->add_element('show_modal_window','HTML',array('title'=>'Обновление правил отбора','after_close_update_page'=>1,'width'=>'700')) ;   // показываем модальное окно
   }

   function view_persons_by_filter()
   {   $item_reffer=$_POST['item_reffer'] ;
     $filter_id=($_POST['filter_id'])? $_POST['filter_id']:0 ;

       $filter_set=PERSONALS_FILTER()->get_personals_filter_to_item($item_reffer,$filter_id) ;


       if (_sizeof($filter_set))
        { $url=ENGINE()->prepare_url_by_filter($filter_set,['base_url'=>$_POST['base_url']]) ;
          //echo '$url='.$url.'<br>' ;
          $this->go_url=$url ;
     }

        //damp_array($filter_set);
        //$this->add_element('show_modal_window','HTML',array('title'=>'Показ сотрудников','after_close_update_page'=>1,'width'=>'700')) ;   // показываем модальное окно
     }

       /*$rec_section=QUIZ()->get_theme_by_id($setting['section_id']) ;
         if ($rec_section['level']>2 and $rec_section['parent2'])
         {   echo 'Создаем вьювер сотрудников подлежащих контролю по теме КЗ:<br>' ;
             $recs_sections=execSQL('select * from quiz_themes where parent='.$rec_section['parent2']) ;
             $_usl=[] ;
             if (_sizeof($recs_sections)) foreach($recs_sections as $rec) if ($rec['viewer_name']) $_usl[]='select * from '.$rec['viewer_name'] ;
             $sql=implode(' union ',$_usl) ;
             $viewer_name='view_personals_quiz_section_'.$rec_section['parent2'] ;
             SETUP()->create_viewer($viewer_name,$sql);

             $data=[] ;
             $data['viewer_name']=$viewer_name ;
             QUIZ()->section_save($rec_section['parent2'],$data);

             $rec_theme=QUIZ()->get_theme_by_id($rec_section['parent2']) ;
             $data=[] ;
             $data['viewer_name']=$viewer_name ;
             EVENTS()->save_events($rec_theme['event_id'],$data) ;

         }
         else if ($rec_section['level']>2) echo '<div class="red">В текущем разделе не задано поле parent2 - необходимо выполнить проверку структуры</div>' ;
         */




}
