public function UserModuleStatus::getRandomActivitiesMaxScore in Opigno module 3.x
Same name and namespace in other branches
- 8 src/Entity/UserModuleStatus.php \Drupal\opigno_module\Entity\UserModuleStatus::getRandomActivitiesMaxScore()
Calculate max score for the Module with enabled "Random activities" option.
1 call to UserModuleStatus::getRandomActivitiesMaxScore()
- UserModuleStatus::calculateMaxScore in src/
Entity/ UserModuleStatus.php
File
- src/
Entity/ UserModuleStatus.php, line 431
Class
- UserModuleStatus
- Defines the User module status entity.
Namespace
Drupal\opigno_module\EntityCode
public function getRandomActivitiesMaxScore() {
$max_score = 0;
/** @var \Drupal\Core\Database\Connection $db_connection */
$db_connection = \Drupal::service('database');
/** @var \Drupal\opigno_module\Entity\OpignoModule $module */
$module = $this
->getModule();
$random_activities_count = $module
->getRandomActivitiesCount();
// Get activities from answers.
$activities_query = $db_connection
->select('opigno_answer_field_data', 'oafd')
->fields('oafd', [
'activity',
])
->condition('oafd.user_id', $this
->getOwnerId())
->condition('oafd.user_module_status', $this
->id())
->range(0, $random_activities_count);
$results = $activities_query
->execute()
->fetchAllAssoc('activity');
// Get max score for activities.
if ($aids = array_keys($results)) {
$score_query = $db_connection
->select('opigno_module_relationship', 'omr')
->fields('omr', [
'max_score',
'activity_status',
])
->condition('omr.parent_id', $module
->id())
->condition('omr.child_id', $aids, 'IN');
$score_results = $score_query
->execute()
->fetchAll();
if (!empty($score_results)) {
foreach ($score_results as $score_result) {
if ($score_result->activity_status == 1) {
$max_score += $score_result->max_score;
}
}
}
}
return $max_score;
}