<?php
// сервис для сохранения файла титула 1 на диск и регистрации пакета
// далее делается парсинг и разбор пакета
// если водитель/авто не найден - сообщаем о ошибке
// проверка МО водителя и формирование ПЛ - на следующем этапе, отдельным заданием планировщика

include_once(_DIR_EXT.'/HTML/c_page_TXT.php') ;
class c_services_pl_put_titul_5 extends c_page_txt
{

	function check_access()
  { /*if (!$this->setting['no_check_access']) $result=ESMO_GATEWAY()->api_check_access() ;
    else $result=['status'=>'success','comment'=>''] ;

    //if ($result['client_id']) $this->client_id=$result['client_id'] ;
		if ($result['status']!='success') { $this->response_error($mode,array('code'=>$result['comment'],'ip'=>$_SERVER['REMOTE_ADDR'])) ; }
*/
	$result=ENGINE()->prepare_result(['error'=>0]) ;

    return($result) ;
  }

  function body()
  {	  ob_start() ;
	  $rec=[] ; $xml_size=0 ; $sign_size=0 ; $result=[] ;  $result_save_xml_file=0 ; $result_save_sign_file=0 ;
	  $rec['status']=1;
	  $rec['packet_mode']=1; // входящий
	  $rec['packet_type']=5; // титул 1
	  $rec['ip']=$_SERVER['REMOTE_ADDR'];
	  // регистрируем входящий пакет, создаем запись по пакету
	  $result_packet_register=PL()->packet_register($rec) ;
	  $packet_id=$result_packet_register['id'] ;
	  if (sizeof($_FILES['document']))
	  {
		  // сохраняем файл на диск
		  $file_name='titul_5_'.$packet_id.'.xml' ;
		  $file_dir=_DIR_TO_ROOT.'/public/pl_titul/'.$file_name ;
		  $result_save_xml_file=move_uploaded_file($_FILES['document']['tmp_name'],$file_dir) ;

		  // готовим данные для сохранения в базу
		  $rec=$this->parse_xml_packet_to_rec($file_dir) ;
		  if (sizeof($rec))
		  { $rec['xml_size']=$_FILES['document']['size'] ;
			$rec_pl=[] ;
			if ($rec['pl_uid']) $rec_pl=PL()->get_put_list_by_uid($rec['pl_uid']) ;
			if ($rec_pl['pkey']) $rec['pl_id']=$rec_pl['pkey'] ;
			else $result=ENGINE()->prepare_result(['error'=>'pl_not_found','comment'=>'Не найден ПЛ UID '.$rec['pl_uid']]) ;
			$xml_size=$_FILES['document']['size'] ;
			PL()->packet_save($packet_id,$rec) ;
		  }
		  else $result=ENGINE()->prepare_result(['error'=>'source_error','comment'=>'error parsing XML doc']) ;

  	  }
	  else $result=ENGINE()->prepare_result(['error'=>'source_error','comment'=>'not found document file']) ;

	  if (sizeof($_FILES['signature']))
	  {
		  $file_name='titul_5_'.$packet_id.'.sign' ;
		  $file_dir=_DIR_TO_ROOT.'/public/pl_titul/'.$file_name ;
	  	  $result_save_sign_file=move_uploaded_file($_FILES['signature']['tmp_name'],$file_dir) ;

		  PL()->packet_save($packet_id,['sign_size'=>$_FILES['signature']['size']]) ;
		  $sign_size=$_FILES['signature']['size'] ;
	  }
	  else $result=ENGINE()->prepare_result(['error'=>'source_error','comment'=>'not found signature file']) ;

	  if ($result_save_xml_file and  $result_save_sign_file and $xml_size and $sign_size and !$result['error'])
	  {
		  // проверяем данные по сотруднику и авто в пакете
		  // если все ок - будет добавлена запись по путевому листу
		  $result=PL()->titul5_packet_parsing($packet_id) ;

	  }

	 $text=ob_get_clean() ;
	 //echo $text ;
	 LOGS()->reg_log('put_titul5', $text) ;
	 if ($text) $result['debug']=$text ;
	 $this->response($result);
  }

function parse_xml_packet_to_rec($fname)
{
		$rec=[] ;
		$data = PL()->parse_xml_packet_to_array($fname) ;
		unset($data['Документ']['ИдИнфВыезд']['@attributes']['ЭП']) ;
		//print_r($data);

		if ($data!=null)
		{
			$rec['file_uid']=$data['@attributes']['ИдФайл'] ;
			$rec['knd']=$data['Документ']['@attributes']['КНД'] ;
			//$rec['titul_date']=strtotime($data['Документ']['@attributes']['ДатИнфСоб'].' '.$data['Документ']['@attributes']['ВрИнфСоб']) ;
			//$rec['titul_date']=strtotime($data['Документ']['@attributes']['ДатИнфЗаезд'].' '.$data['Документ']['@attributes']['ВрИнфЗаезд']) ;
			$rec['pl_uid']=$data['Документ']['СодИнфЗаезд']['@attributes']['УИД_ПЛ'] ;

			// заполяем поле срок действия титула
			if (isset($data['Документ']['@attributes']['ДатИнфЗаезд']) and isset($data['Документ']['@attributes']['ВрИнфЗаезд']))
			{	$date=strtotime($data['Документ']['@attributes']['ДатИнфЗаезд'].' '.$data['Документ']['@attributes']['ВрИнфЗаезд']) ;
				$t=getdate($date) ;
				$rec['titul_date_from']=mktime(0,0,0,$t['mon'],$t['mday'],$t['year']) ;
				$rec['titul_date_to']=mktime(23,59,59,$t['mon'],$t['mday'],$t['year']) ;
				//damp_array($rec);
			}

		}
		return($rec) ;
}



  function response($result,$options=[])
  {  header("Content-type: text/xml;") ;
	  //var_dump($result);
	   $imp = new DOMImplementation; // Creates an instance of the DOMImplementation class
	   $xml_doc = $imp->createDocument("",""); // Creates a DOMDocument instance
		 $xml_doc->encoding = 'windows-1251';
		 $xml_doc->formatOutput = true;
		 $xml = add_element($xml_doc,$xml_doc,'results','',array('date'=>date('Y-m-d H:i'))) ;
		 if (_sizeof($result)) foreach ($result as $item_name=>$item_attr)
		 {
			 if (is_array($item_attr))
			 { $item_value=($item_attr['value'])?:'' ;
			   unset($item_attr['value']) ;
			 }
			 else $item_value=$item_attr ;
			 $item = add_element($xml_doc,$xml,$item_name,$item_value,$item_attr) ;
			 //if (_sizeof($arr)) foreach($arr as $name=>$value)  if ($name!='uid') add_element($xml_doc,$item,$name,$value) ;
		 }
		 if ($options['debug']) add_element($xml_doc,$xml,'debug',$options['debug']) ;
		 echo $xml_doc->saveXML() ;
  }


}



?>
