<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: keyapis/access_management/v1/keyapis_access_management_group_v1.proto

namespace Keyapis\AccessManagement\V1;

use Google\Protobuf\Internal\GPBType;
use Google\Protobuf\Internal\RepeatedField;
use Google\Protobuf\Internal\GPBUtil;

/**
 * Фильтр групп
 *
 * Generated from protobuf message <code>keyapis.access_management.v1.GroupFilter</code>
 */
class GroupFilter extends \Google\Protobuf\Internal\Message
{
    /**
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     *
     * Generated from protobuf field <code>string text = 1;</code>
     */
    protected $text = '';
    /**
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     *
     * Generated from protobuf field <code>map<string, string> requirements = 2;</code>
     */
    private $requirements;
    /**
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     *
     * Generated from protobuf field <code>map<string, string> claims = 3;</code>
     */
    private $claims;
    /**
     * По тегам.
     * # Диапазон: 0..10
     *
     * Generated from protobuf field <code>repeated string tags = 4;</code>
     */
    private $tags;
    /**
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     */
    protected $hide_deleted = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $text
     *           По тексту.
     *           Если значение не передано то поиск по нему не производится.
     *           # Диапазон: 3..64.
     *           # Поиск производится по полям:
     *           # - Наименование
     *     @type array|\Google\Protobuf\Internal\MapField $requirements
     *           По requirements группы.
     *           Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     *           При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     *           При передаче нескольких элементов map они работают в выборке через И
     *     @type array|\Google\Protobuf\Internal\MapField $claims
     *           По claims группы.
     *           Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     *           При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     *           При передаче нескольких элементов map они работают в выборке через И
     *     @type array<string>|\Google\Protobuf\Internal\RepeatedField $tags
     *           По тегам.
     *           # Диапазон: 0..10
     *     @type \Google\Protobuf\BoolValue $hide_deleted
     *           Скрывать удалённые элементы.
     *           Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
     *           Если значение — false или не задано, возвращаются все записи, включая удалённые
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Keyapis\AccessManagement\V1\KeyapisAccessManagementGroupV1::initOnce();
        parent::__construct($data);
    }

    /**
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     *
     * Generated from protobuf field <code>string text = 1;</code>
     * @return string
     */
    public function getText()
    {
        return $this->text;
    }

    /**
     * По тексту.
     * Если значение не передано то поиск по нему не производится.
     * # Диапазон: 3..64.
     * # Поиск производится по полям:
     * # - Наименование
     *
     * Generated from protobuf field <code>string text = 1;</code>
     * @param string $var
     * @return $this
     */
    public function setText($var)
    {
        GPBUtil::checkString($var, True);
        $this->text = $var;

        return $this;
    }

    /**
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     *
     * Generated from protobuf field <code>map<string, string> requirements = 2;</code>
     * @return \Google\Protobuf\Internal\MapField
     */
    public function getRequirements()
    {
        return $this->requirements;
    }

    /**
     * По requirements группы.
     * Возвращаем группы, у которых Group.requirements.key=GroupFilter.requirements[n].key И Group.requirements.value=GroupFilter.requirements[n].value.
     * При пустом GroupFilter.requirements[n].value возвращаем все группы, у которых Group.requirements.key=GroupFilter.requirements[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     *
     * Generated from protobuf field <code>map<string, string> requirements = 2;</code>
     * @param array|\Google\Protobuf\Internal\MapField $var
     * @return $this
     */
    public function setRequirements($var)
    {
        $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
        $this->requirements = $arr;

        return $this;
    }

    /**
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     *
     * Generated from protobuf field <code>map<string, string> claims = 3;</code>
     * @return \Google\Protobuf\Internal\MapField
     */
    public function getClaims()
    {
        return $this->claims;
    }

    /**
     * По claims группы.
     * Возвращаем группы, у которых Group.claim.key=GroupFilter.claims[n].key И Group.claims.value=GroupFilter.claims[n].value.
     * При пустом GroupFilter.claims[n].value возвращаем все группы, у которых Group.claims.key=GroupFilter.claims[n].key.
     * При передаче нескольких элементов map они работают в выборке через И
     *
     * Generated from protobuf field <code>map<string, string> claims = 3;</code>
     * @param array|\Google\Protobuf\Internal\MapField $var
     * @return $this
     */
    public function setClaims($var)
    {
        $arr = GPBUtil::checkMapField($var, \Google\Protobuf\Internal\GPBType::STRING, \Google\Protobuf\Internal\GPBType::STRING);
        $this->claims = $arr;

        return $this;
    }

    /**
     * По тегам.
     * # Диапазон: 0..10
     *
     * Generated from protobuf field <code>repeated string tags = 4;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getTags()
    {
        return $this->tags;
    }

    /**
     * По тегам.
     * # Диапазон: 0..10
     *
     * Generated from protobuf field <code>repeated string tags = 4;</code>
     * @param array<string>|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setTags($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::STRING);
        $this->tags = $arr;

        return $this;
    }

    /**
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     * @return \Google\Protobuf\BoolValue|null
     */
    public function getHideDeleted()
    {
        return $this->hide_deleted;
    }

    public function hasHideDeleted()
    {
        return isset($this->hide_deleted);
    }

    public function clearHideDeleted()
    {
        unset($this->hide_deleted);
    }

    /**
     * Returns the unboxed value from <code>getHideDeleted()</code>

     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     * @return bool|null
     */
    public function getHideDeletedUnwrapped()
    {
        return $this->readWrapperValue("hide_deleted");
    }

    /**
     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setHideDeleted($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->hide_deleted = $var;

        return $this;
    }

    /**
     * Sets the field by wrapping a primitive type in a Google\Protobuf\BoolValue object.

     * Скрывать удалённые элементы.
     * Если значение — true, возвращаются только записи, у которых deleted_at = null или deleted_at > текущего времени.
     * Если значение — false или не задано, возвращаются все записи, включая удалённые
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hide_deleted = 5;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setHideDeletedUnwrapped($var)
    {
        $this->writeWrapperValue("hide_deleted", $var);
        return $this;}

}

