Beispiel #1
0
 /**
  * Return law tag based on deputy vote
  * @return LawTag
  */
 public function getLawTag()
 {
     $law = $this->law;
     $lawTagName = '';
     if ($law->id === 'відвідуваність') {
         if ($this->vote >= 50) {
             $lawTagName = 'працює';
         } else {
             $lawTagName = 'прогулює';
         }
     } else {
         if (!$law->good && $this->vote === Law::VOTE_ABSENT) {
             $lawTagName = '';
         } elseif ($this->vote === Law::VOTE_YES) {
             $lawTagName = $law->tagYes;
         } else {
             $lawTagName = $law->tagNo;
         }
     }
     return LawTag::findOne(['name' => $lawTagName]);
 }
Beispiel #2
0
 /**
  * Returns party's law tags info
  * @return array
  */
 public function getLawTagsInfo()
 {
     $info = [];
     foreach (LawTag::find()->orderBy('order')->all() as $lawTag) {
         $lawTagGood = $lawTag->type === LawTag::TYPE_SUCCESS ? $lawTag->name : $lawTag->opposite;
         $lawTagBad = $lawTag->type === LawTag::TYPE_SUCCESS ? $lawTag->opposite : $lawTag->name;
         $info[$lawTagGood] = ['good' => $lawTagGood, 'bad' => $lawTagBad, 'rates' => []];
     }
     foreach ($this->deputies as $deputy) {
         $lawTagsInfo = $deputy->lawTagsInfo;
         foreach ($lawTagsInfo as $lawTagName => $lawTagInfo) {
             $lawTag = LawTag::findOne(['name' => $lawTagName]);
             $lawTagGood = $lawTag->type === LawTag::TYPE_SUCCESS ? $lawTag->name : $lawTag->opposite;
             $lawTagBad = $lawTag->type === LawTag::TYPE_SUCCESS ? $lawTag->opposite : $lawTag->name;
             if ($lawTag->type === LawTag::TYPE_SUCCESS) {
                 $info[$lawTagGood]['rates'][] = $lawTagInfo['rate'];
                 if (isset($lawTagsInfo[$lawTag->opposite])) {
                     $info[$lawTagGood]['rates'][] = 100 - $lawTagsInfo[$lawTag->opposite]['rate'];
                 }
             } else {
                 $info[$lawTagGood]['rates'][] = 100 - $lawTagInfo['rate'];
                 if (isset($lawTagsInfo[$lawTag->opposite])) {
                     $info[$lawTagGood]['rates'][] = $lawTagsInfo[$lawTag->opposite]['rate'];
                 }
             }
         }
     }
     foreach ($info as $lawTagName => $lawTagInfo) {
         if (count($lawTagInfo['rates'])) {
             $info[$lawTagName]['rate'] = round(array_sum($lawTagInfo['rates']) / count($lawTagInfo['rates']));
         } else {
             $info[$lawTagName]['rate'] = 0;
         }
         unset($info[$lawTagName]['rates']);
     }
     return $info;
 }
Beispiel #3
0
?>
                    </tbody>
                </table>
            </td>
        </tr></tbody></table>
    </div>
    <div class="modal-body ng-scope">
        <table class="table">
            <tbody>
                <?php 
foreach ($deputy->lawTags as $lawTagName) {
    ?>
                    <?php 
    $tagLawIds = $deputy->lawTagsInfo[$lawTagName]['laws'];
    $lawTag = LawTag::findOne(['name' => $lawTagName]);
    $lawTagOpposite = LawTag::findOne(['opposite' => $lawTagName]);
    if (isset($deputy->lawTagsInfo[$lawTagOpposite->name])) {
        if ($lawTagOpposite->type === LawTag::TYPE_SUCCESS && $deputy->lawTagsInfo[$lawTagOpposite->name]['rate'] >= $deputy->lawTagsInfo[$lawTagName]['rate']) {
            continue;
        } elseif ($lawTagOpposite->type === LawTag::TYPE_DANGER && $deputy->lawTagsInfo[$lawTagOpposite->name]['rate'] > $deputy->lawTagsInfo[$lawTagName]['rate']) {
            continue;
        }
        $tagLawIds = \yii\helpers\ArrayHelper::merge($tagLawIds, $deputy->lawTagsInfo[$lawTagOpposite->name]['laws']);
    }
    ?>
                    <tr>
                        <td>
                            <?php 
    if (in_array($lawTagName, ['працює', 'прогулює'])) {
        ?>
                                <p style="font-size: 14px; line-height: 18px;">