/// <summary> /// Shows the controls needed /// </summary> private void RenderCheckboxes() { nbMessage.Text = string.Empty; var streakType = GetStreakType(); var streakTypeCache = GetStreakTypeCache(); if (streakType == null) { ShowBlockError(nbMessage, "A streak type is required."); return; } if (!CanEdit()) { SetVisible(false); return; } lTitle.Text = GetTargetMapTitle(); var map = GetTargetMap(); var errorMessage = string.Empty; var isDaily = streakTypeCache.OccurrenceFrequency == StreakOccurrenceFrequency.Daily; var dateRange = GetDateRange(); var startDate = StreakTypeService.AlignDate(dateRange.Start.Value, streakTypeCache); var endDate = StreakTypeService.AlignDate(dateRange.End.Value, streakTypeCache); cblCheckboxes.Label = isDaily ? "Days" : "Weeks"; cblCheckboxes.Items.Clear(); var minDate = GetMinDate(); var maxDate = StreakTypeService.AlignDate(RockDateTime.Today, streakTypeCache); var checkboxCount = StreakTypeService.GetFrequencyUnitDifference(startDate, endDate, streakTypeCache, true); for (var i = 0; i < checkboxCount; i++) { var representedDate = startDate.AddDays(isDaily ? i : (i * DaysPerWeek)); cblCheckboxes.Items.Add(new ListItem { Enabled = representedDate >= minDate && representedDate <= maxDate, Selected = StreakTypeService.IsBitSet(streakTypeCache, map, representedDate, out errorMessage), Text = GetLabel(isDaily, representedDate), Value = representedDate.ToISO8601DateString() }); } cblCheckboxes.DataBind(); }
/// <summary> /// Get the map being edited /// </summary> /// <returns></returns> private DateTime GetMinDate() { var streakType = GetStreakType(); var streakTypeCache = GetStreakTypeCache(); var minDate = StreakTypeService.AlignDate(streakType.StartDate, streakTypeCache); if (IsTargetingEngagementMap()) { var enrollment = GetStreak(); var enrollmentDate = StreakTypeService.AlignDate(enrollment.EnrollmentDate, streakTypeCache); if (enrollmentDate > minDate) { minDate = enrollmentDate; } } return(minDate); }
/// <summary> /// Get the default end date that should be used for the date picker /// </summary> /// <returns></returns> private DateTime GetDefaultEndDate() { var streakTypeCache = GetStreakTypeCache(); return(StreakTypeService.AlignDate(RockDateTime.Now, streakTypeCache)); }