$this->task_number, ]; if ($user) { $timeRange = TaskFacade::getTimeInterval($this->cycle); $taskUser = $this->taskUsers() ->when($this->cycle != 'one', function ($q) use ($timeRange) { $q->whereBetween('task_at', $timeRange); }) ->byUser($user) ->first(); if ($taskUser) { return array_merge($data, [ 'task_id' => $taskUser->id, 'finish' => $taskUser->status, 'total' => min($taskUser->total, $data['all']), ]); } else { return array_merge($data, [ 'finish' => 0, 'total' => 0, ]); } } else { return array_merge($data, [ 'finish' => 0, 'total' => 0, ]); } } }