From cb046516af835f82892a0214e5d6ec44336ceb61 Mon Sep 17 00:00:00 2001 From: brusnitsyn Date: Fri, 5 Jun 2026 09:40:39 +0900 Subject: [PATCH] =?UTF-8?q?[=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE]:=20=D0=92=D1=8B=D0=B2=D0=BE=D0=B4=20=D0=B2=D1=81?= =?UTF-8?q?=D0=B5=D1=85=20=D0=B2=D1=80=D0=B0=D1=87=D0=B5=D0=B9=20=D0=BF?= =?UTF-8?q?=D1=80=D0=B8=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D0=BD=D0=B8=D0=B8?= =?UTF-8?q?=20=D0=BE=D1=82=D1=87=D0=B5=D1=82=D0=B0=20#2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../Controllers/Api/DepartmentController.php | 36 ++++++++++++------- 1 file changed, 23 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Api/DepartmentController.php b/app/Http/Controllers/Api/DepartmentController.php index bcc956d..0f35215 100644 --- a/app/Http/Controllers/Api/DepartmentController.php +++ b/app/Http/Controllers/Api/DepartmentController.php @@ -7,6 +7,7 @@ use App\Models\Department; use App\Models\MisLpuDoctor; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; +use Illuminate\Support\Facades\Cache; class DepartmentController extends Controller { @@ -27,29 +28,38 @@ class DepartmentController extends Controller if ($onlyUserDepartment) { $departmentIds = [$department->rf_mis_department_id]; + $doctorCacheKey = "doctors:nurse:$department->rf_mis_department_id"; + $doctorProfileIds = []; } else { $user = Auth::user(); - // TODO: Доработать сопоставление с должностями - $userDepartmentProfile = $user->department->departmentType; + $userDepartmentProfileId = $user->department->departmentType->department_type_id; + $departmentProfileToDoctorProfiles = [ 1 => [1336, 1351, 1379, 1393, 1402, 1423, 1424, 1505] ]; + // Получаем ID профилей должностей для текущего типа отдела + $doctorProfileIds = $departmentProfileToDoctorProfiles[$userDepartmentProfileId] ?? []; + $departmentIds = $user->misDepartments->pluck('rf_mis_department_id')->toArray(); + $doctorCacheKey = "doctors:duty:$userDepartmentProfileId"; } - - $users = MisLpuDoctor::select(['LPUDoctorID', 'FAM_V', 'IM_V', 'OT_V']) - ->whereHas('prvds', function ($query) use ($departmentIds, $type) { - $query->when($type === 'nurse', function ($query) { + $users = Cache::remember($doctorCacheKey, 21600, function () use ($doctorProfileIds, $departmentIds, $type) { + return MisLpuDoctor::select(['LPUDoctorID', 'FAM_V', 'IM_V', 'OT_V']) + ->whereHas('prvds', function ($query) use ($doctorProfileIds, $departmentIds, $type) { + $query->when($type === 'nurse', function ($query) { $query->whereIn('rf_PRVDID', [1567, 1629]); + })->when($type !== 'nurse' && !empty($doctorProfileIds), function ($query) use ($doctorProfileIds) { + $query->whereIn('rf_PRVDID', $doctorProfileIds); }) - ->whereIn('rf_DepartmentID', $departmentIds) - ->whereDate('D_END', '2222-01-01 00:00:00.000000'); - }) - ->active() - ->whereNotIn('LPUDoctorID', [0, 1]) - ->orderBy('FAM_V') - ->get(); + ->whereIn('rf_DepartmentID', $departmentIds) + ->whereDate('D_END', '2222-01-01 00:00:00.000000'); + }) + ->active() + ->whereNotIn('LPUDoctorID', [0, 1]) + ->orderBy('FAM_V') + ->get(); + }); return response()->json([ ...$users,