Exemple #1
0
 /**
  * Recupere les dernieres statistiques de chaque buiobanque, et calcule les statisqtiues globales
  * @return type
  */
 public function getAverageRate()
 {
     $result = array();
     $listAttributes = StatTools::getAttributesForRating();
     $bbStatsCriteria = new EMongoCriteria();
     $bbStatsCriteria->addCond('biobank_id', '!=', '0');
     // $biobanksStats = BiobankStats::model()->findAll($bbStatsCriteria);
     $biobanksStats = array();
     $collAggregate = BiobankStats::model()->getCollection()->aggregate(array('$sort' => array('date' => -1)), array('$group' => array('_id' => '$biobank_id', 'biobank' => array('$first' => array('values' => '$values', 'date' => '$date')))));
     foreach ($collAggregate['result'] as $firstResult) {
         $stats = new BiobankStats();
         $stats->setAttributes($firstResult['biobank'], false);
         $biobanksStats[] = $stats;
     }
     $rateCount = 0;
     foreach ($listAttributes as $attributeName => $attributeConstraint) {
         $partialResult = 0;
         foreach ($biobanksStats as $BiobankStats) {
             if (isset($BiobankStats->values[$attributeName])) {
                 $partialResult += $BiobankStats->values[$attributeName];
             }
         }
         $result['values'][$attributeName] = $partialResult / count($biobanksStats);
         $rateCount += $result['values'][$attributeName];
     }
     $result['globalRate'] = $rateCount / count($listAttributes);
     return $result;
 }