Проверьте, если значение равно x и существует, а затем отметьте завершение, если все существуют - PullRequest
0 голосов
/ 08 октября 2018

Я думаю, что переоценил этот процесс до такой степени, что потерял себя.

У меня есть курсы, которые проходят сотрудники.Каждый урок помечается как завершенный, когда сотрудник заканчивает урок.

Я пытаюсь проверить, закончил ли сотрудник все уроки курса, а затем пометить курс как завершенный, если все уроки завершены.

Что у меня есть.

  1. Запрос на уроки курса.

  2. Запрос на законченный урок от сотрудника.

Я застрял на проверке, что урок каждого курса завершил урок и возвращает значение true или false.

public function lessoncomplete(Request $request)
{
    //LessonLog::create(request()->all());

    $user_id = $request->user;
    $lesson_id = $request->lesson;
    $course_id = $request->course;
    $lessonLog = new LessonLog;
    $lessonLog->user_id = $user_id;
    $lessonLog->course_id = $course_id;
    $lessonLog->lesson_id = $lesson_id;
    $lessonLog->save();

    //get course lessons
    $course_lessons = Lesson::where('course_id', $course_id)->get();

// получить уроки, которые пользователь завершил

    $user_lessons = LessonLog::where('user_id', $user_id)->where('course_id', $course_id)->get();

// проверяем, завершен ли каждый урок для пользователя.

foreach ($ course_lesson as $ lesson) {$ complete = false;

foreach ($user_lessons as $user_lesson) {
    if ($user_lesson->lesson_id == $lesson->id) {
        $completed = true;
        break;
    }
}

//If $completed is still false, then the user has not completed the course
dd($completed);

}

    return response()->json(['success' => 1]);
}

Ответы [ 2 ]

0 голосов
/ 15 октября 2018
    //check if each of the lessons for the course are complete for the user.

  foreach ($course_lessons as $lesson) {
    $completed = false;

    if($user_lessons->isEmpty()){
    $completed= false;
    }
    else{

    foreach ($user_lessons as $user_lesson) {
        if ($user_lesson->lesson_id == $lesson->id) {
            $completed = true;
            break;
        }else{
            $completed= false;
            break;
        }
    }
}
    //If $completed is still false, then the user has not completed the course
    $complete = new CourseCompletions;

    $complete->user_id = $user_id;
    $complete->course_id = $course_id;
    $complete->added_by = '99999';

    $complete->save();
}

Я вижу, где я заканчивал проверку, если не было никакого значения.Я попробовал несколько способов завершить это.Я думаю, что опечатка.

0 голосов
/ 09 октября 2018

Я предполагаю, что LessonLog будет содержать все законченные уроки?Если это так, вы можете просто просмотреть все уроки, связанные с курсом, и посмотреть, какие идентификаторы совпадают в журнале урока.Если они все совпадают, то курс завершен.

Пример:

foreach ($course_lesson as $lesson) {
    $completed = false;

    foreach ($user_lessons as $user_lesson) {
        if ($user_lesson->lesson_id == $lesson->id) {
            $completed = true;
            break;
        }
    }

    //If $completed is still false, then the user has not completed the course
    //Stop iteration
    if (!$completed)
       break;
}
...