Пример #1
0
 /**
  * Загружаем данные по сотрудникам из файла.
  * Поле snp используется для заполнения полей name, surname и patronymic
  * @return \yii\web\Response
  */
 public function actionReadfile()
 {
     $filename = 'in/employees.txt';
     $readfile = fopen($filename, 'r');
     while ($str = fgets($readfile, 1024)) {
         $items = explode(chr(9), $str);
         //ФИО; Код; Регион; Должность; Примечание; Код Контрагента
         if (count($items) != 6) {
             Yii::$app->session->setFlash('error', 'Файл не соответствует формату!');
             break;
         }
         if ($items[1] == 'Код') {
             continue;
         }
         //var_dump($items);
         //continue;
         $emp = Employees::findOne(['snp' => $items[0]]);
         if (isset($emp)) {
             // если в базе есть ФИО то пропускаем (т.е. загрузка не рассчитана на полных тёзок)
         } else {
             $emp = new Employees();
             $emp->snp = $items[0];
             $snp = explode(" ", $items[0]);
             //var_dump($snp); continue;
             $emp->surname = $snp[0];
             $emp->name = $snp[1];
             $emp->patronymic = $snp[2];
             $emp->employee_number = $items[1];
             $branch_id = Branches::getIdByName($items[2]);
             if ($branch_id > 0) {
                 $emp->branch_id = $branch_id;
             } else {
                 $emp->branch_id = 0;
                 //Буланиха
             }
             $emp->job_title = $items[3];
             $emp->unique_1c_number = $items[5];
             $emp->save();
         }
     }
     fclose($readfile);
     //die;
     return $this->redirect(['index']);
 }