/** * 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]); }
/** * 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; }
?> </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;">