<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/cloud/talent/v4beta1/filters.proto

namespace Google\Cloud\Talent\V4beta1;

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

/**
 * Filters to apply when performing the search query.
 *
 * Generated from protobuf message <code>google.cloud.talent.v4beta1.ProfileQuery</code>
 */
class ProfileQuery extends \Google\Protobuf\Internal\Message
{
    /**
     * Optional.
     * Keywords to match any text fields of profiles.
     * For example, "software engineer in Palo Alto".
     *
     * Generated from protobuf field <code>string query = 1;</code>
     */
    private $query = '';
    /**
     * Optional.
     * The location filter specifies geo-regions containing the profiles to
     * search against.
     * If a location filter isn't specified, profiles fitting the other search
     * criteria are retrieved regardless of where they're located.
     * If [LocationFilter.negated][google.cloud.talent.v4beta1.LocationFilter.negated] is specified, the result doesn't contain
     * profiles from that location.
     * For example, search for profiles with addresses in "New York City".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2;</code>
     */
    private $location_filters;
    /**
     * Optional.
     * Job title filter specifies job titles of profiles to match on.
     * If a job title isn't specified, profiles with any titles are retrieved.
     * If multiple values are specified, profiles are retrieved with any of the
     * specified job titles.
     * If [JobTitleFilter.negated][google.cloud.talent.v4beta1.JobTitleFilter.negated] is specified, the result won't contain
     * profiles with the job titles.
     * For example, search for profiles with a job title "Product Manager".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.JobTitleFilter job_title_filters = 3;</code>
     */
    private $job_title_filters;
    /**
     * Optional.
     * Employer filter specifies employers of profiles to match on.
     * If an employer filter isn't specified, profiles with any employers are
     * retrieved.
     * If multiple employer filters are specified, profiles with any matching
     * employers are retrieved.
     * If [EmployerFilter.negated][google.cloud.talent.v4beta1.EmployerFilter.negated] is specified, the result won't contain
     * profiles that match the employers.
     * For example, search for profiles that have working experience at "Google
     * LLC".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.EmployerFilter employer_filters = 4;</code>
     */
    private $employer_filters;
    /**
     * Optional.
     * Education filter specifies education of profiles to match on.
     * If an education filter isn't specified, profiles with any education are
     * retrieved.
     * If multiple education filters are specified, profiles that match any
     * education filters are retrieved.
     * If [EducationFilter.negated][google.cloud.talent.v4beta1.EducationFilter.negated] is specified, the result won't contain
     * profiles that match the educations.
     * For example, search for profiles with a master degree.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.EducationFilter education_filters = 5;</code>
     */
    private $education_filters;
    /**
     * Optional.
     * Skill filter specifies skill of profiles to match on.
     * If a skill filter isn't specified, profiles with any skills are retrieved.
     * If multiple skill filters are specified, profiles that match any skill
     * filters are retrieved.
     * If [SkillFilter.negated][google.cloud.talent.v4beta1.SkillFilter.negated] is specified, the result won't contain profiles
     * that match the skills.
     * For example, search for profiles that have "Java" and "Python" in skill
     * list.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.SkillFilter skill_filters = 6;</code>
     */
    private $skill_filters;
    /**
     * Optional.
     * Work experience filter specifies the total working experience of profiles
     * to match on.
     * If a work experience filter isn't specified, profiles with any
     * professional experience are retrieved.
     * If multiple work experience filters are specified, profiles that match any
     * work experience filters are retrieved.
     * For example, search for profiles with 10 years of work experience.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.WorkExperienceFilter work_experience_filter = 7;</code>
     */
    private $work_experience_filter;
    /**
     * Optional.
     * Time filter specifies the create/update timestamp of the profiles to match
     * on.
     * For example, search for profiles created since "2018-1-1".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.TimeFilter time_filters = 8;</code>
     */
    private $time_filters;
    /**
     * Optional.
     * The hirable filter specifies the profile's hirable status to match on.
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hirable_filter = 9;</code>
     */
    private $hirable_filter = null;
    /**
     * Optional.
     * The application date filters specify application date ranges to match on.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationDateFilter application_date_filters = 10;</code>
     */
    private $application_date_filters;
    /**
     * Optional.
     * The application outcome notes filters specify the notes for the outcome of
     * the job application.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter application_outcome_notes_filters = 11;</code>
     */
    private $application_outcome_notes_filters;
    /**
     * Optional.
     * The application job filters specify the job applied for in the application.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationJobFilter application_job_filters = 13;</code>
     */
    private $application_job_filters;
    /**
     * Optional.
     * This filter specifies a structured syntax to match against the
     * [Profile.custom_attributes][google.cloud.talent.v4beta1.Profile.custom_attributes] that are marked as `filterable`.
     * The syntax for this expression is a subset of Google SQL syntax.
     * String custom attributes: supported operators are =, != where the left of
     * the operator is a custom field key and the right of the operator is a
     * string (surrounded by quotes) value.
     * Numeric custom attributes: Supported operators are '>', '<' or '='
     * operators where the left of the operator is a custom field key and the
     * right of the operator is a numeric value.
     * Supported functions are LOWER(<field_name>) to
     * perform case insensitive match and EMPTY(<field_name>) to filter on the
     * existence of a key.
     * Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
     * nesting (for example "((A AND B AND C) OR NOT D) AND E"), and there can be
     * a maximum of 50 comparisons/functions in the expression. The expression
     * must be < 2000 characters in length.
     * Sample Query:
     * (key1 = "TEST" OR LOWER(key1)="test" OR NOT EMPTY(key1))
     *
     * Generated from protobuf field <code>string custom_attribute_filter = 15;</code>
     */
    private $custom_attribute_filter = '';

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type string $query
     *           Optional.
     *           Keywords to match any text fields of profiles.
     *           For example, "software engineer in Palo Alto".
     *     @type \Google\Cloud\Talent\V4beta1\LocationFilter[]|\Google\Protobuf\Internal\RepeatedField $location_filters
     *           Optional.
     *           The location filter specifies geo-regions containing the profiles to
     *           search against.
     *           If a location filter isn't specified, profiles fitting the other search
     *           criteria are retrieved regardless of where they're located.
     *           If [LocationFilter.negated][google.cloud.talent.v4beta1.LocationFilter.negated] is specified, the result doesn't contain
     *           profiles from that location.
     *           For example, search for profiles with addresses in "New York City".
     *     @type \Google\Cloud\Talent\V4beta1\JobTitleFilter[]|\Google\Protobuf\Internal\RepeatedField $job_title_filters
     *           Optional.
     *           Job title filter specifies job titles of profiles to match on.
     *           If a job title isn't specified, profiles with any titles are retrieved.
     *           If multiple values are specified, profiles are retrieved with any of the
     *           specified job titles.
     *           If [JobTitleFilter.negated][google.cloud.talent.v4beta1.JobTitleFilter.negated] is specified, the result won't contain
     *           profiles with the job titles.
     *           For example, search for profiles with a job title "Product Manager".
     *     @type \Google\Cloud\Talent\V4beta1\EmployerFilter[]|\Google\Protobuf\Internal\RepeatedField $employer_filters
     *           Optional.
     *           Employer filter specifies employers of profiles to match on.
     *           If an employer filter isn't specified, profiles with any employers are
     *           retrieved.
     *           If multiple employer filters are specified, profiles with any matching
     *           employers are retrieved.
     *           If [EmployerFilter.negated][google.cloud.talent.v4beta1.EmployerFilter.negated] is specified, the result won't contain
     *           profiles that match the employers.
     *           For example, search for profiles that have working experience at "Google
     *           LLC".
     *     @type \Google\Cloud\Talent\V4beta1\EducationFilter[]|\Google\Protobuf\Internal\RepeatedField $education_filters
     *           Optional.
     *           Education filter specifies education of profiles to match on.
     *           If an education filter isn't specified, profiles with any education are
     *           retrieved.
     *           If multiple education filters are specified, profiles that match any
     *           education filters are retrieved.
     *           If [EducationFilter.negated][google.cloud.talent.v4beta1.EducationFilter.negated] is specified, the result won't contain
     *           profiles that match the educations.
     *           For example, search for profiles with a master degree.
     *     @type \Google\Cloud\Talent\V4beta1\SkillFilter[]|\Google\Protobuf\Internal\RepeatedField $skill_filters
     *           Optional.
     *           Skill filter specifies skill of profiles to match on.
     *           If a skill filter isn't specified, profiles with any skills are retrieved.
     *           If multiple skill filters are specified, profiles that match any skill
     *           filters are retrieved.
     *           If [SkillFilter.negated][google.cloud.talent.v4beta1.SkillFilter.negated] is specified, the result won't contain profiles
     *           that match the skills.
     *           For example, search for profiles that have "Java" and "Python" in skill
     *           list.
     *     @type \Google\Cloud\Talent\V4beta1\WorkExperienceFilter[]|\Google\Protobuf\Internal\RepeatedField $work_experience_filter
     *           Optional.
     *           Work experience filter specifies the total working experience of profiles
     *           to match on.
     *           If a work experience filter isn't specified, profiles with any
     *           professional experience are retrieved.
     *           If multiple work experience filters are specified, profiles that match any
     *           work experience filters are retrieved.
     *           For example, search for profiles with 10 years of work experience.
     *     @type \Google\Cloud\Talent\V4beta1\TimeFilter[]|\Google\Protobuf\Internal\RepeatedField $time_filters
     *           Optional.
     *           Time filter specifies the create/update timestamp of the profiles to match
     *           on.
     *           For example, search for profiles created since "2018-1-1".
     *     @type \Google\Protobuf\BoolValue $hirable_filter
     *           Optional.
     *           The hirable filter specifies the profile's hirable status to match on.
     *     @type \Google\Cloud\Talent\V4beta1\ApplicationDateFilter[]|\Google\Protobuf\Internal\RepeatedField $application_date_filters
     *           Optional.
     *           The application date filters specify application date ranges to match on.
     *     @type \Google\Cloud\Talent\V4beta1\ApplicationOutcomeNotesFilter[]|\Google\Protobuf\Internal\RepeatedField $application_outcome_notes_filters
     *           Optional.
     *           The application outcome notes filters specify the notes for the outcome of
     *           the job application.
     *     @type \Google\Cloud\Talent\V4beta1\ApplicationJobFilter[]|\Google\Protobuf\Internal\RepeatedField $application_job_filters
     *           Optional.
     *           The application job filters specify the job applied for in the application.
     *     @type string $custom_attribute_filter
     *           Optional.
     *           This filter specifies a structured syntax to match against the
     *           [Profile.custom_attributes][google.cloud.talent.v4beta1.Profile.custom_attributes] that are marked as `filterable`.
     *           The syntax for this expression is a subset of Google SQL syntax.
     *           String custom attributes: supported operators are =, != where the left of
     *           the operator is a custom field key and the right of the operator is a
     *           string (surrounded by quotes) value.
     *           Numeric custom attributes: Supported operators are '>', '<' or '='
     *           operators where the left of the operator is a custom field key and the
     *           right of the operator is a numeric value.
     *           Supported functions are LOWER(<field_name>) to
     *           perform case insensitive match and EMPTY(<field_name>) to filter on the
     *           existence of a key.
     *           Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
     *           nesting (for example "((A AND B AND C) OR NOT D) AND E"), and there can be
     *           a maximum of 50 comparisons/functions in the expression. The expression
     *           must be < 2000 characters in length.
     *           Sample Query:
     *           (key1 = "TEST" OR LOWER(key1)="test" OR NOT EMPTY(key1))
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Cloud\Talent\V4Beta1\Filters::initOnce();
        parent::__construct($data);
    }

    /**
     * Optional.
     * Keywords to match any text fields of profiles.
     * For example, "software engineer in Palo Alto".
     *
     * Generated from protobuf field <code>string query = 1;</code>
     * @return string
     */
    public function getQuery()
    {
        return $this->query;
    }

    /**
     * Optional.
     * Keywords to match any text fields of profiles.
     * For example, "software engineer in Palo Alto".
     *
     * Generated from protobuf field <code>string query = 1;</code>
     * @param string $var
     * @return $this
     */
    public function setQuery($var)
    {
        GPBUtil::checkString($var, True);
        $this->query = $var;

        return $this;
    }

    /**
     * Optional.
     * The location filter specifies geo-regions containing the profiles to
     * search against.
     * If a location filter isn't specified, profiles fitting the other search
     * criteria are retrieved regardless of where they're located.
     * If [LocationFilter.negated][google.cloud.talent.v4beta1.LocationFilter.negated] is specified, the result doesn't contain
     * profiles from that location.
     * For example, search for profiles with addresses in "New York City".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getLocationFilters()
    {
        return $this->location_filters;
    }

    /**
     * Optional.
     * The location filter specifies geo-regions containing the profiles to
     * search against.
     * If a location filter isn't specified, profiles fitting the other search
     * criteria are retrieved regardless of where they're located.
     * If [LocationFilter.negated][google.cloud.talent.v4beta1.LocationFilter.negated] is specified, the result doesn't contain
     * profiles from that location.
     * For example, search for profiles with addresses in "New York City".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.LocationFilter location_filters = 2;</code>
     * @param \Google\Cloud\Talent\V4beta1\LocationFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setLocationFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\LocationFilter::class);
        $this->location_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * Job title filter specifies job titles of profiles to match on.
     * If a job title isn't specified, profiles with any titles are retrieved.
     * If multiple values are specified, profiles are retrieved with any of the
     * specified job titles.
     * If [JobTitleFilter.negated][google.cloud.talent.v4beta1.JobTitleFilter.negated] is specified, the result won't contain
     * profiles with the job titles.
     * For example, search for profiles with a job title "Product Manager".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.JobTitleFilter job_title_filters = 3;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getJobTitleFilters()
    {
        return $this->job_title_filters;
    }

    /**
     * Optional.
     * Job title filter specifies job titles of profiles to match on.
     * If a job title isn't specified, profiles with any titles are retrieved.
     * If multiple values are specified, profiles are retrieved with any of the
     * specified job titles.
     * If [JobTitleFilter.negated][google.cloud.talent.v4beta1.JobTitleFilter.negated] is specified, the result won't contain
     * profiles with the job titles.
     * For example, search for profiles with a job title "Product Manager".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.JobTitleFilter job_title_filters = 3;</code>
     * @param \Google\Cloud\Talent\V4beta1\JobTitleFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setJobTitleFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\JobTitleFilter::class);
        $this->job_title_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * Employer filter specifies employers of profiles to match on.
     * If an employer filter isn't specified, profiles with any employers are
     * retrieved.
     * If multiple employer filters are specified, profiles with any matching
     * employers are retrieved.
     * If [EmployerFilter.negated][google.cloud.talent.v4beta1.EmployerFilter.negated] is specified, the result won't contain
     * profiles that match the employers.
     * For example, search for profiles that have working experience at "Google
     * LLC".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.EmployerFilter employer_filters = 4;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getEmployerFilters()
    {
        return $this->employer_filters;
    }

    /**
     * Optional.
     * Employer filter specifies employers of profiles to match on.
     * If an employer filter isn't specified, profiles with any employers are
     * retrieved.
     * If multiple employer filters are specified, profiles with any matching
     * employers are retrieved.
     * If [EmployerFilter.negated][google.cloud.talent.v4beta1.EmployerFilter.negated] is specified, the result won't contain
     * profiles that match the employers.
     * For example, search for profiles that have working experience at "Google
     * LLC".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.EmployerFilter employer_filters = 4;</code>
     * @param \Google\Cloud\Talent\V4beta1\EmployerFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setEmployerFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\EmployerFilter::class);
        $this->employer_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * Education filter specifies education of profiles to match on.
     * If an education filter isn't specified, profiles with any education are
     * retrieved.
     * If multiple education filters are specified, profiles that match any
     * education filters are retrieved.
     * If [EducationFilter.negated][google.cloud.talent.v4beta1.EducationFilter.negated] is specified, the result won't contain
     * profiles that match the educations.
     * For example, search for profiles with a master degree.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.EducationFilter education_filters = 5;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getEducationFilters()
    {
        return $this->education_filters;
    }

    /**
     * Optional.
     * Education filter specifies education of profiles to match on.
     * If an education filter isn't specified, profiles with any education are
     * retrieved.
     * If multiple education filters are specified, profiles that match any
     * education filters are retrieved.
     * If [EducationFilter.negated][google.cloud.talent.v4beta1.EducationFilter.negated] is specified, the result won't contain
     * profiles that match the educations.
     * For example, search for profiles with a master degree.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.EducationFilter education_filters = 5;</code>
     * @param \Google\Cloud\Talent\V4beta1\EducationFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setEducationFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\EducationFilter::class);
        $this->education_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * Skill filter specifies skill of profiles to match on.
     * If a skill filter isn't specified, profiles with any skills are retrieved.
     * If multiple skill filters are specified, profiles that match any skill
     * filters are retrieved.
     * If [SkillFilter.negated][google.cloud.talent.v4beta1.SkillFilter.negated] is specified, the result won't contain profiles
     * that match the skills.
     * For example, search for profiles that have "Java" and "Python" in skill
     * list.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.SkillFilter skill_filters = 6;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getSkillFilters()
    {
        return $this->skill_filters;
    }

    /**
     * Optional.
     * Skill filter specifies skill of profiles to match on.
     * If a skill filter isn't specified, profiles with any skills are retrieved.
     * If multiple skill filters are specified, profiles that match any skill
     * filters are retrieved.
     * If [SkillFilter.negated][google.cloud.talent.v4beta1.SkillFilter.negated] is specified, the result won't contain profiles
     * that match the skills.
     * For example, search for profiles that have "Java" and "Python" in skill
     * list.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.SkillFilter skill_filters = 6;</code>
     * @param \Google\Cloud\Talent\V4beta1\SkillFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setSkillFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\SkillFilter::class);
        $this->skill_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * Work experience filter specifies the total working experience of profiles
     * to match on.
     * If a work experience filter isn't specified, profiles with any
     * professional experience are retrieved.
     * If multiple work experience filters are specified, profiles that match any
     * work experience filters are retrieved.
     * For example, search for profiles with 10 years of work experience.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.WorkExperienceFilter work_experience_filter = 7;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getWorkExperienceFilter()
    {
        return $this->work_experience_filter;
    }

    /**
     * Optional.
     * Work experience filter specifies the total working experience of profiles
     * to match on.
     * If a work experience filter isn't specified, profiles with any
     * professional experience are retrieved.
     * If multiple work experience filters are specified, profiles that match any
     * work experience filters are retrieved.
     * For example, search for profiles with 10 years of work experience.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.WorkExperienceFilter work_experience_filter = 7;</code>
     * @param \Google\Cloud\Talent\V4beta1\WorkExperienceFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setWorkExperienceFilter($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\WorkExperienceFilter::class);
        $this->work_experience_filter = $arr;

        return $this;
    }

    /**
     * Optional.
     * Time filter specifies the create/update timestamp of the profiles to match
     * on.
     * For example, search for profiles created since "2018-1-1".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.TimeFilter time_filters = 8;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getTimeFilters()
    {
        return $this->time_filters;
    }

    /**
     * Optional.
     * Time filter specifies the create/update timestamp of the profiles to match
     * on.
     * For example, search for profiles created since "2018-1-1".
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.TimeFilter time_filters = 8;</code>
     * @param \Google\Cloud\Talent\V4beta1\TimeFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setTimeFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\TimeFilter::class);
        $this->time_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * The hirable filter specifies the profile's hirable status to match on.
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hirable_filter = 9;</code>
     * @return \Google\Protobuf\BoolValue
     */
    public function getHirableFilter()
    {
        return $this->hirable_filter;
    }

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

     * Optional.
     * The hirable filter specifies the profile's hirable status to match on.
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hirable_filter = 9;</code>
     * @return bool|null
     */
    public function getHirableFilterValue()
    {
        $wrapper = $this->getHirableFilter();
        return is_null($wrapper) ? null : $wrapper->getValue();
    }

    /**
     * Optional.
     * The hirable filter specifies the profile's hirable status to match on.
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hirable_filter = 9;</code>
     * @param \Google\Protobuf\BoolValue $var
     * @return $this
     */
    public function setHirableFilter($var)
    {
        GPBUtil::checkMessage($var, \Google\Protobuf\BoolValue::class);
        $this->hirable_filter = $var;

        return $this;
    }

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

     * Optional.
     * The hirable filter specifies the profile's hirable status to match on.
     *
     * Generated from protobuf field <code>.google.protobuf.BoolValue hirable_filter = 9;</code>
     * @param bool|null $var
     * @return $this
     */
    public function setHirableFilterValue($var)
    {
        $wrappedVar = is_null($var) ? null : new \Google\Protobuf\BoolValue(['value' => $var]);
        return $this->setHirableFilter($wrappedVar);
    }

    /**
     * Optional.
     * The application date filters specify application date ranges to match on.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationDateFilter application_date_filters = 10;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicationDateFilters()
    {
        return $this->application_date_filters;
    }

    /**
     * Optional.
     * The application date filters specify application date ranges to match on.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationDateFilter application_date_filters = 10;</code>
     * @param \Google\Cloud\Talent\V4beta1\ApplicationDateFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicationDateFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\ApplicationDateFilter::class);
        $this->application_date_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * The application outcome notes filters specify the notes for the outcome of
     * the job application.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter application_outcome_notes_filters = 11;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicationOutcomeNotesFilters()
    {
        return $this->application_outcome_notes_filters;
    }

    /**
     * Optional.
     * The application outcome notes filters specify the notes for the outcome of
     * the job application.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationOutcomeNotesFilter application_outcome_notes_filters = 11;</code>
     * @param \Google\Cloud\Talent\V4beta1\ApplicationOutcomeNotesFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicationOutcomeNotesFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\ApplicationOutcomeNotesFilter::class);
        $this->application_outcome_notes_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * The application job filters specify the job applied for in the application.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationJobFilter application_job_filters = 13;</code>
     * @return \Google\Protobuf\Internal\RepeatedField
     */
    public function getApplicationJobFilters()
    {
        return $this->application_job_filters;
    }

    /**
     * Optional.
     * The application job filters specify the job applied for in the application.
     *
     * Generated from protobuf field <code>repeated .google.cloud.talent.v4beta1.ApplicationJobFilter application_job_filters = 13;</code>
     * @param \Google\Cloud\Talent\V4beta1\ApplicationJobFilter[]|\Google\Protobuf\Internal\RepeatedField $var
     * @return $this
     */
    public function setApplicationJobFilters($var)
    {
        $arr = GPBUtil::checkRepeatedField($var, \Google\Protobuf\Internal\GPBType::MESSAGE, \Google\Cloud\Talent\V4beta1\ApplicationJobFilter::class);
        $this->application_job_filters = $arr;

        return $this;
    }

    /**
     * Optional.
     * This filter specifies a structured syntax to match against the
     * [Profile.custom_attributes][google.cloud.talent.v4beta1.Profile.custom_attributes] that are marked as `filterable`.
     * The syntax for this expression is a subset of Google SQL syntax.
     * String custom attributes: supported operators are =, != where the left of
     * the operator is a custom field key and the right of the operator is a
     * string (surrounded by quotes) value.
     * Numeric custom attributes: Supported operators are '>', '<' or '='
     * operators where the left of the operator is a custom field key and the
     * right of the operator is a numeric value.
     * Supported functions are LOWER(<field_name>) to
     * perform case insensitive match and EMPTY(<field_name>) to filter on the
     * existence of a key.
     * Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
     * nesting (for example "((A AND B AND C) OR NOT D) AND E"), and there can be
     * a maximum of 50 comparisons/functions in the expression. The expression
     * must be < 2000 characters in length.
     * Sample Query:
     * (key1 = "TEST" OR LOWER(key1)="test" OR NOT EMPTY(key1))
     *
     * Generated from protobuf field <code>string custom_attribute_filter = 15;</code>
     * @return string
     */
    public function getCustomAttributeFilter()
    {
        return $this->custom_attribute_filter;
    }

    /**
     * Optional.
     * This filter specifies a structured syntax to match against the
     * [Profile.custom_attributes][google.cloud.talent.v4beta1.Profile.custom_attributes] that are marked as `filterable`.
     * The syntax for this expression is a subset of Google SQL syntax.
     * String custom attributes: supported operators are =, != where the left of
     * the operator is a custom field key and the right of the operator is a
     * string (surrounded by quotes) value.
     * Numeric custom attributes: Supported operators are '>', '<' or '='
     * operators where the left of the operator is a custom field key and the
     * right of the operator is a numeric value.
     * Supported functions are LOWER(<field_name>) to
     * perform case insensitive match and EMPTY(<field_name>) to filter on the
     * existence of a key.
     * Boolean expressions (AND/OR/NOT) are supported up to 3 levels of
     * nesting (for example "((A AND B AND C) OR NOT D) AND E"), and there can be
     * a maximum of 50 comparisons/functions in the expression. The expression
     * must be < 2000 characters in length.
     * Sample Query:
     * (key1 = "TEST" OR LOWER(key1)="test" OR NOT EMPTY(key1))
     *
     * Generated from protobuf field <code>string custom_attribute_filter = 15;</code>
     * @param string $var
     * @return $this
     */
    public function setCustomAttributeFilter($var)
    {
        GPBUtil::checkString($var, True);
        $this->custom_attribute_filter = $var;

        return $this;
    }

}

