<?
// утилита удаляет дубликаты сообщений, возникшие в результате присуствия скрытых мероприятий (невидимых для админа, без group_id)
include_once(_DIR_TO_MODULES.'/engine/i_backgroup_process.php');
include_once('i_event_opo.php');

class c_services_events_opo_send_pmo_dock_pack extends i_backgroup_process_exec
{
	function exec()
	{
        $str_personals_ids='' ;
		$event_id=$this->setting['event_id'];
		if ($this->setting['str_personal_ids']) $str_personals_ids=$this->setting['str_personal_ids'] ;
        else if ($this->setting['org_id'])
        { $personals_ids=execSQL_line('select so.personal_id
                                       from obj_site_events_pass pass 
                                       left join obj_site_workers so on so.personal_id=pass.personal_id and so.parent2='.$this->setting['org_id'].'
                                       where pass.event_id='.$event_id.' and pass.enabled=1 and pass.status in (2,3,4,5,22) and not so.pkey is null
                                      ');
          $str_personals_ids=implode(',',$personals_ids) ;
        }



        // работаем с переданным списком сотрудников
        // группируем сотрудников по организациям и делаем отдельное письмо в каждую организациб
		if($str_personals_ids)
		{ $arr_orgs=[] ;
          $personals_orgs=execSQL_row('select pkey,parent2 from obj_site_personals where pkey in ('.$str_personals_ids.') and enabled=1') ;
          if (_sizeof($personals_orgs)) foreach($personals_orgs as $personal_id=>$org_id) $arr_orgs[$org_id][]=$personal_id ;

          if (_sizeof($arr_orgs)) foreach($arr_orgs as $org_id=>$arr_person_ids)
          {   $str_org_personals_ids=implode(',',$arr_person_ids) ;
              $this->send_list_personals_to_HR($event_id,$org_id,$str_org_personals_ids);
              //$this->send_PMO_docs_to_HR($event_id,$org_id,$str_org_personals_ids);
          }

		}
	}

  function send_list_personals_to_HR($event_id,$org_id,$str_personal_ids)
  	{
  		ob_start();
  		$rec_event=EVENTS()->get_event_by_id($event_id);

  		$personals_names=[];
  		$recs_pass=execSQL('select pass.pkey,pass.personal_id,pass.status,
                              fl.obj_name,fl.dr 
                              from obj_site_events_pass pass 
                              left join obj_site_personals fl on fl.pkey=pass.personal_id   
                              where pass.event_id='.$event_id.' and pass.personal_id in ('.$str_personal_ids.') and fl.enabled=1
                              order by pass.status,fl.obj_name
                              ');

  		if(_sizeof($recs_pass)) foreach($recs_pass as $rec_pass)
  		{   if ($rec_pass['status']==3 or $rec_pass['status']==22 or $rec_pass['status']==3 or $rec_pass['status']==4 or $rec_pass['status']==5 or $rec_pass['status']==6) $status=2 ;
  		    else $status=$rec_pass['status'] ;
  		    $personals_names[$status][]='<li>'.$rec_pass['obj_name'].','.$rec_pass['dr'].'</li>';
          }

  		ob_start();
        ?><strong>Добрый день!</strong><br><p>В ближайшие 50 дней необходимо пройти ОПО следующим сотрудникам:</p><br><?
        if (sizeof($personals_names)) foreach($personals_names as $status=>$arr_names)
            { ?><strong><?echo EVENT_OPO()->arr_status[$status]?></strong>:<br><br><?
              ?><ul><? echo implode('',$arr_names) ?></ul><?
            }

  	  $text=ob_get_clean();

  	  $arr_emails=explode(',',$rec_event['_ext_info']['emails_to_orgs'][$org_id]);
  	  if(_sizeof($arr_emails)) $mail_options['debug']=1;
  		{
  			$email=trim($arr_emails[0]);
  			unset($arr_emails[0]);
  			$mail_options['cc']=array();
  			if(_sizeof($arr_emails)) foreach($arr_emails as $cc_email) if(trim($cc_email)) $mail_options['cc'][trim($cc_email)]=trim($cc_email);
  			MAILS()->send_mail($email,'Подлежат ОПО',$text,$mail_options);
  		}

  		$text=ob_get_clean();
  		echo $text;
  		$name=LOGS()->reg_file_log('send_reports_auto',$text);
  		LOGS()->reg_log('Автоматическая отправка отчета','список сотрудников ОПО <a target=_blank href="'.$name.'">Отчет</a>'.$text);
  	}


    function send_PMO_docs_to_HR($event_id,$org_id,$str_personal_ids)
	{
		ob_start();
		$rec_event=EVENTS()->get_event_by_id($event_id);

		$personals_names=[];
		$recs_pass=execSQL('select * from obj_site_events_pass where event_id='.$event_id.' and personal_id in ('.$str_personal_ids.')');
		$arr_html_docs=array();

		if(_sizeof($recs_pass)) foreach($recs_pass as $rec_pass)
		{
			$rec_personal=PERSONAL()->get_personal_by_id($rec_pass['personal_id']);
			//FILE_LOG()->append('Идет подготовка пакета документов для сотрудника ID '.$rec_pass['personal_id']);
			$personals_names[]='<li>'.$rec_personal['obj_name'].'</li>';
			/*$res=DOCS()->doc_create('events_opo/doc_union',// filter
							array('event_id'=>$rec_pass['event_id'],'personal_id'=>$rec_pass['personal_id']),// options
							array('no_reg_doc'   =>1, // не регистрировать документ в таблице документов
										'no_create_pdf'=>1, // не создавать PDF, будут возвращен массив исходных HTML документов для PDF
										'event_id'     =>$rec_pass['event_id'],'source_pkey'=>$rec_pass['pkey'], // ID персоны в мероприяии
										'source_tkey'  =>$rec_pass['tkey'], // ID персоны в мероприяии
										'source_obj'   =>'events_opo/i_event_opo' // объект, которые будет использоваться в эвентах
							));
			//damp_array($res,1,-1);
			if(_sizeof($res['arr_html_docs'])) foreach($res['arr_html_docs'] as $fname) $arr_html_docs[]=$fname;
			echo 'Подготовлены документы для сотрудника ID '.$rec_pass['personal_id'].'<br>';
			//FILE_LOG()->append('Подготовлены документы для сотрудника ID '.$rec_pass['personal_id']) ;
			*/
		}
		//damp_array($arr_html_docs) ;
		// имеем подготовленый массив HTML документов, который надо собрать в один PDF файл
		/*if(_sizeof($arr_html_docs))
		{
			FILE_LOG()->append('Готовим PDF-документ для пакета из '._sizeof($arr_html_docs).' документов');
			$source=implode(' ',$arr_html_docs);
			// определяем директрию для сохранения документа
			$doc_dir=DOCS()->get_doc_dir('events_opo/doc_union');
			DISK()->check_dir(_DIR_TO_ROOT.DOCS()->storage_pdf.$doc_dir);
			$report_obj=REPORTS()->get_report_obj_by_code('events_opo/doc_union');
			$target_doc_pdf='opo_docs_union_'.ENGINE()->generate_UID().'.pdf';
			$options=array();
			$result_convert=$report_obj->execHTML2PDF($source,_DIR_TO_ROOT.DOCS()->storage_pdf.$doc_dir.$target_doc_pdf,array('pdf_options'=>$options['pdf_options']));
			//damp_array($result_convert) ;
			if($result_convert['error'])
			{ ?>
          <div class="alert"><? echo $result_convert['error'] ?></div><?
			}
			else
			{   //echo  '$back_proc:' ;
				//damp_array($back_proc);
				//if ($back_proc!=null) $back_proc->log_fname=hide_server_dir($result_convert['outputfile']) ;
				//echo $back_proc->log_fname ;
				$this->waiting_pdf_generate($result_convert['outputfile']);
			}
		}*/

		//$mail_options['files'][] = _DIR_TO_ROOT . '/temp/' . $result['PDF_file_name'];;
		//$mail_options['files'][]=$result_convert['to'];;
		//damp_array($result_convert);
		//damp_array($mail_options);

		ob_start();
		?><strong>Добрый день!</strong><br><p>В ближайшие 50 дней необходимо пройти ОПО следующим сотрудникам:</p><br>
      <ul><? echo implode('',$personals_names) ?></ul>
      <?/*?><p>В приложенном файле содержаться документы для направления сотрудников на ОПО</p><br>
		<?*/

		$text=ob_get_clean();
		//echo $text ;

		$arr_emails=explode(',',$rec_event['_ext_info']['emails_to_orgs'][$org_id]);
		if(_sizeof($arr_emails)) $mail_options['debug']=1;
		{
			$email=trim($arr_emails[0]);
			unset($arr_emails[0]);
			$mail_options['cc']=array();
			if(_sizeof($arr_emails)) foreach($arr_emails as $cc_email) if(trim($cc_email)) $mail_options['cc'][trim($cc_email)]=trim($cc_email);
			MAILS()->send_mail($email,'Подлежат ОПО',$text,$mail_options);
		}

		$text=ob_get_clean();
		echo $text;
		$name=LOGS()->reg_file_log('send_reports_auto',$text);
		LOGS()->reg_log('Автоматическая отправка отчета','<a target=_blank href="'.$name.'">Отчет</a>'.$text);
	}

	function waiting_pdf_generate($log_name)
	{
		$t1=fixed_time();
		do
		{
			$text=file_get_contents($log_name);
			//$arr=explode("\r",$text) ;
			//FILE_LOG()->append($arr[_sizeof($arr)-1]) ;
			sleep(1);
		} while(strpos($text,'Done')===false and strpos($text,'100%')===false);
		$t2=fixed_time();
		echo 'Генерация отчета - '.round($t2-$t1,2).' сек.<br>';
		sleep(10);
	}
}

?>
