<?php
# Generated by the protocol buffer compiler.  DO NOT EDIT!
# source: google/analytics/data/v1alpha/data.proto

namespace Google\Analytics\Data\V1alpha;

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

/**
 * Scopings specify how multiple events should be considered when evaluating a
 * segment parameter filter.
 *
 * Generated from protobuf message <code>google.analytics.data.v1alpha.SegmentParameterFilterScoping</code>
 */
class SegmentParameterFilterScoping extends \Google\Protobuf\Internal\Message
{
    /**
     * Accumulates the parameter over the specified period of days before
     * applying the filter. Only supported if criteria scoping is
     * `ACROSS_ALL_SESSIONS` or `WITHIN_SAME_SESSION`. Only supported if the
     * parameter is `event_count`.
     * For example if `inAnyNDayPeriod` is 3, the event_name is "purchase",
     * the event parameter is "event_count", and the Filter's criteria is
     * greater than 5, this filter will accumulate the event count of purchase
     * events over every 3 consecutive day period in the report's date range; a
     * user will pass this Filter's criteria to be included in this segment if
     * their count of purchase events exceeds 5 in any 3 consecutive day period.
     * For example, the periods 2021-11-01 to 2021-11-03, 2021-11-02 to
     * 2021-11-04, 2021-11-03 to 2021-11-05, and etc. will be considered.
     * The date range is not extended for the purpose of having a full N day
     * window near the start of the date range. For example if a report is for
     * 2021-11-01 to 2021-11-10 and `inAnyNDayPeriod` = 3, the first two day
     * period will be effectively shortened because no event data outside the
     * report's date range will be read. For example, the first four periods
     * will effectively be: 2021-11-01 to 2021-11-01, 2021-11-01 to 2021-11-02,
     * 2021-11-01 to 2021-11-03, and 2021-11-02 to 2021-11-04.
     * `inAnyNDayPeriod` is optional. If not specified, the
     * `segmentParameterFilter` is applied to each event individually.
     *
     * Generated from protobuf field <code>optional int64 in_any_n_day_period = 1;</code>
     */
    private $in_any_n_day_period = null;

    /**
     * Constructor.
     *
     * @param array $data {
     *     Optional. Data for populating the Message object.
     *
     *     @type int|string $in_any_n_day_period
     *           Accumulates the parameter over the specified period of days before
     *           applying the filter. Only supported if criteria scoping is
     *           `ACROSS_ALL_SESSIONS` or `WITHIN_SAME_SESSION`. Only supported if the
     *           parameter is `event_count`.
     *           For example if `inAnyNDayPeriod` is 3, the event_name is "purchase",
     *           the event parameter is "event_count", and the Filter's criteria is
     *           greater than 5, this filter will accumulate the event count of purchase
     *           events over every 3 consecutive day period in the report's date range; a
     *           user will pass this Filter's criteria to be included in this segment if
     *           their count of purchase events exceeds 5 in any 3 consecutive day period.
     *           For example, the periods 2021-11-01 to 2021-11-03, 2021-11-02 to
     *           2021-11-04, 2021-11-03 to 2021-11-05, and etc. will be considered.
     *           The date range is not extended for the purpose of having a full N day
     *           window near the start of the date range. For example if a report is for
     *           2021-11-01 to 2021-11-10 and `inAnyNDayPeriod` = 3, the first two day
     *           period will be effectively shortened because no event data outside the
     *           report's date range will be read. For example, the first four periods
     *           will effectively be: 2021-11-01 to 2021-11-01, 2021-11-01 to 2021-11-02,
     *           2021-11-01 to 2021-11-03, and 2021-11-02 to 2021-11-04.
     *           `inAnyNDayPeriod` is optional. If not specified, the
     *           `segmentParameterFilter` is applied to each event individually.
     * }
     */
    public function __construct($data = NULL) {
        \GPBMetadata\Google\Analytics\Data\V1Alpha\Data::initOnce();
        parent::__construct($data);
    }

    /**
     * Accumulates the parameter over the specified period of days before
     * applying the filter. Only supported if criteria scoping is
     * `ACROSS_ALL_SESSIONS` or `WITHIN_SAME_SESSION`. Only supported if the
     * parameter is `event_count`.
     * For example if `inAnyNDayPeriod` is 3, the event_name is "purchase",
     * the event parameter is "event_count", and the Filter's criteria is
     * greater than 5, this filter will accumulate the event count of purchase
     * events over every 3 consecutive day period in the report's date range; a
     * user will pass this Filter's criteria to be included in this segment if
     * their count of purchase events exceeds 5 in any 3 consecutive day period.
     * For example, the periods 2021-11-01 to 2021-11-03, 2021-11-02 to
     * 2021-11-04, 2021-11-03 to 2021-11-05, and etc. will be considered.
     * The date range is not extended for the purpose of having a full N day
     * window near the start of the date range. For example if a report is for
     * 2021-11-01 to 2021-11-10 and `inAnyNDayPeriod` = 3, the first two day
     * period will be effectively shortened because no event data outside the
     * report's date range will be read. For example, the first four periods
     * will effectively be: 2021-11-01 to 2021-11-01, 2021-11-01 to 2021-11-02,
     * 2021-11-01 to 2021-11-03, and 2021-11-02 to 2021-11-04.
     * `inAnyNDayPeriod` is optional. If not specified, the
     * `segmentParameterFilter` is applied to each event individually.
     *
     * Generated from protobuf field <code>optional int64 in_any_n_day_period = 1;</code>
     * @return int|string
     */
    public function getInAnyNDayPeriod()
    {
        return isset($this->in_any_n_day_period) ? $this->in_any_n_day_period : 0;
    }

    public function hasInAnyNDayPeriod()
    {
        return isset($this->in_any_n_day_period);
    }

    public function clearInAnyNDayPeriod()
    {
        unset($this->in_any_n_day_period);
    }

    /**
     * Accumulates the parameter over the specified period of days before
     * applying the filter. Only supported if criteria scoping is
     * `ACROSS_ALL_SESSIONS` or `WITHIN_SAME_SESSION`. Only supported if the
     * parameter is `event_count`.
     * For example if `inAnyNDayPeriod` is 3, the event_name is "purchase",
     * the event parameter is "event_count", and the Filter's criteria is
     * greater than 5, this filter will accumulate the event count of purchase
     * events over every 3 consecutive day period in the report's date range; a
     * user will pass this Filter's criteria to be included in this segment if
     * their count of purchase events exceeds 5 in any 3 consecutive day period.
     * For example, the periods 2021-11-01 to 2021-11-03, 2021-11-02 to
     * 2021-11-04, 2021-11-03 to 2021-11-05, and etc. will be considered.
     * The date range is not extended for the purpose of having a full N day
     * window near the start of the date range. For example if a report is for
     * 2021-11-01 to 2021-11-10 and `inAnyNDayPeriod` = 3, the first two day
     * period will be effectively shortened because no event data outside the
     * report's date range will be read. For example, the first four periods
     * will effectively be: 2021-11-01 to 2021-11-01, 2021-11-01 to 2021-11-02,
     * 2021-11-01 to 2021-11-03, and 2021-11-02 to 2021-11-04.
     * `inAnyNDayPeriod` is optional. If not specified, the
     * `segmentParameterFilter` is applied to each event individually.
     *
     * Generated from protobuf field <code>optional int64 in_any_n_day_period = 1;</code>
     * @param int|string $var
     * @return $this
     */
    public function setInAnyNDayPeriod($var)
    {
        GPBUtil::checkInt64($var);
        $this->in_any_n_day_period = $var;

        return $this;
    }

}

