option('date') ?? Carbon::now()->subDays(7)->format('Y-m-d'); $endDate = $this->option('end-date') ?? Carbon::now()->format('Y-m-d'); $departmentId = $this->option('department'); $userId = $this->option('user'); $force = $this->option('force'); $this->info("Заполнение отчетов с {$startDate} по {$endDate}"); // Получаем отделения $departments = $departmentId ? Department::where('department_id', $departmentId)->get() : Department::all(); if ($departments->isEmpty()) { $this->error('Отделения не найдены'); return 1; } $totalReports = 0; $totalErrors = 0; foreach ($departments as $department) { $this->info("Обработка отделения: {$department->name_short}"); // Получаем пользователей отделения $users = $userId ? User::where('id', $userId)->whereHas('departments', function ($query) use ($department) { $query->where('rf_department_id', $department->department_id); })->get() : $this->getDepartmentUsers($department); if ($users->isEmpty()) { $this->warn("В отделении {$department->name} нет пользователей"); continue; } foreach ($users as $user) { try { $created = $this->autoReportService->fillReportsForUser( $user, $startDate, $endDate, $departmentId, $force, ); $totalReports += $created; $this->info("Для пользователя {$user->name} создано {$created} отчетов"); } catch (\Exception $e) { $totalErrors++; $this->error("Ошибка для пользователя {$user->name}: {$e->getMessage()}"); } } } $this->info("Готово! Создано отчетов: {$totalReports}, ошибок: {$totalErrors}"); return 0; } private function getDepartmentUsers(Department $department) { // Получаем пользователей, которые могут создавать отчеты return User::where('rf_department_id', $department->department_id) ->where(function ($query) { $query->where('role', 'doctor') ->orWhere('role', 'head_of_department'); }) ->where('is_active', true) ->get(); } }