public function canWatch(): bool
{
- return $this->user->can('receive-notifications') && !$this->user->isDefault();
+ return $this->user->can('receive-notifications') && !$this->user->isGuest();
}
public function getWatchLevel(): string
return null;
}
- public function updateWatchLevel(string $level): void
+ public function updateLevelByName(string $level): void
{
$levelValue = WatchLevels::levelNameToValue($level);
- if ($levelValue < 0) {
+ $this->updateLevelByValue($levelValue);
+ }
+
+ public function updateLevelByValue(int $level): void
+ {
+ if ($level < 0) {
$this->remove();
return;
}
- $this->updateLevel($levelValue);
+ $this->updateLevel($level);
}
public function getWatchMap(): array
$entities[] = $this->entity->chapter;
}
- $query = Watch::query()->where(function (Builder $subQuery) use ($entities) {
- foreach ($entities as $entity) {
- $subQuery->orWhere(function (Builder $whereQuery) use ($entity) {
- $whereQuery->where('watchable_type', '=', $entity->getMorphClass())
+ $query = Watch::query()
+ ->where('user_id', '=', $this->user->id)
+ ->where(function (Builder $subQuery) use ($entities) {
+ foreach ($entities as $entity) {
+ $subQuery->orWhere(function (Builder $whereQuery) use ($entity) {
+ $whereQuery->where('watchable_type', '=', $entity->getMorphClass())
->where('watchable_id', '=', $entity->id);
- });
- }
- });
+ });
+ }
+ });
$this->watchMap = $query->get(['watchable_type', 'level'])
->pluck('level', 'watchable_type')