Esempio n. 1
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            int duration = GetAttributeValue(badge, "Duration").AsIntegerOrNull() ?? 16;

            writer.Write(string.Format("<div class='badge badge-weeksattendanceduration badge-id-{0}' data-original-title='Family attendance for the last {1} weeks.'>", badge.Id, duration));

            writer.Write("</div>");

            writer.Write(string.Format(@"
                <script>
                    Sys.Application.add_load(function () {{
                                                
                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/WeeksAttendedInDuration/{1}/{0}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                            var badgeHtml = '<div class=\'weeks-metric\'>';
                                            
                                            badgeHtml += '<span class=\'weeks-attended\'>' + data + '</span><span class=\'week-duration\'>/{0}</span>';                
                                            badgeHtml += '</div>';
                                            
                                            $('.badge-weeksattendanceduration.badge-id-{2}').html(badgeHtml);

                                        }}
                                }},
                        }});
                    }});
                </script>
                
            ", duration, Person.Id.ToString(), badge.Id));
        }
Esempio n. 2
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            if (Person != null)
            {
                //  create url for link to details
                string detailPageUrl = new PageReference(GetAttributeValue(badge, "PersonalDevicesDetail"), new Dictionary <string, string> {
                    { "PersonGuid", Person.Guid.ToString() }
                }).BuildUrl();

                writer.Write($"<div class='badge badge-personaldevice badge-id-{badge.Id}' data-toggle='tooltip' data-original-title=''>");

                writer.Write("</div>");

                writer.Write($@"
                <script>
                    Sys.Application.add_load(function () {{
                                                
                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/PersonalDevicesNumber/{Person.Id}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                        var badgeHtml = '';
                                        var devicesNumber = data;
                                        var cssClass = '';
                                        var linkUrl = '{detailPageUrl}';
                                        var badgeContent = '';
                                        var labelContent = '';

                                        if (devicesNumber > 0) {{
        
                                            if ( devicesNumber > 1 ) {{
                                                labelContent = 'There are ' + devicesNumber + ' devices linked to this individual.';                                 
                                            }} else {{
                                                labelContent = 'There is 1 device linked to this individual.';
                                            }}
        
                                            if (linkUrl != '') {{
                                                badgeContent = '<a href=\'' + linkUrl + '\'><div class=\'badge-content \'><i class=\'fa fa-mobile badge-icon\'></i><span class=\'deviceCount\'>' + devicesNumber + '</span></div></a>';
                                            }} else {{
                                                badgeContent = '<div class=\'badge-content \'><i class=\'fa fa-mobile badge-icon\'></i><span class=\'deviceCount\'>' + devicesNumber + '</span></div>';
                                            }}

                                            $('.badge-personaldevice.badge-id-{badge.Id}').html(badgeContent);
                                            $('.badge-personaldevice.badge-id-{badge.Id}').attr('data-original-title', labelContent);
                                            
                                        }}
                                        else {{
                                            $('.badge-personaldevice.badge-id-{badge.Id}').css('display', 'none');
                                            $('.badge-personaldevice.badge-id-{badge.Id}').html('');
                                        }}
                                        
                                    }}
                                }},
                            }});
                        }});
                    </script>
                ");
            }
        }
Esempio n. 3
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            List<Guid> noteTypes = new List<Guid>();

            if ( !string.IsNullOrEmpty( GetAttributeValue( badge, "NoteTypes" ) ) )
            {
                noteTypes = Array.ConvertAll( GetAttributeValue( badge, "NoteTypes" ).Split( ',' ), s => new Guid( s ) ).ToList();
            }

            var currentUser = UserLoginService.GetCurrentUser();
            int? currentPersonId = currentUser != null ? currentUser.PersonId : null;

            // check for alert note
            var alertNotesExist = new NoteService( new RockContext() ).Queryable().AsNoTracking()
                                .Where( n => noteTypes.Contains( n.NoteType.Guid )
                                        && n.EntityId.Value == Person.Id
                                        && n.IsAlert == true
                                        && ( !n.IsPrivateNote || n.CreatedByPersonAlias.PersonId == currentPersonId )
                                        )
                                .Any();

            if ( alertNotesExist )
            {
                writer.Write( GetAttributeValue( badge, "BadgeContent" ) );
            }
        }
Esempio n. 4
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            int minBarHeight    = GetAttributeValue(badge, "MinimumBarHeight").AsIntegerOrNull() ?? 2;
            int monthsToDisplay = GetAttributeValue(badge, "MonthsToDisplay").AsIntegerOrNull() ?? 24;

            string animateClass = string.Empty;

            if (GetAttributeValue(badge, "AnimateBars") == null || GetAttributeValue(badge, "AnimateBars").AsBoolean())
            {
                animateClass = " animate";
            }

            string tooltip = string.Empty;

            if (Person.AgeClassification == AgeClassification.Child)
            {
                tooltip = $"{Person.NickName.ToPossessive().EncodeHtml()} attendance for the last 24 months. Each bar is a month.";
            }
            else
            {
                tooltip = "Family attendance for the last 24 months. Each bar is a month.";
            }

            writer.Write(String.Format("<div class='badge badge-attendance{0} badge-id-{1}' data-toggle='tooltip' data-original-title='{2}'>", animateClass, badge.Id, tooltip));

            writer.Write("</div>");

            writer.Write(String.Format(@"
                <script>
                    Sys.Application.add_load(function () {{
                        
                        var monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];
                        
                        
                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/FamilyAttendance/{0}/{1}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                            var chartHtml = '<ul class=\'badge-attendance-chart list-unstyled\'>';
                                            $.each(data, function() {{
                                                var barHeight = (this.AttendanceCount / this.SundaysInMonth) * 100;
                                                if (barHeight < {2}) {{
                                                    barHeight = {2};
                                                }}
                                
                                                chartHtml += '<li title=\'' + monthNames[this.Month -1] + ' ' + this.Year +'\'><span style=\'height: ' + barHeight + '%\'></span></li>';                
                                            }});
                                            chartHtml += '</ul>';
                                            
                                            $('.badge-attendance.badge-id-{3}').html(chartHtml);

                                        }}
                                }},
                        }});
                    }});
                </script>
                
            ", Person.Id.ToString(), monthsToDisplay, minBarHeight, badge.Id));
        }
Esempio n. 5
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            RockPage.AddCSSLink("~/Styles/fluidbox.css");
            RockPage.AddScriptLink("~/Scripts/imagesloaded.min.js");
            RockPage.AddScriptLink("~/Scripts/jquery.fluidbox.min.js");

            // this event gets fired after block settings are updated. it's nice to repaint the screen if these settings would alter it
            this.BlockUpdated += Block_BlockUpdated;
            this.AddConfigurationUpdateTrigger(pnlContent);

            if (Person != null)
            {
                pnlFollow.Visible = GetAttributeValue("AllowFollowing").AsBoolean();

                // Record Type - this is always "business". it will never change.
                if (Person.RecordTypeValueId == DefinedValueCache.Get(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_BUSINESS.AsGuid()).Id)
                {
                    var parms = new Dictionary <string, string>();
                    parms.Add("businessId", Person.Id.ToString());
                    NavigateToLinkedPage("BusinessDetailPage", parms);
                }

                if (Person.IsDeceased)
                {
                    divBio.AddCssClass("deceased");
                }

                // Set the browser page title to include person's name
                RockPage.BrowserTitle = Person.FullName;

                string badgeList = GetAttributeValue("Badges");
                if (!string.IsNullOrWhiteSpace(badgeList))
                {
                    foreach (string badgeGuid in badgeList.SplitDelimitedValues())
                    {
                        Guid guid = badgeGuid.AsGuid();
                        if (guid != Guid.Empty)
                        {
                            var personBadge = PersonBadgeCache.Get(guid);
                            if (personBadge != null)
                            {
                                blStatus.PersonBadges.Add(personBadge);
                            }
                        }
                    }
                }

                lbEditPerson.Visible = IsUserAuthorized(Rock.Security.Authorization.EDIT);

                // only show if the Impersonation button if the feature is enabled, and the current user is authorized to Administrate the person
                bool enableImpersonation = this.GetAttributeValue("EnableImpersonation").AsBoolean();
                lbImpersonate.Visible = false;
                if (enableImpersonation && Person.Id != CurrentPersonId && Person.IsAuthorized(Rock.Security.Authorization.ADMINISTRATE, this.CurrentPerson))
                {
                    lbImpersonate.Visible = true;
                }
            }
        }
