Example #1
0
        /// <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();
        }
Example #2
0
        /// <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);
        }
Example #3
0
        /// <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));
        }