add(new BoolCast([ 'is_problem', 'is_handled', 'is_reachable', 'is_flapping', 'is_overdue', 'is_acknowledged', 'in_downtime' ])); $behaviors->add(new MillisecondTimestamp([ 'last_update', 'last_state_change', 'next_check', 'next_update' ])); $behaviors->add(new Binary([ $this->getKeyName(), 'environment_id', 'acknowledgement_comment_id', 'last_comment_id' ])); } /** * Get the state icon * * @return Icon|null */ public function getIcon(): ?Icon { $icon = null; switch (true) { case $this->is_acknowledged: $icon = new Icon(Icons::IS_ACKNOWLEDGED); break; case $this->in_downtime: $icon = new Icon( Icons::IN_DOWNTIME, ['title' => sprintf( '%s (%s)', strtoupper($this->getStateTextTranslated()), $this->is_handled ? t('handled by Downtime') : t('in Downtime') )] ); break; case $this->is_flapping: $icon = new Icon(Icons::IS_FLAPPING); break; case ! $this->is_reachable: $icon = new Icon(Icons::HOST_DOWN, [ 'title' => sprintf( '%s (%s)', strtoupper($this->getStateTextTranslated()), t('is unreachable') ) ]); break; case $this->is_handled: $icon = new Icon(Icons::HOST_DOWN); break; } return $icon; } }