self::getTypesArray()], [['connection_value'], 'in', 'range' => self::getConnectionValuesArray()], [['item_value', 'name', 'time'], 'string', 'max' => 255], [['time', 'weekdays', 'item_value', 'item_id', 'board_id', 'connection_value', 'date'], 'default', 'value' => null], [['weekdays'], 'each', 'rule' => ['in', 'range' => self::getWeekDaysArray()]], [['active'], 'boolean'], [['active'], 'default', 'value' => true], [['event_ids'], 'each', 'rule' => ['integer']], ]; } /** * @inheritdoc */ public function behaviors() { return [ [ 'class' => LinkerBehavior::className(), 'relations' => [ 'event_ids' => 'events', ], ], ]; } /** * @inheritdoc */ public function attributeLabels() { return [ 'id' => 'ID', 'active' => 'Включен', 'type' => 'Тип', 'date' => 'Дата', 'time' => 'Время', 'weekdays' => 'Дни недели', 'item_id' => 'Элемент', 'item_value' => 'Значение элемента', 'board_id' => 'Устройство', 'connection_value' => 'Значение состояния', 'event_ids' => 'События', 'name' => 'Название', ]; } /** * @return array */ public static function getTypes() { return [ self::TYPE_BY_ITEM_VALUE => 'Изменение Значения Элемента', self::TYPE_BY_USER_ITEM_CHANGE => 'Изменение Пользователем Значения Элемента', self::TYPE_BY_DATE => 'Дата', self::TYPE_BY_TIME => 'Время', self::TYPE_MANUAL => 'Вручную', self::TYPE_BOARD_CONNECTION => 'Состояние подключения платы', ]; } /** * @return array */ public static function getTypesArray() { return array_keys(self::getTypes()); } /** * @return array */ public static function getConnectionValues() { return [ self::CONNECTION_VALUE_CONNECTED => 'Подключено', self::CONNECTION_VALUE_DISCONNECTED => 'Отключено', ]; } /** * @return array */ public static function getConnectionValuesArray() { return array_keys(self::getConnectionValues()); } /** * @return array */ public static function getWeekDays() { return [ 'Monday' => 'Понедельник', 'Tuesday' => 'Вторник', 'Wednesday' => 'Среда', 'Thursday' => 'Четверг', 'Friday' => 'Пятница', 'Saturday' => 'Суббота', 'Sunday' => 'Воскресенье', ]; } /** * @return array */ public static function getWeekDaysArray() { return array_keys(self::getWeekDays()); } /** * @return string */ public function getTypeLabel() { return self::getTypes()[$this->type]; } /** * @return array */ public static function getList() { return ArrayHelper::map(self::find()->all(), 'id', 'name'); } /** * @return \yii\db\ActiveQuery */ public function getItem() { return $this->hasOne(Item::className(), ['item_id' => 'id']); } /** * @return \yii\db\ActiveQuery */ public function getBoard() { return $this->hasOne(Board::className(), ['board_id' => 'id']); } /** * @return \yii\db\ActiveQuery */ public function getEvents() { return $this->hasMany(Event::className(), ['id' => 'event_id'])->viaTable('{{%event_trigger}}', ['trigger_id' => 'id']); } /** * @inheritdoc */ public function beforeSave($insert) { if (parent::beforeSave($insert)) { if (is_array($this->weekdays)) { $this->weekdays = implode($this->weekdays, ', '); } return true; } else { return false; } } }