You are here

public function UserModuleStatus::calculateMaxScore in Opigno module 8

Same name and namespace in other branches
  1. 3.x src/Entity/UserModuleStatus.php \Drupal\opigno_module\Entity\UserModuleStatus::calculateMaxScore()
2 calls to UserModuleStatus::calculateMaxScore()
UserModuleStatus::finishAttempt in src/Entity/UserModuleStatus.php
Finish user attempt.
UserModuleStatus::getAttemptScore in src/Entity/UserModuleStatus.php
Get Attempt Score.

File

src/Entity/UserModuleStatus.php, line 276

Class

UserModuleStatus
Defines the User module status entity.

Namespace

Drupal\opigno_module\Entity

Code

public function calculateMaxScore() {
  $max_score = 0;

  /* @var $db_connection \Drupal\Core\Database\Connection */
  $db_connection = \Drupal::service('database');

  /* @var $module \Drupal\opigno_module\Entity\OpignoModule */
  $module = $this
    ->getModule();
  $score_query = $db_connection
    ->select('opigno_module_relationship', 'omr')
    ->fields('omr', [
    'max_score',
    'activity_status',
  ])
    ->condition('omr.parent_id', $module
    ->id())
    ->condition('omr.parent_vid', $module
    ->getRevisionId());
  $score_results = $score_query
    ->execute()
    ->fetchAll();
  if (!empty($score_results)) {
    if ($module
      ->getRandomization() == 2) {

      // Get max score only for answered random activities.
      $max_score += $this
        ->getRandomActivitiesMaxScore();
    }
    else {
      foreach ($score_results as $score_result) {
        $max_score += $score_result->max_score;
      }
    }
  }
  return $max_score;
}