{% set dateFormat = 'Ymd\\THis\\Z' %}
{% set replacement = {'\\': '\\\\', ';': '\\;', ',': '\\,', '\n': '\\n'} %}
BEGIN:VCALENDAR
VERSION:2.0
PRODID:-//-/{{ config('app_name') | replace(replacement) | raw }}//DE
CALSCALE:GREGORIAN
{% for entry in shiftEntries %}
BEGIN:VEVENT
UID:{{ uuidBy(entry.id, '54117') }}
DTSTAMP:{{ entry.shift.start.utc().format(dateFormat) }}
DTSTART:{{ entry.shift.start.utc().format(dateFormat) }}
DTEND:{{ entry.shift.end.utc().format(dateFormat) }}
STATUS:CONFIRMED
TRANSP:OPAQUE
SUMMARY:{{ (entry.shift.shiftType.name ~ ' (' ~ entry.shift.title ~ ')') | replace(replacement) | raw }}
LOCATION:{{ entry.shift.location.name | replace(replacement) | raw }}
DESCRIPTION:{{
    (
        entry.shift.shiftType.description
        ~ '\n' ~ entry.shift.description
        ~ '\n' ~ entry.user_comment
    )
    | replace(replacement) | raw
}}
URL:{{ url('/shifts', {'action': 'view', 'shift_id': entry.shift.id}) | raw }}
END:VEVENT
{% endfor %}
END:VCALENDAR
