예제 #1
0
 /**
  * Добавляем в БД всех сотрудников организации
  *
  * @param Request $request
  * @param Organization $organization
  */
 public function pushWorkers(Request $request, Organization $organization)
 {
     $workers = [];
     // создаем метку, которая привязывается ко всем сотрудникам
     // и сохраняем название организации и едрпоу, на тот случай если они потом изменяться
     $snapshot = new Snapshot();
     $snapshot->name = $organization->fullName;
     $snapshot->edrpou = $organization->edrpou;
     $snapshot->date = Carbon::parse($request->get('date'));
     $snapshot->organization()->associate($organization);
     $snapshot->save();
     $organization->snapshot()->associate($snapshot);
     $organization->save();
     // разделы
     foreach ($request->get('workers') as $departmentName => $departmentData) {
         if ($departmentName == 'main') {
             $departmentName = '';
         }
         if (isset($departmentData['workers'])) {
             foreach ($departmentData['workers'] as $workerData) {
                 $this->_createWorker($workers, $workerData, $snapshot, $organization, $departmentName);
             }
         }
         // подразделы
         if (isset($departmentData['sub'])) {
             foreach ($departmentData['sub'] as $subDepartmentName => $workersData) {
                 foreach ($workersData as $workerData) {
                     $this->_createWorker($workers, $workerData, $snapshot, $organization, $departmentName, $subDepartmentName);
                 }
             }
         }
     }
     $snapshot->count = count($workers);
     $snapshot->save();
     Worker::insert($workers);
     // индексуруем работников
     $newWorkers = Worker::where('snapshot_id', $snapshot->id)->get();
     $newWorkers->addToIndex();
 }