Esempio n. 6
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            List <Guid> noteTypes = new List <Guid>();

            if (!string.IsNullOrEmpty(GetAttributeValue(badge, "NoteTypes")))
            {
                noteTypes = Array.ConvertAll(GetAttributeValue(badge, "NoteTypes").Split(','), s => new Guid(s)).ToList();
            }

            var currentUser     = UserLoginService.GetCurrentUser();
            int?currentPersonId = currentUser != null ? currentUser.PersonId : null;

            // check for alert note
            var alertNotesExist = new NoteService(new RockContext()).Queryable().AsNoTracking()
                                  .Where(n => noteTypes.Contains(n.NoteType.Guid) &&
                                         n.EntityId.Value == Person.Id &&
                                         n.IsAlert == true &&
                                         (!n.IsPrivateNote || n.CreatedByPersonAlias.PersonId == currentPersonId)
                                         )
                                  .Any();

            if (alertNotesExist)
            {
                writer.Write(GetAttributeValue(badge, "BadgeContent"));
            }
        }
Esempio n. 7
0
        /// <summary>
        /// Sends server control content to a provided <see cref="T:System.Web.UI.HtmlTextWriter" /> object, which writes the content to be rendered on the client.
        /// </summary>
        /// <param name="writer">The <see cref="T:System.Web.UI.HtmlTextWriter" /> object that receives the server control content.</param>
        protected override void Render(HtmlTextWriter writer)
        {
#pragma warning disable CS0618 // Type or member is obsolete
            var personBadgeCache = new PersonBadgeCache(BadgeCache);
#pragma warning restore CS0618 // Type or member is obsolete
            var badgeComponent = BadgeCache?.BadgeComponent;
            if (badgeComponent != null)
            {
                var contextEntityBlock = ContextEntityBlock;
                if (contextEntityBlock != null)
                {
                    if (BadgeService.DoesBadgeApplyToEntity(BadgeCache, contextEntityBlock.Entity))
                    {
                        badgeComponent.ParentContextEntityBlock = contextEntityBlock;
                        badgeComponent.Entity = contextEntityBlock.Entity;
                        badgeComponent.Render(BadgeCache, writer);
#pragma warning disable CS0618 // Type or member is obsolete
                        badgeComponent.Render(personBadgeCache, writer);
#pragma warning restore CS0618 // Type or member is obsolete

                        const string script = "$('.badge[data-toggle=\"tooltip\"]').tooltip({html: true}); $('.badge[data-toggle=\"popover\"]').popover();";
                        ScriptManager.RegisterStartupScript(this, this.GetType(), "badge-popover", script, true);
                    }
                }
            }
        }
Esempio n. 8
0
        /// <summary>
        /// Sends server control content to a provided <see cref="T:System.Web.UI.HtmlTextWriter" /> object, which writes the content to be rendered on the client.
        /// </summary>
        /// <param name="writer">The <see cref="T:System.Web.UI.HtmlTextWriter" /> object that receives the server control content.</param>
        protected override void Render(HtmlTextWriter writer)
        {
#pragma warning disable CS0618 // Type or member is obsolete
            var personBadgeCache = new PersonBadgeCache(BadgeCache);
#pragma warning restore CS0618 // Type or member is obsolete
            var badgeComponent = BadgeCache?.BadgeComponent;

            if (badgeComponent == null)
            {
                return;
            }

            var entity = Entity;
            if (entity == null)
            {
                entity = ContextEntityBlock?.Entity;
            }

            if (entity == null)
            {
                return;
            }

            if (!BadgeService.DoesBadgeApplyToEntity(BadgeCache, entity))
            {
                return;
            }

            try
            {
                badgeComponent.ParentContextEntityBlock = ContextEntityBlock;
                badgeComponent.Entity = entity;
                badgeComponent.Render(BadgeCache, writer);

#pragma warning disable CS0618 // Type or member is obsolete
                badgeComponent.Render(personBadgeCache, writer);
#pragma warning restore CS0618 // Type or member is obsolete

                var script = badgeComponent.GetWrappedJavaScript(BadgeCache);

                if (!script.IsNullOrWhiteSpace())
                {
                    ScriptManager.RegisterStartupScript(this, GetType(), $"badge_{ClientID}", script, true);
                }
            }
            catch (Exception ex)
            {
                var errorMessage = $"An error occurred rendering badge: {BadgeCache?.Name }, badge-id: {BadgeCache?.Id}";
                ExceptionLogService.LogException(new Exception(errorMessage, ex));
                var badgeNameClass = BadgeCache?.Name.ToLower().RemoveAllNonAlphaNumericCharacters() ?? "error";
                writer.Write($"<div class='badge badge-{badgeNameClass} badge-id-{BadgeCache?.Id} badge-error' data-toggle='tooltip' data-original-title='{errorMessage}'>");
                writer.Write($"  <i class='fa fa-exclamation-triangle badge-icon text-warning'></i>");
                writer.Write("</div>");
            }
            finally
            {
                const string script = "$('.badge[data-toggle=\"tooltip\"]').tooltip({html: true}); $('.badge[data-toggle=\"popover\"]').popover();";
                ScriptManager.RegisterStartupScript(this, this.GetType(), "badge-popover", script, true);
            }
        }
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            int duration = GetAttributeValue(badge, "Duration").AsIntegerOrNull() ?? 16;

            writer.Write(string.Format( "<div class='badge badge-weeksattendanceduration badge-id-{0}' data-toggle='tooltip' data-original-title='Family attendance for the last {1} weeks.'>", badge.Id, duration));

            writer.Write("</div>");

            writer.Write(string.Format( @"
                <script>
                    Sys.Application.add_load(function () {{

                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/WeeksAttendedInDuration/{1}/{0}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                            var badgeHtml = '<div class=\'weeks-metric\'>';

                                            badgeHtml += '<span class=\'weeks-attended\'>' + data + '</span><span class=\'week-duration\'>/{0}</span>';
                                            badgeHtml += '</div>';

                                            $('.badge-weeksattendanceduration.badge-id-{2}').html(badgeHtml);

                                        }}
                                }},
                        }});
                    }});
                </script>

            ", duration, Person.Id.ToString(), badge.Id));
        }
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            // Find the Spiritual Gift Personality Type / Strength
            String description = string.Empty;
            string gifting = Person.GetAttributeValue( "Gifting" );
            DefinedValueCache giftingValue = null;
            if ( !string.IsNullOrEmpty( gifting ) )
            {
                giftingValue = DefinedTypeCache.Read( com.centralaz.SpiritualGifts.SystemGuid.DefinedType.SPRITUAL_GIFTS_DEFINED_TYPE.AsGuid() ).DefinedValues.Where( v => v.Value == gifting ).FirstOrDefault();
                if ( giftingValue != null )
                {
                    description = giftingValue.Description;
                }
            }

            // create url for link to details if configured
            string detailPageUrl = string.Empty;
            if ( !String.IsNullOrEmpty( GetAttributeValue( badge, "SpiritualGiftResultDetail" ) ) )
            {
                int pageId = Rock.Web.Cache.PageCache.Read( Guid.Parse( GetAttributeValue( badge, "SpiritualGiftResultDetail" ) ) ).Id;
                detailPageUrl = System.Web.VirtualPathUtility.ToAbsolute( String.Format( "~/page/{0}?Person={1}", pageId, Person.UrlEncodedKey ) );
            }

            //Determine icon
            string iconClass = string.Empty;
            if ( giftingValue != null )
            {
                switch ( giftingValue.Value )
                {
                    case "Prophecy":
                        iconClass = "badge-icon fa fa-cloud-download";
                        break;
                    case "Ministry":
                        iconClass = "badge-icon fa fa-globe";
                        break;
                    case "Teaching":
                        iconClass = "badge-icon fa fa-compass";
                        break;
                    case "Encouragement":
                        iconClass = "badge-icon fa fa-fire";
                        break;
                    case "Giving":
                        iconClass = "badge-icon fa fa-diamond";
                        break;
                    case "Leadership":
                        iconClass = "badge-icon fa fa-bullhorn";
                        break;
                    case "Mercy":
                        iconClass = "badge-icon fa fa-life-ring";
                        break;
                }

                //Badge HTML
                writer.Write( "<div class='badge' data-original-title='Spiritual Gift is {0}' ><a href='{1}'>", giftingValue.Value, !String.IsNullOrEmpty( detailPageUrl ) ? detailPageUrl  : "#" );
                writer.Write( String.Format( "<i class='{0}'></i>", iconClass ) );
                writer.Write( "</a></div>" );
            }
        }
