コード例 #1
0
        /// <summary>
        /// Renders the specified context.
        /// </summary>
        /// <param name="context">The context.</param>
        /// <param name="result">The result.</param>
        public override void OnRender(ILavaRenderContext context, TextWriter result)
        {
            try
            {
                var dataSource = new EventOccurrencesLavaDataSource();

                var settings = LavaElementAttributes.NewFromMarkup(_attributesMarkup, context);

                var events = dataSource.GetEventOccurrencesForEvent(settings, LavaHelper.GetRockContextFromLavaContext(context));

                AddLavaMergeFieldsToContext(context, events);

                base.OnRender(context, result);
            }
            catch (Exception ex)
            {
                var message = "Event Occurrences not available. " + ex.Message;

                if (_renderErrors)
                {
                    result.Write(message);
                }
                else
                {
                    ExceptionLogService.LogException(ex);
                }
            }
        }
コード例 #2
0
        /// <summary>
        /// Gets the event occurrences for calendar.
        /// </summary>
        /// <param name="settings">The settings.</param>
        /// <param name="rockContext">The rock context.</param>
        /// <returns></returns>
        /// <exception cref="Exception">
        /// Invalid configuration setting \"{unknownNames.AsDelimited( "," )}\".
        /// or
        /// Invalid configuration setting \"maxoccurrences\".
        /// </exception>
        public List <EventOccurrenceSummary> GetEventOccurrencesForCalendar(LavaElementAttributes settings, RockContext rockContext)
        {
            // Check for invalid parameters.
            var unknownNames = settings.GetUnmatchedAttributes(new List <string> {
                ParameterCalendarId, ParameterAudienceIds, ParameterCampusIds, ParameterDateRange, ParameterMaxOccurrences, ParameterStartDate
            });

            if (unknownNames.Any())
            {
                throw new Exception($"Invalid configuration setting \"{unknownNames.AsDelimited( "," )}\".");
            }

            if (rockContext == null)
            {
                rockContext = new RockContext();
            }

            // Get the Event Calendar.
            var calendar = ResolveCalendarSettingOrThrow(rockContext, settings.GetStringValue(ParameterCalendarId));

            // Get the Date Range.
            var startDate = settings.GetDateTimeValue(ParameterStartDate, RockDateTime.Today);

            var dateRange = settings.GetStringValue(ParameterDateRange, string.Empty).ToLower();

            var endDate = GetEndDateFromStartDateAndRange(startDate, dateRange);

            // Get the Maximum Occurrences.
            int maxOccurrences = 100;

            if (settings.HasValue(ParameterMaxOccurrences))
            {
                maxOccurrences = settings.GetIntegerValue(ParameterMaxOccurrences, null) ?? 0;

                if (maxOccurrences == 0)
                {
                    throw new Exception($"Invalid configuration setting \"maxoccurrences\".");
                }
            }

            // Get the Audiences.
            var audienceIdList = ResolveAudienceSettingOrThrow(settings.GetStringValue(ParameterAudienceIds, string.Empty));

            // Get the Campuses.
            var campusIdList = ResolveCampusSettingOrThrow(settings.GetStringValue(ParameterCampusIds, string.Empty));

            // Get the result set.
            var qryOccurrences = GetBaseEventOccurrenceQuery(rockContext);

            qryOccurrences = qryOccurrences.Where(m => m.EventItem.EventCalendarItems.Any(i => i.EventCalendarId == calendar.Id));

            var summaries = GetFilteredEventOccurrenceSummaries(qryOccurrences, audienceIdList, campusIdList, maxOccurrences, startDate, endDate);

            return(summaries);
        }
コード例 #3
0
 /// <summary>
 /// Get a filtered set of occurrences for a specific calendar.
 /// </summary>
 /// <param name="settings"></param>
 /// <returns></returns>
 public List <EventOccurrenceSummary> GetEventOccurrencesForCalendar(LavaElementAttributes settings)
 {
     return(this.GetEventOccurrencesForCalendar(settings, null));
 }