<?php

namespace common\components;

use common\models\Transfer;

use yii\base\Object;
use common\models\MessageDetstaLab;
use common\models\MessageDetstaTetel;
use common\models\MessageDetsta;
use common\models\MessageDetstaFej;
use common\models\TicketInstallmentRequest;
/**
 * Detstat üzenet mentése adatbázisba
 * 
 * @property  common\models\Ugiro $koteg
 * @property  common\models\giro\GiroDETSTA $giroDETSTA
 */
class DetStaDBSave  extends Object
{
	
	/**
	 * giro köteg
	 * */
	public $koteg;
	/**
	 * GiroDetsta üzenet
	 * */
	public $giroDETSTA;
	/**felhasználó*/
	public $idUser;
	/**messagedetsta*/
	public $message;
	/**messagedetsta fej*/
	public $messageFej;
	/**messagedetsta lab*/
	public $messageLab;
	
	public $path;
	
	/**messagedetsta tetelek*/
	public $messageTetelek = [];
	
	
	public function run(){
		$this->saveMessageDetsta();
		$this->saveMessageDetstaFej( );
		$this->saveMessageDetstaLab();
		$this->saveMessageDetstaTetelek();
		
	}
	
	/**
	 *
	 * @param  common\models\Ugiro;
	 * @param  common\models\giro\GiroDETSTA $giroDETSTA
	 * */
	protected function saveMessageDetsta( ) {
		$this->message = new MessageDetsta();
		$this->message->id_user = $this->idUser;
		$this->message->path = $this->path;
		if ( isset( $this->koteg ) ){
			$this->message->id_ugiro = $this->koteg->id_ugiro;
		}
		
		if ( !$this->message->save() ){
			\Yii::error("Nem sikerült menteni a detsta üzenet fájlt");
			throw new \Exception("Nem sikerült menteni a detsta üzenet fájtl");
		}
		\Yii::info("detsta üzenet mentve");
	
		 
		 
	}
	
	protected function readDate($date){
		$date = trim($date);
		if ( empty($date))
			return null;
		$dtime = \DateTime::createFromFormat('Ymd' ,$date);
		if ( !$dtime ){
			return false;
		}
		return $dtime->format('Y-m-d');
	}
	
	/**
	 *
	 * */
	protected function saveMessageDetstaFej( ){
		$this->messageFej = new MessageDetstaFej();
		$fej = $this->giroDETSTA->fej;
		/** @var common\components\giro\GiroDETSTAFej  $fej */
		
		$dtime = \DateTime::createFromFormat("yyyyMMdd","");
	
		$this->messageFej->id_message = $this->message->id_message;
		$this->messageFej->record_tipus = $fej->recordTipus;
		$this->messageFej->uzenet_tipus = $fej->uzenetTipus;
		$this->messageFej->jelentes_jelzo = $fej->jelentesJelzo;
		$this->messageFej->kezdemenyezo_azonosito = $fej->kezdemenyezoAzonosito;
		$this->messageFej->csoportos_uzenet_sorszam = $fej->csoportosUzenetSorszam->sorszam;
		$this->messageFej->csoportos_uzenet_datum =  $this->readDate($fej->csoportosUzenetSorszam->osszeallitasDatuma  );
		$this->messageFej->detsta_uzenet_sorszam =  $fej->detstaUzenetSorszam->sorszam;
		$this->messageFej->detsta_uzenet_datum = $this->readDate( $fej->detstaUzenetSorszam->osszeallitasDatuma  );
		$this->messageFej->ido = $fej->ido;
		if ( !$this->messageFej->save(false)){
			\Yii::error("Nem sikerült menteni a detsta üzenet fej fájlt");
			throw new \Exception("Nem sikerült menteni a detsta üzenet fej fájlt");
		}
		\Yii::info("detsta fej üzenet mentve");
	}
	
	protected function saveMessageDetstaLab( ){
		$this->messageLab = new MessageDetstaLab();
		$lab = $this->giroDETSTA->lab;
		$this->messageLab->id_message =  $this->message->id_message;
		$this->messageLab->record_tipus = $lab->recordTipus;
		$this->messageLab->teljesitett_tetelek_szama = $lab->teljesitettTetelekSzama;
		$this->messageLab->teljesitett_tetelek_osszerteke = $lab->teljesitettTetelekOsszerteke;
		$this->messageLab->visszautasitott_tetelek_szama = $lab->visszautasitottTetelekSzama;
		$this->messageLab->visszautasitott_tetelek_osszerteke = $lab->visszautasitottTetelekSzama;
		$this->messageLab->megnemvalaszolt_tetelek_szama = $lab->megNemValaszoltTetelekSzama;
		$this->messageLab->megnemvalaszolt_tetelek_osszerteke = $lab->megNemValaszoltTetelekOsszerteke;
		
		if ( !$this->messageLab->save(false)){
			\Yii::error("Nem sikerült menteni a detsta üzenet lab fájlt");
			throw new \Exception("Nem sikerült menteni a detsta üzenet lab fájlt");
		}
		\Yii::info("detsta lab üzenet mentve");
	}
	
	protected function saveMessageDetstaTetelek( ){
		$tetelek = $this->giroDETSTA->tetelek;
		foreach ($tetelek as $tetel){
			$this->saveMessageDetstaTetel($tetel);
		}
		
	}
	protected function saveMessageDetstaTetel($tetel ){
		$mt = new MessageDetstaTetel();
		$mt->id_message =  $this->message->id_message;
		
		$mt->record_tipus = $tetel->recordTipus ;
		$mt->tetel_sorszam= $tetel->tetelSorszam ;
		$mt->osszeg= $tetel->osszeg ;
		$mt->eredeti_tetel_elszamolasi_datuma= $tetel->eredetiTetelElszamolasiDatuma ;
		$mt->visszajelzes_informacio= $tetel->visszajelzesInformacio ;
		$mt->feldolgozas_datum= $tetel->feldolgozasDatum ;
		$mt->terhelesi_datum=   $this->readDate($tetel->terhelesiDatum);
		$mt->valasz_hivatkozasi_kod= $tetel->valaszHivatkozasiKod ;
		$mt->eredeti_hivatkozasi_kod= $tetel->eredetiHivatkozasiKod ;
		$mt->ugyfel_azonosito= $tetel->ugyfelAzonosito ;
		
		$request = $this->readRequest($mt->tetel_sorszam);
		
		if ( isset($request) ){
			$mt->id_ticket_installment_request = $request->id_ticket_installment_request;
		}
		
		if ( !$mt->save(false)){
			\Yii::error("Nem sikerült menteni a detsta üzenet tetelt");
			throw new \Exception("Nem sikerült menteni a detsta üzenet tetelt");
		}
		\Yii::info("detsta tetel üzenet mentve");
		$this->messageTetelek[] = $mt;
		
	}
	
	protected function readRequest($tetel_sorszam){
		$query = TicketInstallmentRequest::find();
		$query->innerJoin("ugiro_request_assignment","ugiro_request_assignment.id_request = ticket_installment_request.id_ticket_installment_request");
		$query->innerJoin("ugiro","ugiro.id_ugiro = ugiro_request_assignment.id_ugiro");
		$query->andWhere(['ugiro.id_ugiro' => $this->koteg->id_ugiro]);
		$query->andWhere(['ticket_installment_request.number' => $tetel_sorszam]);
		return $query->one();
	}
	
	
}