Esempio n. 11
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            Guid?groupTypeGuid = GetAttributeValue(badge, "GroupType").AsGuidOrNull();

            if (groupTypeGuid.HasValue)
            {
                var lavaTemplate = this.GetAttributeValue(badge, "LavaTemplate");
                var slidingDateRangeDelimitedValues = this.GetAttributeValue(badge, "DateRange");
                var dateRange        = SlidingDateRangePicker.CalculateDateRangeFromDelimitedValues(slidingDateRangeDelimitedValues);
                var dateRangeSummary = SlidingDateRangePicker.FormatDelimitedValues(slidingDateRangeDelimitedValues);

                var mergeFields = Lava.LavaHelper.GetCommonMergeFields(null, null, new Lava.CommonMergeFieldsOptions {
                    GetLegacyGlobalMergeFields = false
                });
                mergeFields.Add("Person", this.Person);
                using (var rockContext = new RockContext())
                {
                    var groupType   = GroupTypeCache.Read(groupTypeGuid.Value);
                    int groupTypeId = groupType?.Id ?? 0;
                    mergeFields.Add("GroupType", groupType);
                    mergeFields.Add("Badge", badge);
                    mergeFields.Add("DateRange", new { Dates = dateRange, Summary = dateRangeSummary });

                    var personAliasIds = Person.Aliases.Select(a => a.Id).ToList();

                    var attendanceQuery = new AttendanceService(rockContext).Queryable().Where(a =>
                                                                                               a.Group.GroupTypeId == groupTypeId && a.DidAttend == true &&
                                                                                               personAliasIds.Contains(a.PersonAliasId.Value));

                    if (dateRange.Start.HasValue)
                    {
                        attendanceQuery = attendanceQuery.Where(a => a.StartDateTime >= dateRange.Start.Value);
                    }

                    if (dateRange.End.HasValue)
                    {
                        attendanceQuery = attendanceQuery.Where(a => a.StartDateTime < dateRange.End.Value);
                    }

                    var attendanceDateTimes = attendanceQuery.Select(a => a.StartDateTime).ToList();

                    if (attendanceDateTimes.Any())
                    {
                        var attendanceResult = new
                        {
                            Count        = attendanceDateTimes.Count(),
                            LastDateTime = attendanceDateTimes.Max()
                        };

                        mergeFields.Add("Attendance", attendanceResult);
                    }

                    string output = lavaTemplate.ResolveMergeFields(mergeFields);

                    writer.Write(output);
                }
            }
        }
Esempio n. 12
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            var      value      = Person.GetAttributeValue("FirstVisit");
            DateTime?firstVisit = Person.GetAttributeValue("FirstVisit").AsDateTime();

            if (firstVisit.HasValue)
            {
                TimeSpan attendanceDuration = DateTime.Now - firstVisit.Value;

                string spanValue = string.Empty;
                string spanUnit  = string.Empty;
                string cssClass  = string.Empty;

                if (attendanceDuration.Days < _weeksPeriodInDays) // display value in weeks
                {
                    if (attendanceDuration.Days < 7)
                    {
                        spanValue = "New";
                        cssClass  = "duration-new";
                    }
                    else
                    {
                        spanValue = (attendanceDuration.Days / 7).ToString();
                        spanUnit  = "wk";
                        cssClass  = "duration-weeks";
                    }
                }
                else if (attendanceDuration.Days < _monthsPeriodInDays)    // display value in months
                {
                    spanValue = (attendanceDuration.Days / 30).ToString();
                    spanUnit  = "mo";
                    cssClass  = "duration-months";
                }
                else // display value in months
                {
                    spanValue = (attendanceDuration.Days / 365).ToString();
                    spanUnit  = "yr";
                    cssClass  = "duration-years";
                }

                if (spanValue == "New")
                {
                    writer.Write(String.Format("<div class='badge badge-attendingduration' data-original-title='{0} is new this week.'>", Person.NickName));
                }
                else
                {
                    writer.Write(String.Format("<div class='badge badge-attendingduration' data-original-title='{0} has attended for {1} {2}.'>", Person.NickName, spanValue, spanUnit));
                }

                writer.Write(String.Format("<div class='duration-metric {0}'>", cssClass));
                writer.Write(String.Format("<span class='metric-value'>{0}<span class='metric-unit'>{1}</span></span>", spanValue, spanUnit));
                writer.Write("</div>");

                writer.Write("</div>");
            }
        }
Esempio n. 13
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            var value = Person.GetAttributeValue( "FirstVisit" );
            DateTime? firstVisit = Person.GetAttributeValue( "FirstVisit" ).AsDateTime();
            if (firstVisit.HasValue)
            {
                TimeSpan attendanceDuration = DateTime.Now - firstVisit.Value;

                string spanValue = string.Empty;
                string spanUnit = string.Empty;
                string cssClass = string.Empty;

                if (attendanceDuration.Days < _weeksPeriodInDays) // display value in weeks
                {

                    if (attendanceDuration.Days < 7)
                    {
                        spanValue = "New";
                        cssClass = "duration-new";
                    }
                    else
                    {
                        spanValue = (attendanceDuration.Days / 7).ToString();
                        spanUnit = "wk";
                        cssClass = "duration-weeks";
                    }

                } else if(attendanceDuration.Days < _monthsPeriodInDays) { // display value in months
                    spanValue = (attendanceDuration.Days / 30).ToString();
                    spanUnit = "mo";
                    cssClass = "duration-months";
                }
                else // display value in months
                {
                    spanValue = (attendanceDuration.Days / 365).ToString();
                    spanUnit = "yr";
                    cssClass = "duration-years";
                }

                if (spanValue == "New")
                {
                    writer.Write(String.Format( "<div class='badge badge-attendingduration' data-toggle='tooltip' data-original-title='{0} is new this week.'>", Person.NickName));
                }
                else
                {
                    writer.Write(String.Format( "<div class='badge badge-attendingduration' data-toggle='tooltip' data-original-title='{0} first visited {1} ago.'>", Person.NickName, spanUnit.ToQuantity(spanValue.AsInteger())));
                }

                writer.Write(String.Format("<div class='duration-metric {0}'>", cssClass));
                writer.Write(String.Format("<span class='metric-value'>{0}<span class='metric-unit'>{1}</span></span>", spanValue, spanUnit));
                writer.Write("</div>");

                writer.Write("</div>");
            }
        }
Esempio n. 14
0
 /// <summary>
 /// Renders the specified writer.
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="writer">The writer.</param>
 public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
 {
     if (Person != null)
     {
         var label = GetLabel(Person);
         if (label != null)
         {
             label.RenderControl(writer);
         }
     }
 }
Esempio n. 15
0
 /// <summary>
 /// Renders the specified writer.
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="writer">The writer.</param>
 public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
 {
     if ( Person != null )
     {
         var label = GetLabel( Person );
         if ( label != null )
         {
             label.RenderControl( writer );
         }
     }
 }
Esempio n. 16
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            if (!string.IsNullOrWhiteSpace(Person.GetAttributeValue("FirstVisit")))
            {
                DateTime firstVisit = Convert.ToDateTime(Person.GetAttributeValue("FirstVisit"));
                TimeSpan attendanceDuration = DateTime.Now - firstVisit;

                string spanValue = string.Empty;
                string spanUnit = string.Empty;
                string cssClass = string.Empty;

                if (attendanceDuration.Days < _weeksPeriodInDays) // display value in weeks
                {

                    if (attendanceDuration.Days < 7)
                    {
                        spanValue = "New";
                        cssClass = "duration-new";
                    }
                    else
                    {
                        spanValue = (attendanceDuration.Days / 7).ToString();
                        spanUnit = "wk";
                        cssClass = "duration-weeks";
                    }

                } else if(attendanceDuration.Days < _monthsPeriodInDays) { // display value in months
                    spanValue = (attendanceDuration.Days / 30).ToString();
                    spanUnit = "mo";
                    cssClass = "duration-months";
                }
                else // display value in months
                {
                    spanValue = (attendanceDuration.Days / 365).ToString();
                    spanUnit = "yr";
                    cssClass = "duration-years";
                }

                if (spanValue == "New")
                {
                    writer.Write(String.Format("<div class='badge badge-attendingduration' data-original-title='{0} is new this week.'>", Person.NickName));
                }
                else
                {
                    writer.Write(String.Format("<div class='badge badge-attendingduration' data-original-title='{0} has attended for {1} {2}.'>", Person.NickName, spanValue, spanUnit));
                }

                writer.Write(String.Format("<div class='duration-metric {0}'>", cssClass));
                writer.Write(String.Format("<span class='metric-value'>{0}<span class='metric-unit'>{1}</span></span>", spanValue, spanUnit));
                writer.Write("</div>");

                writer.Write("</div>");
            }
        }
