<?
// утилита удаляет дубликаты сообщений, возникшие в результате присуствия скрытых мероприятий (невидимых для админа, без group_id)
include_once(_DIR_TO_MODULES.'/engine/i_backgroup_process.php');
include_once(_DIR_EXT.'/esmo_magnit_pmo/i_event_pmo.php');
class c_services_esmo_magnit_pmo_send_pmo_dock_pack extends i_backgroup_process_exec
{
	function exec()
	{   $str_personals_ids='' ;
	    //damp_array($this->setting);
		$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,6,7) 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.')') ;
          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);
          }

		}
		else echo 'Сотрудников не найдено' ;
	}

	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.')
                            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_PMO()->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 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.')');
		$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('esmo_magnit_pmo/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'   =>'esmo_magnit_pmo/i_event_pmo' // объект, которые будет использоваться в эвентах
							));
			//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('esmo_magnit_pmo/doc_union');
			DISK()->check_dir(_DIR_TO_ROOT.DOCS()->storage_pdf.$doc_dir);
			$report_obj=REPORTS()->get_report_obj_by_code('esmo_magnit_pmo/doc_union');
			$target_doc_pdf='pmo_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'][]=$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);
	}
}

?>
