diff --git a/app/Http/Controllers/Api/DepartmentController.php b/app/Http/Controllers/Api/DepartmentController.php index 5d52c0d..bcc956d 100644 --- a/app/Http/Controllers/Api/DepartmentController.php +++ b/app/Http/Controllers/Api/DepartmentController.php @@ -26,19 +26,24 @@ class DepartmentController extends Controller $type = $request->query('type', 'duty'); if ($onlyUserDepartment) { - $departmentId = $department->rf_mis_department_id; + $departmentIds = [$department->rf_mis_department_id]; } else { $user = Auth::user(); - $departmentId = $user->department->rf_mis_department_id; + // TODO: Доработать сопоставление с должностями + $userDepartmentProfile = $user->department->departmentType; + $departmentProfileToDoctorProfiles = [ + 1 => [1336, 1351, 1379, 1393, 1402, 1423, 1424, 1505] + ]; + $departmentIds = $user->misDepartments->pluck('rf_mis_department_id')->toArray(); } $users = MisLpuDoctor::select(['LPUDoctorID', 'FAM_V', 'IM_V', 'OT_V']) - ->whereHas('prvds', function ($query) use ($departmentId, $type) { + ->whereHas('prvds', function ($query) use ($departmentIds, $type) { $query->when($type === 'nurse', function ($query) { $query->whereIn('rf_PRVDID', [1567, 1629]); }) - ->where('rf_DepartmentID', $departmentId) + ->whereIn('rf_DepartmentID', $departmentIds) ->whereDate('D_END', '2222-01-01 00:00:00.000000'); }) ->active() diff --git a/app/Models/Department.php b/app/Models/Department.php index 8019ce0..645274b 100644 --- a/app/Models/Department.php +++ b/app/Models/Department.php @@ -40,7 +40,7 @@ class Department extends Model public function userDepartment() { - return $this->belongsTo(UserDepartment::class, 'rf_department_id', 'department_id'); + return $this->belongsTo(UserDepartment::class, 'department_id', 'rf_department_id'); } public function recipientPlanOfYear() diff --git a/app/Models/User.php b/app/Models/User.php index 2436698..1971516 100644 --- a/app/Models/User.php +++ b/app/Models/User.php @@ -68,6 +68,19 @@ class User extends Authenticatable return $this->hasMany(UserDepartment::class, 'rf_user_id', 'id')->orderBy('order'); } + public function misDepartments() + { + return $this->belongsToMany( + Department::class, // конечная модель + 'user_departments', // промежуточная таблица + 'rf_user_id', // внешний ключ в промежуточной таблице на User + 'rf_department_id', // внешний ключ в промежуточной таблице на Department + 'id', // локальный ключ в User + 'department_id' // локальный ключ в Department (уточните имя!) + )->withPivot('order') // если нужен order + ->orderBy('user_departments.order'); + } + public function favoriteDepartment() { return $this->department()->where('is_favorited', true);