Ejemplo n.º 1
0
 /**
  * Execute the action.
  *
  */
 public function run($args)
 {
     echo 'START ' . date("Y-m-d H:i:s") . PHP_EOL;
     include_once realpath(Yii::getPathOfAlias('edifact-parser')) . '/Parser.php';
     include_once realpath(Yii::getPathOfAlias('edifact-parser')) . '/Reader.php';
     include_once realpath(Yii::getPathOfAlias('edifact-parser')) . '/Analyser.php';
     if (empty($args)) {
         foreach (Yii::app()->params['terminal_pop3'] as $terminal => $pop3_settings) {
             echo 'Read terminal: ' . $terminal . PHP_EOL;
             $attacments = $this->readPop3Attachments($pop3_settings['host'], $pop3_settings['user'], $pop3_settings['password']);
             echo 'Found  ' . count($attacments) . ' attachments' . PHP_EOL;
             if ($attacments) {
                 $att = [];
                 foreach ($attacments as $attachment) {
                     $EdiReader = new EDI\Reader($attachment['data']);
                     $messageCount = $EdiReader->readEdiDataValue('UNZ', 1);
                     if ($messageCount != 1) {
                         $aM = EDI\Reader::splitMultiMessage($attachment['data']);
                         foreach ($aM as $a) {
                             $att[] = ['filename' => $attachment['filename'], 'data' => $a];
                         }
                         continue;
                     }
                     $att[] = $attachment;
                 }
                 echo 'Found  ' . count($att) . ' messages' . PHP_EOL;
                 foreach ($att as $attachment) {
                     $this->saveAttachment($attachment['filename'], $attachment['data']);
                 }
             }
             echo 'Finish Read terminal: ' . $terminal . PHP_EOL;
         }
         echo 'FINISH ' . date("Y-m-d H:i:s") . PHP_EOL;
         return true;
     }
     if ($args[0] == 'analyze') {
         $this->analyze($args[1]);
     }
     if ($args[0] == 'read_codes') {
         $this->codes_to_db();
     }
     if ($args[0] == 'read') {
         if (isset($args[1])) {
             $this->readEdiData($args[1]);
         } else {
             $all = Edifact::model()->findAll();
             foreach ($all as $edifact) {
                 $this->readEdiData($edifact->id);
             }
         }
     }
     if ($args[0] == '7days') {
         $count = EcerErrors::mark7DaysNoMoving();
         echo '7days no moving: ' . $count . PHP_EOL;
     }
 }