Esempio n. 17
0
        public PersonBadgeInfo(PersonBadgeCache badge)
        {
            Id          = badge.Id;
            Name        = badge.Name;
            Description = badge.Description;

            badge.LoadAttributes();

            IsActive = badge.BadgeComponent != null ? badge.BadgeComponent.IsActive : false;
            Order    = badge.BadgeComponent != null ? badge.BadgeComponent.Order : 0;
        }
Esempio n. 18
0
        /// <summary>
        /// Restores view-state information from a previous page request that was saved by the <see cref="M:System.Web.UI.Control.SaveViewState" /> method.
        /// </summary>
        /// <param name="savedState">An <see cref="T:System.Object" /> that represents the control state to be restored.</param>
        protected override void LoadViewState(object savedState)
        {
            base.LoadViewState(savedState);

            string json = ViewState["PersonBadge"] as string;

            if (!string.IsNullOrWhiteSpace(json))
            {
                PersonBadge = PersonBadgeCache.FromJson(json);
            }
        }
Esempio n. 19
0
        /// <summary>
        /// Gets the Guid for the RestAction that has the specified Id
        /// </summary>
        /// <param name="id">The identifier.</param>
        /// <returns></returns>
        public override Guid?GetGuid(int id)
        {
            var cacheItem = PersonBadgeCache.Get(id);

            if (cacheItem != null)
            {
                return(cacheItem.Guid);
            }

            return(null);
        }
Esempio n. 20
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            if (!String.IsNullOrEmpty(GetAttributeValue(badge, "GroupType")))
            {
                string badgeColor = "#0ab4dd";

                if (!String.IsNullOrEmpty(GetAttributeValue(badge, "BadgeColor")))
                {
                    badgeColor = GetAttributeValue(badge, "BadgeColor");
                }

                Guid groupTypeGuid = GetAttributeValue( badge, "GroupType" ).AsGuid();
                if ( groupTypeGuid != Guid.Empty )
                {
                    writer.Write( String.Format( "<div class='badge badge-ingroupoftype badge-id-{0}' data-toggle='tooltip' data-original-title=''>", badge.Id ) );

                    writer.Write( "</div>" );

                    writer.Write( String.Format( @"
            <script>
            Sys.Application.add_load(function () {{

            $.ajax({{
                type: 'GET',
                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/InGroupOfType/{0}/{1}' ,
                statusCode: {{
                    200: function (data, status, xhr) {{
                        var badgeHtml = '';
                        var groupIcon = data.GroupTypeIconCss;

                        if (groupIcon == '') {{
                            groupIcon = 'fa fa-times';
                        }}

                        if (data.PersonInGroup) {{
                            badgeHtml = '<i class=\'badge-icon ' + groupIcon + '\' style=\'color: {2}\'></i>';
                            var labelText = data.NickName + ' is in a ' + data.GroupTypeName + '.';
                        }} else {{
                            badgeHtml = '<i class=\'badge-icon badge-disabled ' + groupIcon + '\'></i>';
                            var labelText = data.NickName + ' is not in a ' + data.GroupTypeName + '.';
                        }}
                        $('.badge-ingroupoftype.badge-id-{3}').html(badgeHtml);
                        $('.badge-ingroupoftype.badge-id-{3}').attr('data-original-title', labelText);
                    }}
                }},
            }});
            }});
            </script>

            ", Person.Id.ToString(), groupTypeGuid.ToString(), badgeColor, badge.Id ) );
                }
            }
        }
Esempio n. 21
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            if (!String.IsNullOrEmpty(GetAttributeValue(badge, "GroupType")))
            {
                string badgeColor = "#0ab4dd";

                if (!String.IsNullOrEmpty(GetAttributeValue(badge, "BadgeColor")))
                {
                    badgeColor = GetAttributeValue(badge, "BadgeColor");
                }

                Guid groupTypeGuid = GetAttributeValue(badge, "GroupType").AsGuid();
                if (groupTypeGuid != Guid.Empty)
                {
                    writer.Write(String.Format("<div class='badge badge-ingroupoftype badge-id-{0}' data-original-title=''>", badge.Id));

                    writer.Write("</div>");

                    writer.Write(String.Format(@"
<script>
    Sys.Application.add_load(function () {{
                                                
        $.ajax({{
                type: 'GET',
                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/InGroupOfType/{0}/{1}' ,
                statusCode: {{
                    200: function (data, status, xhr) {{
                        var badgeHtml = '';
                        var groupIcon = data.GroupTypeIconCss;
                                            
                        if (groupIcon == '') {{
                            groupIcon = 'fa fa-times';
                        }}

                        if (data.PersonInGroup) {{
                            badgeHtml = '<i class=\'badge-icon ' + groupIcon + '\' style=\'color: {2}\'></i>';
                            var labelText = data.NickName + ' is in a ' + data.GroupTypeName + '.';
                        }} else {{
                            badgeHtml = '<i class=\'badge-icon badge-disabled ' + groupIcon + '\' style=\'color: {2}\'></i>';
                            var labelText = data.NickName + ' is not in a ' + data.GroupTypeName + '.';
                        }}
                        $('.badge-ingroupoftype.badge-id-{3}').html(badgeHtml);
                        $('.badge-ingroupoftype.badge-id-{3}').attr('data-original-title', labelText);
                    }}
                }},
        }});
    }});
</script>
                
", Person.Id.ToString(), groupTypeGuid.ToString(), badgeColor, badge.Id));
                }
            }
        }
Esempio n. 22
0
        /// <summary>
        /// Handles the Click event of the btnSave control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="EventArgs" /> instance containing the event data.</param>
        protected void btnSave_Click(object sender, EventArgs e)
        {
            PersonBadge        PersonBadge        = null;
            var                rockContext        = new RockContext();
            PersonBadgeService PersonBadgeService = new PersonBadgeService(rockContext);

            if (PersonBadgeId != 0)
            {
                PersonBadge = PersonBadgeService.Get(PersonBadgeId);
            }

            if (PersonBadge == null)
            {
                PersonBadge = new PersonBadge();
                PersonBadgeService.Add(PersonBadge);
            }

            PersonBadge.Name        = tbName.Text;
            PersonBadge.Description = tbDescription.Text;

            if (!string.IsNullOrWhiteSpace(compBadgeType.SelectedValue))
            {
                var badgeType = EntityTypeCache.Read(compBadgeType.SelectedValue.AsGuid());
                if (badgeType != null)
                {
                    PersonBadge.EntityTypeId = badgeType.Id;
                }
            }

            PersonBadge.LoadAttributes(rockContext);
            Rock.Attribute.Helper.GetEditValues(phAttributes, PersonBadge);

            if (!Page.IsValid)
            {
                return;
            }

            if (!PersonBadge.IsValid)
            {
                return;
            }

            rockContext.WrapTransaction(() =>
            {
                rockContext.SaveChanges();
                PersonBadge.SaveAttributeValues(rockContext);
            });

            PersonBadgeCache.Flush(PersonBadge.Id);

            NavigateToParentPage();
        }
Esempio n. 23
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            if ( Person != null )
            {
                writer.AddAttribute( HtmlTextWriterAttribute.Class, "badge" );
                writer.AddAttribute( HtmlTextWriterAttribute.Title, GetToolTipText( Person ) );
                writer.RenderBeginTag( HtmlTextWriterTag.Div );

                writer.AddAttribute( HtmlTextWriterAttribute.Src, GetIconPath( Person ) );
                writer.RenderBeginTag( HtmlTextWriterTag.Img );
                writer.RenderEndTag();

                writer.RenderEndTag();
            }
        }
Esempio n. 24
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            if (Person != null)
            {
                writer.AddAttribute(HtmlTextWriterAttribute.Class, "badge");
                writer.AddAttribute(HtmlTextWriterAttribute.Title, GetToolTipText(Person));
                writer.RenderBeginTag(HtmlTextWriterTag.Div);

                writer.AddAttribute(HtmlTextWriterAttribute.Src, GetIconPath(Person));
                writer.RenderBeginTag(HtmlTextWriterTag.Img);
                writer.RenderEndTag();

                writer.RenderEndTag();
            }
        }
