public function checkMotion(Motion $motion)
 {
     if (!$motion->getIsActive() || $motion->getEndedAt() > new \DateTime()) {
         return false;
     }
     $this->beginTransaction();
     $votes = $this->getVotes($motion);
     $isApproved = $votes['positive'] > $votes['negative'];
     $score = round(100 - $votes[$isApproved ? 'negative' : 'positive'] / ($votes['negative'] + $votes['positive']) * 100, 2);
     $motion->setIsActive(false)->setIsApproved($isApproved)->setScore($score);
     $nbAffectedRows = $this->connection->prepareStatement('UPDATE motions SET is_active = 0, is_approved = :is_approved, score = :score WHERE id = :id', ['is_approved' => $isApproved, 'score' => $score, 'id' => $motion->getId()])->rowCount();
     if ($nbAffectedRows === 0) {
         $this->rollback(true);
     }
     $this->commit();
     return true;
 }