/// <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); } } }
/// <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); }
/// <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)); }