Esempio n. 25
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            int minBarHeight = GetAttributeValue(badge, "MinimumBarHeight").AsIntegerOrNull() ?? 2;
            int monthsToDisplay = GetAttributeValue(badge, "MonthsToDisplay").AsIntegerOrNull() ?? 24;

            string animateClass = string.Empty;

            if (GetAttributeValue(badge, "AnimateBars") == null || GetAttributeValue(badge, "AnimateBars").AsBoolean())
            {
                animateClass = " animate";
            }

            writer.Write(String.Format( "<div class='badge badge-attendance{0} badge-id-{1}' data-toggle='tooltip' data-original-title='Family attendance for the last 24 months. Each bar is a month.'>", animateClass, badge.Id));

            writer.Write("</div>");

            writer.Write(String.Format( @"
                <script>
                    Sys.Application.add_load(function () {{

                        var monthNames = [ 'January', 'February', 'March', 'April', 'May', 'June', 'July', 'August', 'September', 'October', 'November', 'December' ];

                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/FamilyAttendance/{0}/{1}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                            var chartHtml = '<ul class=\'badge-attendance-chart list-unstyled\'>';
                                            $.each(data, function() {{
                                                var barHeight = (this.AttendanceCount / this.SundaysInMonth) * 100;
                                                if (barHeight < {2}) {{
                                                    barHeight = {2};
                                                }}

                                                chartHtml += '<li title=\'' + monthNames[this.Month -1] + ' ' + this.Year +'\'><span style=\'height: ' + barHeight + '%\'></span></li>';
                                            }});
                                            chartHtml += '</ul>';

                                            $('.badge-attendance.badge-id-{3}').html(chartHtml);

                                        }}
                                }},
                        }});
                    }});
                </script>

            ", Person.Id.ToString(), monthsToDisplay , minBarHeight, badge.Id ));
        }
Esempio n. 26
0
        void gPersonBadge_GridReorder(object sender, GridReorderEventArgs e)
        {
            var rockContext  = new RockContext();
            var service      = new PersonBadgeService(rockContext);
            var personBadges = service.Queryable().OrderBy(b => b.Order);

            service.Reorder(personBadges.ToList(), e.OldIndex, e.NewIndex);
            rockContext.SaveChanges();

            foreach (var personBadge in personBadges)
            {
                PersonBadgeCache.Flush(personBadge.Id);
            }

            BindGrid();
        }
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, HtmlTextWriter writer)
        {
            string badgeColour = GetAttributeValue(badge, "badgeColour");

            if (String.IsNullOrEmpty(badgeColour))
            {
                badgeColour = "#ECC759";
            }

            int  duration       = GetAttributeValue(badge, "Duration").AsIntegerOrNull() ?? 16;
            var  groupTypeGuids = GetAttributeValue(badge, "groupTypes").Split(',').AsGuidList();
            bool recursive      = GetAttributeValue(badge, "recursive").AsBoolean();

            var groupTypes = groupTypeGuids.Select(groupTypeGuid => GroupTypeCache.Get(groupTypeGuid)).Distinct().ToList();

            var    ids            = groupTypes.Select(gt => gt.Id).ToList();
            string groupTypeNames = CheckInGroupsHelper.CreateGroupListString(groupTypes);

            writer.Write(string.Format("<style>#badge-id-{0}::before {{ color: {1};}}</style>", badge.Id, badgeColour));
            writer.Write(string.Format("<div class='badge badge-weeksattendanceduration badge-id-{0}' data-toggle='tooltip' data-original-title='Individual attendance for the last {1} weeks to {2}.'>", badge.Id, duration, groupTypeNames.Truncate(150)));

            writer.Write("</div>");

            writer.Write(string.Format(@"
                <script>
                    Sys.Application.add_load(function () {{
                                                
                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/IndividualWeeksAttendedInDuration/{1}/{0}/{3}/{4}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                            var badgeHtml = '<div class=\'weeks-metric\' id=\'badge-id-{2}\'>';
                                            
                                            badgeHtml += '<span class=\'weeks-attended\' >' + data + '</span><span class=\'week-duration\'>/{0}</span>';                
                                            badgeHtml += '</div>';
                                            
                                            $('.badge-weeksattendanceduration.badge-id-{2}').html(badgeHtml);

                                        }}
                                }},
                        }});
                    }});
                </script>
                
            ", duration, Person.Id.ToString(), badge.Id, string.Join(",", ids), recursive));
        }
Esempio n. 28
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            Guid?  groupTypeGuid = GetAttributeValue(badge, "GroupType").AsGuid();
            string badgeColor    = GetAttributeValue(badge, "BadgeColor");

            if (groupTypeGuid.HasValue && !String.IsNullOrEmpty(badgeColor))
            {
                writer.Write(String.Format(
                                 "<span class='label badge-geofencing-group badge-id-{0}' style='background-color:{1};display:none' ></span>",
                                 badge.Id, badgeColor.EscapeQuotes()));

                writer.Write(String.Format(@"
<script>
Sys.Application.add_load(function () {{
                                                
    $.ajax({{
            type: 'GET',
            url: Rock.settings.get('baseUrl') + 'api/PersonBadges/GeofencingGroups/{0}/{1}' ,
            statusCode: {{
                200: function (data, status, xhr) {{
                    var $badge = $('.badge-geofencing-group.badge-id-{2}');
                    var badgeHtml = '';

                    $.each(data, function() {{
                        if ( badgeHtml != '' ) {{ 
                            badgeHtml += ' | ';
                        }}
                        badgeHtml += '<span title=""' + this.LeaderNames + '"" data-toggle=""tooltip"">' + this.GroupName + '</span>';
                    }});

                    if (badgeHtml != '') {{
                        $badge.show('fast');
                    }} else {{
                        $badge.hide();
                    }}
                    $badge.html(badgeHtml);
                    $badge.find('span').tooltip();
                }}
            }},
    }});
}});
</script>
                
", Person.Id.ToString(), groupTypeGuid.ToString(), badge.Id));
            }
        }
Esempio n. 29
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            Guid? groupTypeGuid = GetAttributeValue( badge, "GroupType" ).AsGuid();
            string badgeColor = GetAttributeValue( badge, "BadgeColor" );

            if ( groupTypeGuid.HasValue &&  !String.IsNullOrEmpty( badgeColor ) )
            {
                writer.Write( String.Format(
                    "<span class='label badge-geofencing-group badge-id-{0}' style='background-color:{1};display:none' ></span>",
                    badge.Id, badgeColor.EscapeQuotes() ) );

                writer.Write( String.Format( @"
            <script>
            Sys.Application.add_load(function () {{

            $.ajax({{
            type: 'GET',
            url: Rock.settings.get('baseUrl') + 'api/PersonBadges/GeofencingGroups/{0}/{1}' ,
            statusCode: {{
                200: function (data, status, xhr) {{
                    var $badge = $('.badge-geofencing-group.badge-id-{2}');
                    var badgeHtml = '';

                    $.each(data, function() {{
                        if ( badgeHtml != '' ) {{
                            badgeHtml += ' | ';
                        }}
                        badgeHtml += '<span title=""' + this.LeaderNames + '"" data-toggle=""tooltip"">' + this.GroupName + '</span>';
                    }});

                    if (badgeHtml != '') {{
                        $badge.show('fast');
                    }} else {{
                        $badge.hide();
                    }}
                    $badge.html(badgeHtml);
                    $badge.find('span').tooltip();
                }}
            }},
            }});
            }});
            </script>

            ", Person.Id.ToString(), groupTypeGuid.ToString(), badge.Id ) );
            }
        }
Esempio n. 30
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            RockPage.AddCSSLink(ResolveRockUrl("~/Styles/fluidbox.css"));
            RockPage.AddScriptLink(ResolveRockUrl("~/Scripts/imagesloaded.min.js"));
            RockPage.AddScriptLink(ResolveRockUrl("~/Scripts/jquery.fluidbox.min.js"));

            if (Person != null)
            {
                // Record Type - this is always "business". it will never change.
                if (Person.RecordTypeValueId == DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.PERSON_RECORD_TYPE_BUSINESS.AsGuid()).Id)
                {
                    var parms = new Dictionary <string, string>();
                    parms.Add("businessId", Person.Id.ToString());
                    NavigateToLinkedPage("BusinessDetailPage", parms);
                }

                if (Person.IsDeceased)
                {
                    divBio.AddCssClass("deceased");
                }

                // Set the browser page title to include person's name
                RockPage.BrowserTitle = Person.FullName;

                string badgeList = GetAttributeValue("Badges");
                if (!string.IsNullOrWhiteSpace(badgeList))
                {
                    foreach (string badgeGuid in badgeList.SplitDelimitedValues())
                    {
                        Guid guid = badgeGuid.AsGuid();
                        if (guid != Guid.Empty)
                        {
                            var personBadge = PersonBadgeCache.Read(guid);
                            if (personBadge != null)
                            {
                                blStatus.PersonBadges.Add(personBadge);
                            }
                        }
                    }
                }

                lbEditPerson.Visible = IsUserAuthorized(Rock.Security.Authorization.EDIT);
            }
        }
