Rehap.app/app/Models/User.php
Михаил c39d333b4d Upload
2025-03-20 11:20:30 +03:00

58 lines
2.0 KiB
PHP
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

<?php
namespace App\Models;
use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Laravel\Sanctum\HasApiTokens;
use Illuminate\Database\Eloquent\Model;
use Spatie\Permission\Traits\HasRoles; // Использование правильного трейта для работы с токенами
class User extends Authenticatable
{
use HasApiTokens, HasFactory, HasRoles;
protected $fillable = ['name', 'email', 'password','doctor_id','role_type'];
public function patients()
{
return $this->hasMany(User::class, 'doctor_id');
}
// Связь с доктором (если это пациент)
public function doctor()
{
return $this->belongsTo(User::class, 'doctor_id');
}
// Связь с курсами
public function courses()
{
return $this->belongsToMany(Course::class)->withTimestamps();
}
// Связь с упражнениями, с учетом их выполнения
public function exercises()
{
return $this->belongsToMany(Exercise::class, 'exercise_user')->withPivot('completed');
}
// Метод для проверки, завершены ли все упражнения
public function isCompleted($userId)
{
// Получаем все упражнения, связанные с курсом
$exercises = $this->exercises;
// Проверяем, завершены ли все упражнения для данного пациента
foreach ($exercises as $exercise) {
// Проверка завершенности каждого упражнения
$completed = $exercise->users()->wherePivot('user_id', $userId)->wherePivot('completed', true)->exists();
if (!$completed) {
return false; // Если хотя бы одно упражнение не завершено
}
}
return true; // Все упражнения завершены
}
}