Skip to content

Interpret a Date Range Parameter

Option 1 - Web Request to API

{% assign filter = 'Global' | PageParameter:'Date' | Default:'0' | UnescapeDataString %}
{% if filter == '0' %}
    SELECT 'Please provide a valid filter...'
{% else %}
    {% assign filter = filter | Split:'|' %}
    {% if filter[0] == 'DateRange' %}
        {% assign start = filter[1] | Replace:'+', ' ' | Date:'yyyy-MM-dd' %}
        {% assign end = filter[2] | Replace:'+', ' ' |  Date:'yyyy-MM-dd'  %}
    {% elseif filter[0] == 'Current' %}
        {% webrequest url:'{{ 'Global' | Attribute:'InternalApplicationRoot' }}api/Utility/CalculateSlidingDateRange' parameters:'slidingDateRangeType^{{ filter[0] }}|timeUnitType^{{ filter[1] }}' responsecontenttype:'application/json' %}
            {% assign start = results | Remove:'"' | Split:' to ' | Index:0 | Date:'yyyy-MM-ddTHH:mm:ss' %}
            {% assign end = results | Remove:'"' | Split:' to ' | Index:1 | Date:'yyyy-MM-ddTHH:mm:ss' %}
        {% endwebrequest %}
    {% else %}
        {% webrequest url:'{{ 'Global' | Attribute:'InternalApplicationRoot' }}api/Utility/CalculateSlidingDateRange' parameters:'slidingDateRangeType^{{ filter[0] }}|timeUnitType^{{ filter[2] }}|number^{{ filter[1] }}' responsecontenttype:'application/json' %}
            {% assign start = results | Remove:'"' | Split:' to ' | Index:0 | Date:'yyyy-MM-ddTHH:mm:ss' %}
            {% assign end = results | Remove:'"' | Split:' to ' | Index:1 | Date:'yyyy-MM-ddTHH:mm:ss' %}
        {% endwebrequest %}
    {% endif %}

    SELECT '{{ start }}' AS 'Start', '{{ end }}' AS 'End'
{% endif %}

Option 2 - Execute

{% assign filter = 'Global' | PageParameter:'Data' | Default:'0' | UnescapeDataString %}
{% if filter == '0' %}
    SELECT 'Please provide a valid filter...'
{% else %}
    {% capture result %}{% execute %}
        var range = Rock.Web.UI.Controls.SlidingDateRangePicker.CalculateDateRangeFromDelimitedValues( "{{ filter }}" );
        return string.Format( "{0:yyyy-MM-ddTHH:mm:ss},{1:yyyy-MM-ddTHH:mm:ss}", range.Start, range.End );
    {% endexecute %}{% endcapture %}
    {% assign start = result | Split:',' | Index:0 %}
    {% assign end = result | Split:',' | Index:1 %}

    SELECT '{{ start }}' AS 'Start', '{{ end }}' AS 'End'
{% endif %}