Esempio n. 31
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            if (!string.IsNullOrWhiteSpace(Person.TopSignalColor) && Person.Signals.Count > 0)
            {
                writer.Write(string.Format(@"
<div class='badge badge-signal badge-id-{0}' data-toggle='tooltip' title='{3} has the following {4}: {5}'>
    <div class='badge-content' style='color: {1};'>
        <i class='fa fa-flag badge-icon'></i>
        <span class='signal'>{2}</span>
    </div>
</div>",
                                           badge.Id,
                                           Person.TopSignalColor,
                                           Person.Signals.Count,
                                           Person.NickName,
                                           "signal".PluralizeIf(Person.Signals.Count != 1),
                                           string.Join(", ", Person.Signals.Select(s => s.SignalType.Name.EncodeHtml()))));
            }
        }
Esempio n. 32
0
 /// <summary>
 /// Renders the specified writer.
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="writer">The writer.</param>
 public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
 {
     RockContext rockContext = new RockContext();
     var dataViewAttributeGuid = GetAttributeValue( badge, "DataView" ).AsGuid();
     var dataViewService = new DataViewService( rockContext );
     if ( dataViewAttributeGuid != Guid.Empty )
     {
         var dataView = dataViewService.Get( dataViewAttributeGuid );
         if ( dataView != null )
         {
             var errors = new List<string>();
             var qry = dataView.GetQuery( null, 30, out errors );
             if ( qry != null && qry.Where( e => e.Id == Person.Id ).Any() )
             {
                 Dictionary<string, object> mergeValues = new Dictionary<string, object>();
                 mergeValues.Add( "Person", Person );
                 writer.Write( GetAttributeValue( badge, "BadgeContent" ).ResolveMergeFields( mergeValues ) );
             }
         }
     }
 }
Esempio n. 33
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            List <Guid> noteTypes = new List <Guid>();

            if (!string.IsNullOrEmpty(GetAttributeValue(badge, "NoteTypes")))
            {
                noteTypes = Array.ConvertAll(GetAttributeValue(badge, "NoteTypes").Split(','), s => new Guid(s)).ToList();
            }

            // check for alert note
            var alertNotesExist = new NoteService(new RockContext()).Queryable().AsNoTracking()
                                  .Where(n => noteTypes.Contains(n.NoteType.Guid) &&
                                         n.EntityId.Value == Person.Id &&
                                         n.IsAlert == true)
                                  .Any();

            if (alertNotesExist)
            {
                writer.Write(GetAttributeValue(badge, "BadgeContent"));
            }
        }
Esempio n. 34
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            RockContext rockContext           = new RockContext();
            var         dataViewAttributeGuid = GetAttributeValue(badge, "DataView").AsGuid();
            var         dataViewService       = new DataViewService(rockContext);

            if (dataViewAttributeGuid != Guid.Empty)
            {
                var dataView = dataViewService.Get(dataViewAttributeGuid);
                if (dataView != null)
                {
                    var errors = new List <string>();
                    var qry    = dataView.GetQuery(null, 30, out errors);
                    if (qry != null && qry.Where(e => e.Id == Person.Id).Any())
                    {
                        Dictionary <string, object> mergeValues = new Dictionary <string, object>();
                        mergeValues.Add("Person", Person);
                        writer.Write(GetAttributeValue(badge, "BadgeContent").ResolveMergeFields(mergeValues));
                    }
                }
            }
        }
Esempio n. 35
0
        /// <summary>
        /// Handles the Delete event of the gPersonBadge control.
        /// </summary>
        /// <param name="sender">The source of the event.</param>
        /// <param name="e">The <see cref="RowEventArgs" /> instance containing the event data.</param>
        protected void gPersonBadge_Delete(object sender, RowEventArgs e)
        {
            var rockContext = new RockContext();
            PersonBadgeService PersonBadgeService = new PersonBadgeService(rockContext);
            PersonBadge        PersonBadge        = PersonBadgeService.Get((int)e.RowKeyValue);

            if (PersonBadge != null)
            {
                string errorMessage;
                if (!PersonBadgeService.CanDelete(PersonBadge, out errorMessage))
                {
                    mdGridWarning.Show(errorMessage, ModalAlertType.Information);
                    return;
                }

                PersonBadgeCache.Flush(PersonBadge.Id);

                PersonBadgeService.Delete(PersonBadge);
                rockContext.SaveChanges();
            }

            BindGrid();
        }
Esempio n. 36
0
        /// <summary>
        /// Raises the <see cref="E:System.Web.UI.Control.Init" /> event.
        /// </summary>
        /// <param name="e">An <see cref="T:System.EventArgs" /> object that contains the event data.</param>
        protected override void OnInit(EventArgs e)
        {
            base.OnInit(e);

            if (!Page.IsPostBack && Person != null && Person.Id != 0)
            {
                string badgeList = GetAttributeValue("Badges");
                if (!string.IsNullOrWhiteSpace(badgeList))
                {
                    foreach (string badgeGuid in badgeList.SplitDelimitedValues())
                    {
                        Guid guid = badgeGuid.AsGuid();
                        if (guid != Guid.Empty)
                        {
                            var personBadge = PersonBadgeCache.Read(guid);
                            if (personBadge != null)
                            {
                                blBadges.PersonBadges.Add(personBadge);
                            }
                        }
                    }
                }
            }
        }
Esempio n. 37
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            string displayText = GetAttributeValue(badge, "DisplayText");

            if (Person != null)
            {
                Dictionary <string, object> mergeValues = new Dictionary <string, object>();
                mergeValues.Add("Person", Person);
                displayText = displayText.ResolveMergeFields(mergeValues);

                if (GetAttributeValue(badge, "EnableDebug").AsBoolean())
                {
                    string debugInfo = string.Format(@"
                            <small><a data-toggle='collapse' data-parent='#accordion' href='#badge-debug'><i class='fa fa-eye'></i></a></small>
                            <div id='badge-debug' class='collapse well badge-debug'>
                                {0}
                            </div>
                        ", mergeValues.lavaDebugInfo());

                    displayText += debugInfo;
                }
            }
            writer.Write(displayText);
        }
Esempio n. 38
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            string displayText = GetAttributeValue( badge, "DisplayText" );
            if ( Person != null )
            {
                Dictionary<string, object> mergeValues = new Dictionary<string, object>();
                mergeValues.Add( "Person", Person );
                displayText = displayText.ResolveMergeFields( mergeValues );

                if ( GetAttributeValue( badge, "EnableDebug" ).AsBoolean() )
                {
                    string debugInfo = string.Format( @"
                            <small><a data-toggle='collapse' data-parent='#accordion' href='#badge-debug'><i class='fa fa-eye'></i></a></small>
                            <pre id='badge-debug' class='collapse well badge-debug'>
                                {0}
                            </pre>
                        ", mergeValues.LiquidHelpText() );

                    displayText += debugInfo;
                }

            }
            writer.Write( displayText );
        }
        public PersonBadgeInfo(PersonBadgeCache badge)
        {
            Id = badge.Id;
            Name = badge.Name;
            Description = badge.Description;

            badge.LoadAttributes();

            IsActive = badge.BadgeComponent != null ? badge.BadgeComponent.IsActive : false;
            Order = badge.BadgeComponent != null ? badge.BadgeComponent.Order : 0;
        }
