/**
  * Check if the ser has completed the requirements for the session sequences
  * @param array $sequences The sequences
  * @param int $userId Optional. The user ID
  * @return array
  */
 private static function checkSessionRequirementsForUser(array $sequences, $userId = 0)
 {
     $sequenceList = [];
     $entityManager = Database::getManager();
     $gradebookCategoryRepo = $entityManager->getRepository('ChamiloCoreBundle:GradebookCategory');
     foreach ($sequences as $sequenceId => $sequence) {
         $item = ['name' => $sequence['name'], 'requirements' => []];
         foreach ($sequence['requirements'] as $sessionRequired) {
             $itemSession = ['name' => $sessionRequired->getName(), 'status' => true];
             $sessionsCourses = $sessionRequired->getCourses();
             foreach ($sessionsCourses as $sessionCourse) {
                 $course = $sessionCourse->getCourse();
                 $gradebooks = $gradebookCategoryRepo->findBy(['courseCode' => $course->getCode(), 'sessionId' => $sessionRequired->getId(), 'isRequirement' => true]);
                 foreach ($gradebooks as $gradebook) {
                     $category = Category::createCategoryObjectFromEntity($gradebook);
                     if (!empty($userId)) {
                         $itemSession['status'] = $itemSession['status'] && Category::userFinishedCourse($userId, $category, null, $course->getCode(), $sessionRequired->getId());
                     }
                 }
             }
             $item['requirements'][$sessionRequired->getId()] = $itemSession;
         }
         $sequenceList[$sequenceId] = $item;
     }
     return $sequenceList;
 }