Exemplo n.º 1
0
Registrations::addModules(array('gRank' => array('description' => 'gRank registration survey module.', 'filters' => array('save' => function ($self, $params, $chain) {
    // Check league to see if grank is enabled
    if (empty($params['entity']->getLeague()->modules->gRank)) {
        $enabled = false;
    } else {
        $enabled = true;
    }
    if ($enabled and isset($params['data']['gRank'])) {
        if (isset($params['data']['gRank']['score'])) {
            unset($params['data']['gRank']['score']);
        }
        # Calculate the actual score, store in secondary_rank_data.grank
        $score = \app\modules\Registrations\GRankModule::calculateScore($params['data']['gRank']['answers']);
        if (is_numeric($score)) {
            $params['data']['secondary_rank_data']['grank'] = $score;
            $params['data']['gRank']['score'] = $score;
        }
    }
    return $chain->next($self, $params, $chain);
}, 'validates' => function ($self, $params, $chain) {
    $validationResult = $chain->next($self, $params, $chain);
    extract($params);
    // Check league to see if grank is enabled
    if (empty($entity->getLeague()->modules->gRank)) {
        $enabled = false;
    } else {
        $enabled = true;
    }
    $valid = true;
    if ($enabled) {
        if (!isset($entity->gRank->answers)) {
            $valid = false;
            $error = 'gRank data missing.';
        } else {
            $score = \app\modules\Registrations\GRankModule::calculateScore($entity->gRank->answers->to('array'));
            if (!is_numeric($score)) {
                $valid = false;
                $params['entity']->errors('gRank.score', implode(', ', $score));
            }
        }
    }
    return $valid && $validationResult;
}))));