Esempio n. 40
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            // Grab the DISC Scores
            bool isValidDiscScore = true;
            int discStrength = 0;
            int?[] discScores = new int?[] { Person.GetAttributeValue( "NaturalD" ).AsIntegerOrNull(), Person.GetAttributeValue( "NaturalI" ).AsIntegerOrNull(), Person.GetAttributeValue( "NaturalS" ).AsIntegerOrNull(), Person.GetAttributeValue( "NaturalC" ).AsIntegerOrNull() };

            // Validate the DISC Scores, find the strength
            for ( int i = 0; i < discScores.Length; i++ )
            {
                // Does the scores have values?
                if ( !discScores[i].HasValue )
                {
                    isValidDiscScore = false;
                }
                else
                {
                    // Are the scores valid values?
                    if ( ( discScores[i].Value < 0 ) || ( discScores[i].Value > MAX ) )
                    {
                        isValidDiscScore = false;
                    }
                    else
                    {
                        if ( discScores[i].Value > discScores[discStrength].Value )
                        {
                            discStrength = i;
                        }
                    }
                }
            }

            // Create the badge
            if ( isValidDiscScore )
            {
                // Find the DISC Personality Type / Strength
                String description = string.Empty;
                string personalityType = Person.GetAttributeValue( "PersonalityType" );
                if ( !string.IsNullOrEmpty( personalityType ) )
                {
                    var personalityValue = DefinedTypeCache.Read( Rock.SystemGuid.DefinedType.DISC_RESULTS_TYPE.AsGuid() ).DefinedValues.Where( v => v.Value == personalityType ).FirstOrDefault();
                    if ( personalityValue != null )
                    {
                        description = personalityValue.Description;
                    }
                }

                // create url for link to details if configured
                string detailPageUrl = string.Empty;
                if ( !String.IsNullOrEmpty( GetAttributeValue( badge, "DISCResultDetail" ) ) )
                {
                    int pageId = Rock.Web.Cache.PageCache.Read( Guid.Parse( GetAttributeValue( badge, "DISCResultDetail" ) ) ).Id;
                    detailPageUrl = System.Web.VirtualPathUtility.ToAbsolute( String.Format( "~/page/{0}?Person={1}", pageId, Person.UrlEncodedKey ) );
                    writer.Write( "<a href='{0}'>", detailPageUrl  );
                }

                //Badge HTML
                writer.Write( String.Format( "<div class='badge badge-disc badge-id-{0}' data-toggle='tooltip' data-original-title='{1}'>", badge.Id, description ) );
                writer.Write( "<ul class='badge-disc-chart list-unstyled'>" );
                writer.Write( string.Format( "<li class='badge-disc-d {1}' title='D'><span style='height:{0}%'></span></li>", Math.Floor( (double)( (double)discScores[0].Value / (double)MAX ) * 100 ), ( discStrength == 0 ) ? "badge-disc-primary" : String.Empty ) );
                writer.Write( string.Format( "<li class='badge-disc-i {1}' title='I'><span style='height:{0}%'></span></li>", Math.Floor( (double)( (double)discScores[1].Value / (double)MAX ) * 100 ), ( discStrength == 1 ) ? "badge-disc-primary" : String.Empty ) );
                writer.Write( string.Format( "<li class='badge-disc-s {1}' title='S'><span style='height:{0}%'></span></li>", Math.Floor( (double)( (double)discScores[2].Value / (double)MAX ) * 100 ), ( discStrength == 2 ) ? "badge-disc-primary" : String.Empty ) );
                writer.Write( string.Format( "<li class='badge-disc-c {1}' title='C'><span style='height:{0}%'></span></li>", Math.Floor( (double)( (double)discScores[3].Value / (double)MAX ) * 100 ), ( discStrength == 3 ) ? "badge-disc-primary" : String.Empty ) );
                writer.Write( "</ul></div>" );

                if ( !String.IsNullOrEmpty( detailPageUrl ) )
                {
                    writer.Write( "</a>" );
                }
            }
            else
            {
                // check for recent DISC request
                DateTime? lastRequestDate = Person.GetAttributeValue( "LastDiscRequestDate" ).AsDateTime();

                bool recentRequest = lastRequestDate.HasValue && lastRequestDate.Value > (RockDateTime.Now.AddDays( -30 ));

                if ( recentRequest )
                {
                    writer.Write( String.Format( "<div class='badge badge-disc badge-id-{0}' data-toggle='tooltip' data-original-title='A DISC request was made on {1}'>", badge.Id, lastRequestDate.Value.ToShortDateString() ) );
                    writer.Write( "<ul class='badge-disc-chart list-unstyled'>" );
                    writer.Write( string.Format( "<li class='badge-disc-d badge-disc-disabled' title='D'><span style='height:{0}%'></span></li>", 80 ));
                    writer.Write( string.Format( "<li class='badge-disc-i badge-disc-disabled' title='I'><span style='height:{0}%'></span></li>", 20 ));
                    writer.Write( string.Format( "<li class='badge-disc-s badge-disc-disabled' title='S'><span style='height:{0}%'></span></li>", 60 ));
                    writer.Write( string.Format( "<li class='badge-disc-c badge-disc-disabled' title='C'><span style='height:{0}%'></span></li>", 10 ));
                    writer.Write( "</ul><div class='requested'>R</div></div>" );
                }
            }
        }
Esempio n. 41
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render( PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer )
        {
            int? siteId = GetAttributeValue( badge, "Site" ).AsIntegerOrNull();
            if ( siteId.HasValue )
            {
                var site = Rock.Web.Cache.SiteCache.Read( siteId.Value );
                if ( site != null )
                {
                    string siteName = site.Name;

                    //  create url for link to details
                    string detailPageUrl = string.Empty;

                    if ( !String.IsNullOrEmpty( GetAttributeValue( badge, "PageViewDetails" ) ) )
                    {
                        int pageId = Rock.Web.Cache.PageCache.Read( Guid.Parse( GetAttributeValue( badge, "PageViewDetails" ) ) ).Id;
                        detailPageUrl = System.Web.VirtualPathUtility.ToAbsolute( String.Format( "~/page/{0}?Person={1}&SiteId={2}", pageId, Person.UrlEncodedKey, siteId ) );
                    }

                    writer.Write( String.Format( "<div class='badge badge-lastvisitonsite badge-id-{0}' data-toggle='tooltip' data-original-title=''>", badge.Id ) );

                    writer.Write( "</div>" );

                    writer.Write( String.Format( @"
                <script>
                    Sys.Application.add_load(function () {{

                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/LastVisitOnSite/{0}/{1}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                        var badgeHtml = '';
                                        var daysSinceVisit = data;
                                        var cssClass = '';
                                        var linkUrl = '{3}';
                                        var badgeContent = '';
                                        var labelContent = '';
                                        var siteName = '{4}';

                                        if (daysSinceVisit >= 0 && daysSinceVisit < 1000) {{

                                            labelContent = 'It has been ' + daysSinceVisit + ' day(s) since the last visit to the ' + siteName + ' site.';

                                            if (daysSinceVisit == 0) {{
                                                daysSinceVisit = 'Today';
                                                cssClass = 'today';
                                                labelContent = 'Visited the ' + siteName + ' site today.';
                                            }} else if (daysSinceVisit < 7) {{
                                                cssClass = 'very-recent';
                                            }} else if (daysSinceVisit < 21 ) {{
                                                cssClass = 'recent';
                                            }} else if (daysSinceVisit < 90 ) {{
                                                cssClass = 'moderate';
                                            }} else if (daysSinceVisit < 365 ) {{
                                                cssClass = 'not-recent';
                                            }} else {{
                                                cssClass = 'old';
                                            }}

                                            if (linkUrl != '') {{
                                                badgeContent = '<a href=\'' + linkUrl + '\'><div class=\'badge-content ' + cssClass + '\'><i class=\'fa fa-desktop badge-icon\'></i><span class=\'duration\'>' + daysSinceVisit + '</span></div></a>';
                                            }} else {{
                                                badgeContent = '<div class=\'badge-content ' + cssClass + '\'><i class=\'fa fa-desktop badge-icon\'></i><span class=\'duration\'>' + daysSinceVisit + '</span></div>';
                                            }}

                                            $('.badge-lastvisitonsite.badge-id-{2}').html(badgeContent);
                                            $('.badge-lastvisitonsite.badge-id-{2}').attr('data-original-title', labelContent);
                                        }}

                                    }}
                                }},
                        }});
                    }});
                </script>

            ", Person.Id, siteId, badge.Id, detailPageUrl, siteName ) );
                }
            }
        }
Esempio n. 42
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            int?siteId = GetAttributeValue(badge, "Site").AsIntegerOrNull();

            if (siteId.HasValue)
            {
                var site = Rock.Web.Cache.SiteCache.Read(siteId.Value);
                if (site != null)
                {
                    string siteName = site.Name;

                    //  create url for link to details
                    string detailPageUrl = string.Empty;

                    if (!String.IsNullOrEmpty(GetAttributeValue(badge, "PageViewDetails")))
                    {
                        int pageId = Rock.Web.Cache.PageCache.Read(Guid.Parse(GetAttributeValue(badge, "PageViewDetails"))).Id;
                        detailPageUrl = System.Web.VirtualPathUtility.ToAbsolute(String.Format("~/page/{0}?Person={1}&SiteId={2}", pageId, Person.UrlEncodedKey, siteId));
                    }

                    writer.Write(String.Format("<div class='badge badge-lastvisitonsite badge-id-{0}' data-toggle='tooltip' data-original-title=''>", badge.Id));

                    writer.Write("</div>");

                    writer.Write(String.Format(@"
                <script>
                    Sys.Application.add_load(function () {{
                                                
                        $.ajax({{
                                type: 'GET',
                                url: Rock.settings.get('baseUrl') + 'api/PersonBadges/LastVisitOnSite/{0}/{1}' ,
                                statusCode: {{
                                    200: function (data, status, xhr) {{
                                        var badgeHtml = '';
                                        var daysSinceVisit = data;
                                        var cssClass = '';
                                        var linkUrl = '{3}';
                                        var badgeContent = '';
                                        var labelContent = '';
                                        var siteName = '{4}';

                                        if (daysSinceVisit >= 0 && daysSinceVisit < 1000) {{
        
                                            labelContent = 'It has been ' + daysSinceVisit + ' day(s) since the last visit to the ' + siteName + ' site.';                                    
        
                                            if (daysSinceVisit == 0) {{
                                                daysSinceVisit = 'Today';
                                                cssClass = 'today';
                                                labelContent = 'Visited the ' + siteName + ' site today.';
                                            }} else if (daysSinceVisit < 7) {{
                                                cssClass = 'very-recent';
                                            }} else if (daysSinceVisit < 21 ) {{
                                                cssClass = 'recent';
                                            }} else if (daysSinceVisit < 90 ) {{
                                                cssClass = 'moderate';
                                            }} else if (daysSinceVisit < 365 ) {{
                                                cssClass = 'not-recent';
                                            }} else {{
                                                cssClass = 'old';
                                            }}                                   
                                            
                                            if (linkUrl != '') {{
                                                badgeContent = '<a href=\'' + linkUrl + '\'><div class=\'badge-content ' + cssClass + '\'><i class=\'fa fa-desktop badge-icon\'></i><span class=\'duration\'>' + daysSinceVisit + '</span></div></a>';
                                            }} else {{
                                                badgeContent = '<div class=\'badge-content ' + cssClass + '\'><i class=\'fa fa-desktop badge-icon\'></i><span class=\'duration\'>' + daysSinceVisit + '</span></div>';
                                            }}
                                            
                                            

                                            $('.badge-lastvisitonsite.badge-id-{2}').html(badgeContent);
                                            $('.badge-lastvisitonsite.badge-id-{2}').attr('data-original-title', labelContent);
                                        }}
                                        
                                    }}
                                }},
                        }});
                    }});
                </script>
                
            ", Person.Id, siteId, badge.Id, detailPageUrl, siteName));
                }
            }
        }
Esempio n. 43
0
 /// <summary>
 /// Gets the attribute value for the badge
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="key">The key.</param>
 /// <returns></returns>
 protected string GetAttributeValue( PersonBadgeCache badge, string key )
 {
     return badge.GetAttributeValue( key );
 }
Esempio n. 44
0
 /// <summary>
 /// Renders the specified writer.
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="writer">The writer.</param>
 public abstract void Render( PersonBadgeCache badge, HtmlTextWriter writer );
Esempio n. 45
0
        /// <summary>
        /// Renders the specified writer.
        /// </summary>
        /// <param name="badge">The badge.</param>
        /// <param name="writer">The writer.</param>
        public override void Render(PersonBadgeCache badge, System.Web.UI.HtmlTextWriter writer)
        {
            var accountGuids  = this.GetAttributeValue(badge, "Accounts")?.SplitDelimitedValues().AsGuidList();
            var minimumAmount = this.GetAttributeValue(badge, "MinimumAmount")?.AsDecimalOrNull();
            var slidingDateRangeDelimitedValues = this.GetAttributeValue(badge, "DateRange");
            var lavaTemplate = this.GetAttributeValue(badge, "LavaTemplate");

            var dateRange        = SlidingDateRangePicker.CalculateDateRangeFromDelimitedValues(slidingDateRangeDelimitedValues);
            var dateRangeSummary = SlidingDateRangePicker.FormatDelimitedValues(slidingDateRangeDelimitedValues);

            var mergeFields = Lava.LavaHelper.GetCommonMergeFields(null, null, new Lava.CommonMergeFieldsOptions {
                GetLegacyGlobalMergeFields = false
            });

            mergeFields.Add("Person", this.Person);
            using (var rockContext = new RockContext())
            {
                mergeFields.Add("Badge", badge);
                mergeFields.Add("DateRange", new { Dates = dateRange, Summary = dateRangeSummary });

                // fetch all the possible PersonAliasIds that have this GivingID to help optimize the SQL
                var personAliasIds = new PersonAliasService(rockContext).Queryable().Where(a => a.Person.GivingId == this.Person.GivingId).Select(a => a.Id).ToList();

                var transactionTypeContributionValueId = DefinedValueCache.Read(Rock.SystemGuid.DefinedValue.TRANSACTION_TYPE_CONTRIBUTION.AsGuid()).Id;
                var qry = new FinancialTransactionService(rockContext).Queryable().Where(a => a.TransactionTypeValueId == transactionTypeContributionValueId);

                // get the transactions for the person or all the members in the person's giving group (Family)
                qry = qry.Where(t => t.AuthorizedPersonAliasId.HasValue && personAliasIds.Contains(t.AuthorizedPersonAliasId.Value));

                if (dateRange.Start.HasValue)
                {
                    qry = qry.Where(t => t.TransactionDateTime >= dateRange.Start.Value);
                }

                if (dateRange.End.HasValue)
                {
                    qry = qry.Where(t => t.TransactionDateTime < dateRange.End.Value);
                }

                if (minimumAmount.HasValue)
                {
                    qry = qry.Where(a => a.TransactionDetails.Sum(d => ( decimal? )d.Amount) > minimumAmount);
                }

                if (accountGuids.Any())
                {
                    qry = qry.Where(t => t.TransactionDetails.Any(d => accountGuids.Contains(d.Account.Guid)));
                }

                var contributionList = qry.Select(a => new
                {
                    a.TransactionDateTime,
                    ContributionAmount = a.TransactionDetails.Sum(d => ( decimal? )d.Amount)
                }).ToList();

                if (contributionList.Any())
                {
                    var contributionResult = new
                    {
                        Count        = contributionList.Count(),
                        LastDateTime = contributionList.Max(a => a.TransactionDateTime),
                        TotalAmount  = contributionList.Sum(a => a.ContributionAmount),
                    };

                    mergeFields.Add("Contributions", contributionResult);
                }

                string output = lavaTemplate.ResolveMergeFields(mergeFields);

                writer.Write(output);
            }
        }
Esempio n. 46
0
        /// <summary>
        /// Restores view-state information from a previous page request that was saved by the <see cref="M:System.Web.UI.Control.SaveViewState" /> method.
        /// </summary>
        /// <param name="savedState">An <see cref="T:System.Object" /> that represents the control state to be restored.</param>
        protected override void LoadViewState( object savedState )
        {
            base.LoadViewState( savedState );

            string json = ViewState["PersonBadge"] as string;
            if ( !string.IsNullOrWhiteSpace( json ) )
            {
                PersonBadge = PersonBadgeCache.FromJson( json );
            }
        }
Esempio n. 47
0
 /// <summary>
 /// Gets the attribute value for the badge
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="key">The key.</param>
 /// <returns></returns>
 protected string GetAttributeValue(PersonBadgeCache badge, string key)
 {
     return(badge.GetAttributeValue(key));
 }
Esempio n. 48
0
 /// <summary>
 /// Renders the specified writer.
 /// </summary>
 /// <param name="badge">The badge.</param>
 /// <param name="writer">The writer.</param>
 public abstract void Render(PersonBadgeCache badge, HtmlTextWriter writer);