/// <summary> /// Gets the badge label /// </summary> /// <param name="person">The person.</param> /// <returns></returns> public override HighlightLabel GetLabel(Person person) { if (ParentPersonBlock != null) { // Campus is associated with the family group(s) person belongs to. var families = ParentPersonBlock.PersonGroups(Rock.SystemGuid.GroupType.GROUPTYPE_FAMILY); if (families != null) { var label = new HighlightLabel(); label.LabelType = LabelType.Campus; var campusNames = new List<string>(); foreach (int campusId in families .Where(g => g.CampusId.HasValue) .Select(g => g.CampusId) .Distinct() .ToList()) campusNames.Add(Rock.Web.Cache.CampusCache.Read(campusId).Name); label.Text = campusNames.OrderBy(n => n).ToList().AsDelimited(", "); return label; } } return null; }
/// <summary> /// Gets the badge label /// </summary> /// <param name="person">The person.</param> /// <returns></returns> public override HighlightLabel GetLabel(Person person) { if ( Person != null ) { var label = new HighlightLabel(); label.LabelType = LabelType.Success; label.Text = Person.ConnectionStatusValueId.DefinedValue(); return label; } return null; }
/// <summary> /// Gets the badge label /// </summary> /// <param name="person">The person.</param> /// <returns></returns> public override HighlightLabel GetLabel( Person person ) { if ( Person != null ) { // Show record status only if it's not 'Active' if ( Person.RecordStatusValueId.HasValue ) { var recordStatusValue = DefinedValueCache.Read( Person.RecordStatusValueId.Value ); if ( string.Compare( recordStatusValue.Guid.ToString(), Rock.SystemGuid.DefinedValue.PERSON_RECORD_STATUS_ACTIVE, true ) != 0 ) { var recordReasonValue = DefinedValueCache.Read( Person.RecordStatusReasonValueId.Value ); var label = new HighlightLabel(); label.LabelType = LabelType.Danger; label.Text = recordStatusValue.Name; label.ToolTip = ( recordReasonValue != null ) ? recordReasonValue.Name : ""; return label; } } } return null; }
/// <summary> /// Shows the status flags /// </summary> /// <param name="prayerRequest">The prayer request.</param> /// <param name="person">The person.</param> /// <param name="lFlagged">The l flagged.</param> private void ShowStatus( PrayerRequest prayerRequest, Person person, HighlightLabel lFlagged ) { int flagCount = prayerRequest.FlagCount ?? 0; if ( flagCount > 0 ) { lFlagged.Visible = true; lFlagged.Text = string.Format( "flagged {0} times", flagCount ); } cbApproved.Enabled = IsUserAuthorized( "Approve" ); cbApproved.Checked = prayerRequest.IsApproved ?? false; if ( person != null && ( prayerRequest.IsApproved ?? false ) && prayerRequest.ApprovedByPersonId.HasValue ) { lblApprovedByPerson.Visible = true; lblApprovedByPerson.Text = string.Format( "approved by {0}", prayerRequest.ApprovedByPerson.FullName ); } else { lblApprovedByPerson.Visible = false; } }
public void ShowDetail( int contentItemId, int? contentChannelId ) { bool canEdit = IsUserAuthorized( Authorization.EDIT ); hfId.Value = contentItemId.ToString(); hfChannelId.Value = contentChannelId.HasValue ? contentChannelId.Value.ToString() : string.Empty; ContentChannelItem contentItem = GetContentItem(); if ( contentItem != null && contentItem.ContentChannelType != null && contentItem.ContentChannel != null && ( canEdit || contentItem.IsAuthorized( Authorization.EDIT, CurrentPerson ) ) ) { ShowApproval( contentItem ); pnlEditDetails.Visible = true; // show/hide the delete button lbDelete.Visible = (GetAttributeValue( "ShowDeleteButton" ).AsBoolean() && contentItem.Id != 0); hfId.Value = contentItem.Id.ToString(); hfChannelId.Value = contentItem.ContentChannelId.ToString(); string cssIcon = contentItem.ContentChannel.IconCssClass; if ( string.IsNullOrWhiteSpace( cssIcon ) ) { cssIcon = "fa fa-certificate"; } lIcon.Text = string.Format( "<i class='{0}'></i>", cssIcon ); string title = contentItem.Id > 0 ? ActionTitle.Edit( ContentChannelItem.FriendlyTypeName ) : ActionTitle.Add( ContentChannelItem.FriendlyTypeName ); lTitle.Text = title.FormatAsHtmlTitle(); hlContentChannel.Text = contentItem.ContentChannel.Name; hlStatus.Text = contentItem.Status.ConvertToString(); hlStatus.LabelType = LabelType.Default; switch( contentItem.Status ) { case ContentChannelItemStatus.Approved: hlStatus.LabelType = LabelType.Success; break; case ContentChannelItemStatus.Denied: hlStatus.LabelType = LabelType.Danger; break; case ContentChannelItemStatus.PendingApproval: hlStatus.LabelType = LabelType.Warning; break; default: hlStatus.LabelType = LabelType.Default; break; } var statusDetail = new System.Text.StringBuilder(); if ( contentItem.ApprovedByPersonAlias != null && contentItem.ApprovedByPersonAlias.Person != null ) { statusDetail.AppendFormat( "by {0} ", contentItem.ApprovedByPersonAlias.Person.FullName ); } if ( contentItem.ApprovedDateTime.HasValue ) { statusDetail.AppendFormat( "on {0} at {1}", contentItem.ApprovedDateTime.Value.ToShortDateString(), contentItem.ApprovedDateTime.Value.ToShortTimeString() ); } hlStatus.ToolTip = statusDetail.ToString(); tbTitle.Text = contentItem.Title; if ( contentItem.ContentChannel.ContentControlType == ContentControlType.HtmlEditor ) { ceContent.Visible = false; htmlContent.Visible = true; htmlContent.Text = contentItem.Content; htmlContent.MergeFields.Clear(); htmlContent.MergeFields.Add( "GlobalAttribute" ); htmlContent.MergeFields.Add( "Rock.Model.ContentChannelItem|Current Item" ); htmlContent.MergeFields.Add( "Rock.Model.Person|Current Person" ); htmlContent.MergeFields.Add( "Campuses" ); htmlContent.MergeFields.Add( "RockVersion" ); if ( !string.IsNullOrWhiteSpace( contentItem.ContentChannel.RootImageDirectory ) ) { htmlContent.DocumentFolderRoot = contentItem.ContentChannel.RootImageDirectory; htmlContent.ImageFolderRoot = contentItem.ContentChannel.RootImageDirectory; } } else { htmlContent.Visible = false; ceContent.Visible = true; ceContent.Text = contentItem.Content; ceContent.MergeFields.Clear(); ceContent.MergeFields.Add( "GlobalAttribute" ); ceContent.MergeFields.Add( "Rock.Model.ContentChannelItem|Current Item" ); ceContent.MergeFields.Add( "Rock.Model.Person|Current Person" ); ceContent.MergeFields.Add( "Campuses" ); ceContent.MergeFields.Add( "RockVersion" ); } if ( contentItem.ContentChannelType.IncludeTime ) { dpStart.Visible = false; dpExpire.Visible = false; dtpStart.Visible = true; dtpExpire.Visible = contentItem.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange; dtpStart.SelectedDateTime = contentItem.StartDateTime; dtpStart.Label = contentItem.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Active"; dtpExpire.SelectedDateTime = contentItem.ExpireDateTime; } else { dpStart.Visible = true; dpExpire.Visible = contentItem.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange; dtpStart.Visible = false; dtpExpire.Visible = false; dpStart.SelectedDate = contentItem.StartDateTime.Date; dpStart.Label = contentItem.ContentChannelType.DateRangeType == ContentChannelDateType.DateRange ? "Start" : "Active"; dpExpire.SelectedDate = contentItem.ExpireDateTime.HasValue ? contentItem.ExpireDateTime.Value.Date : (DateTime?)null; } nbPriority.Text = contentItem.Priority.ToString(); nbPriority.Visible = !contentItem.ContentChannelType.DisablePriority; contentItem.LoadAttributes(); phAttributes.Controls.Clear(); Rock.Attribute.Helper.AddEditControls( contentItem, phAttributes, true, BlockValidationGroup ); phOccurrences.Controls.Clear(); foreach ( var occurrence in contentItem.EventItemOccurrences .Where( o => o.EventItemOccurrence != null ) .Select( o => o.EventItemOccurrence ) ) { var qryParams = new Dictionary<string, string> { { "EventItemOccurrenceId", occurrence.Id.ToString() } }; string url = LinkedPageUrl( "EventOccurrencePage", qryParams ); var hlOccurrence = new HighlightLabel(); hlOccurrence.LabelType = LabelType.Info; hlOccurrence.ID = string.Format( "hlOccurrence_{0}", occurrence.Id ); hlOccurrence.Text = string.Format( "<a href='{0}'>{1}</a>", url, occurrence.ToString() ); phOccurrences.Controls.Add( hlOccurrence ); } } else { nbEditModeMessage.Text = EditModeMessage.NotAuthorizedToEdit( ContentChannelItem.FriendlyTypeName ); pnlEditDetails.Visible = false; } }
/// <summary> /// Shows the status flags /// </summary> /// <param name="prayerRequest">The prayer request.</param> /// <param name="person">The person.</param> /// <param name="lFlagged">The l flagged.</param> private void ShowStatus( PrayerRequest prayerRequest, Person person, HighlightLabel lFlagged ) { int flagCount = prayerRequest.FlagCount ?? 0; if ( flagCount > 0 ) { lFlagged.Visible = true; lFlagged.Text = string.Format( "flagged {0} times", flagCount ); } ShowApproval( prayerRequest ); }
private void BuildRegistrantControls( RegistrantInfo registrant, bool setValues ) { var anchor = new HtmlAnchor(); anchor.Name = registrant.Id.ToString(); phDynamicControls.Controls.Add( anchor ); var divPanel = new HtmlGenericControl( "div" ); divPanel.AddCssClass( "panel" ); divPanel.AddCssClass( "panel-block" ); phDynamicControls.Controls.Add( divPanel ); var divHeading = new HtmlGenericControl( "div" ); divHeading.AddCssClass( "panel-heading" ); divHeading.AddCssClass( "clearfix" ); divPanel.Controls.Add( divHeading ); var h1Heading = new HtmlGenericControl( "h1" ); h1Heading.AddCssClass( "panel-title" ); h1Heading.AddCssClass( "pull-left" ); h1Heading.InnerText = registrant.PersonName; divHeading.Controls.Add( h1Heading ); var divLabels = new HtmlGenericControl( "div" ); divLabels.AddCssClass( "panel-labels" ); divHeading.Controls.Add( divLabels ); decimal registrantCost = registrant.TotalCost; if ( registrantCost != 0.0m ) { var hlCost = new HighlightLabel(); hlCost.ID = string.Format( "hlCost_{0}", registrant.Id ); hlCost.LabelType = LabelType.Info; hlCost.ToolTip = "Cost"; hlCost.Text = registrantCost.ToString( "C2" ); divLabels.Controls.Add( hlCost ); } var divBody = new HtmlGenericControl( "div" ); divBody.AddCssClass( "panel-body" ); divPanel.Controls.Add( divBody ); var divRow = new HtmlGenericControl( "div" ); divRow.AddCssClass( "row" ); divBody.Controls.Add( divRow ); var divFields = new HtmlGenericControl( "div" ); divFields.AddCssClass( "col-md-6"); divRow.Controls.Add( divFields ); var divFees = new HtmlGenericControl( "div" ); divFees.AddCssClass( "col-md-6"); divRow.Controls.Add( divFees ); foreach( var form in RegistrationTemplateState.Forms ) { foreach( var field in form.Fields ) { var fieldControl = BuildRegistrantFieldControl( field, registrant, setValues ); if ( fieldControl != null ) { divFields.Controls.Add( fieldControl ); } } } if ( registrant.Cost > 0.0m) { var rlCost = new RockLiteral(); rlCost.ID = string.Format( "rlCost_{0}", registrant.Id ); rlCost.Label = "Cost"; rlCost.Text = registrant.Cost.ToString( "C2" ); divFees.Controls.Add( rlCost ); } foreach ( var fee in registrant.FeeValues ) { var templateFee = RegistrationTemplateState.Fees.Where( f => f.Id == fee.Key ).FirstOrDefault(); if ( templateFee != null && fee.Value != null ) { foreach ( var feeInfo in fee.Value ) { var feeControl = BuildRegistrantFeeControl( templateFee, feeInfo, registrant, setValues ); if ( feeControl != null ) { divFees.Controls.Add( feeControl ); } } } } var divActions = new HtmlGenericControl( "Div" ); divActions.AddCssClass( "actions" ); divBody.Controls.Add( divActions ); var lbEditRegistrant = new LinkButton(); lbEditRegistrant.Visible = EditAllowed; lbEditRegistrant.CausesValidation = false; lbEditRegistrant.ID = string.Format( "lbEditRegistrant_{0}", registrant.Id ); lbEditRegistrant.Text = "Edit"; lbEditRegistrant.CssClass = "btn btn-primary"; lbEditRegistrant.Click += lbEditRegistrant_Click; divActions.Controls.Add( lbEditRegistrant ); var lbDeleteRegistrant = new LinkButton(); lbDeleteRegistrant.Visible = EditAllowed; lbDeleteRegistrant.CausesValidation = false; lbDeleteRegistrant.ID = string.Format( "lbDeleteRegistrant_{0}", registrant.Id ); lbDeleteRegistrant.Text = "Delete"; lbDeleteRegistrant.CssClass = "btn btn-link"; lbDeleteRegistrant.Attributes["onclick"] = "javascript: return Rock.dialogs.confirmDelete(event, 'Registrant');"; lbDeleteRegistrant.Click += lbDeleteRegistrant_Click; divActions.Controls.Add( lbDeleteRegistrant ); }
private void BuildRegistrantControls( RegistrantInfo registrant, bool setValues ) { var anchor = new HtmlAnchor(); anchor.Name = registrant.Id.ToString(); phDynamicControls.Controls.Add( anchor ); var divPanel = new HtmlGenericControl( "div" ); divPanel.AddCssClass( "panel" ); divPanel.AddCssClass( "panel-block" ); phDynamicControls.Controls.Add( divPanel ); var divHeading = new HtmlGenericControl( "div" ); divHeading.AddCssClass( "panel-heading" ); divHeading.AddCssClass( "clearfix" ); divPanel.Controls.Add( divHeading ); var h1Heading = new HtmlGenericControl( "h1" ); h1Heading.AddCssClass( "panel-title" ); h1Heading.AddCssClass( "pull-left" ); h1Heading.InnerHtml = "<i class='fa fa-user'></i> " + registrant.PersonName; divHeading.Controls.Add( h1Heading ); var divLabels = new HtmlGenericControl( "div" ); divLabels.AddCssClass( "panel-labels" ); divHeading.Controls.Add( divLabels ); decimal registrantCost = registrant.TotalCost; if ( registrantCost != 0.0m ) { var hlCost = new HighlightLabel(); hlCost.ID = string.Format( "hlCost_{0}", registrant.Id ); hlCost.LabelType = LabelType.Info; hlCost.ToolTip = "Cost"; hlCost.Text = registrantCost.FormatAsCurrency(); divLabels.Controls.Add( hlCost ); } if ( registrant.PersonId.HasValue ) { var aProfileLink = new HtmlAnchor(); aProfileLink.HRef = ResolveRockUrl( string.Format( "~/Person/{0}", registrant.PersonId.Value ) ); divLabels.Controls.Add( aProfileLink ); aProfileLink.AddCssClass( "btn btn-default btn-xs margin-l-sm" ); var iProfileLink = new HtmlGenericControl( "i" ); iProfileLink.AddCssClass( "fa fa-user" ); aProfileLink.Controls.Add( iProfileLink ); } var divBody = new HtmlGenericControl( "div" ); divBody.AddCssClass( "panel-body" ); divPanel.Controls.Add( divBody ); var divRow = new HtmlGenericControl( "div" ); divRow.AddCssClass( "row" ); divBody.Controls.Add( divRow ); var divFields = new HtmlGenericControl( "div" ); divFields.AddCssClass( "col-md-6"); divRow.Controls.Add( divFields ); var divFees = new HtmlGenericControl( "div" ); divFees.AddCssClass( "col-md-6"); divRow.Controls.Add( divFees ); if ( RegistrationTemplateState != null && RegistrationTemplateState.GroupTypeId.HasValue && Registration != null && Registration.Group != null && Registration.Group.GroupTypeId == RegistrationTemplateState.GroupTypeId.Value ) { if ( Registration != null && Registration.Group != null ) { var rcwGroupMember = new RockControlWrapper(); rcwGroupMember.ID = string.Format( "rcwGroupMember_{0}", registrant.Id ); divFields.Controls.Add( rcwGroupMember ); rcwGroupMember.Label = "Group"; var pGroupMember = new HtmlGenericControl( "p" ); pGroupMember.ID = string.Format( "pGroupMember_{0}", registrant.Id ); divRow.AddCssClass( "form-control-static" ); rcwGroupMember.Controls.Add( pGroupMember ); if ( registrant.GroupMemberId.HasValue ) { var qryParams = new Dictionary<string, string>(); qryParams.Add( "GroupMemberId", registrant.GroupMemberId.Value.ToString() ); var aProfileLink = new HtmlAnchor(); aProfileLink.HRef = LinkedPageUrl( "GroupMemberPage", qryParams ); pGroupMember.Controls.Add( aProfileLink ); aProfileLink.Controls.Add( new LiteralControl( string.IsNullOrWhiteSpace( registrant.GroupName ) ? "Group" : registrant.GroupName ) ); } else { pGroupMember.Controls.Add( new LiteralControl( "None (" ) ); var lbGroupMember = new LinkButton(); lbGroupMember.CausesValidation = false; lbGroupMember.ID = string.Format( "lbGroupMember_{0}", registrant.Id ); lbGroupMember.Text = string.Format( "Add {0} to Target Group", registrant.GetFirstName( RegistrationTemplateState ) ); lbGroupMember.Click += lbGroupMember_Click; pGroupMember.Controls.Add( lbGroupMember ); pGroupMember.Controls.Add( new LiteralControl( ")" ) ); } } } foreach( var form in RegistrationTemplateState.Forms.OrderBy( f => f.Order ) ) { foreach( var field in form.Fields.OrderBy( f => f.Order ) ) { var fieldControl = BuildRegistrantFieldControl( field, registrant, setValues ); if ( fieldControl != null ) { divFields.Controls.Add( fieldControl ); } } } if ( registrant.Cost > 0.0m) { var rlCost = new RockLiteral(); rlCost.ID = string.Format( "rlCost_{0}", registrant.Id ); rlCost.Label = "Cost"; rlCost.Text = registrant.Cost.FormatAsCurrency(); divFees.Controls.Add( rlCost ); } foreach ( var fee in registrant.FeeValues ) { var templateFee = RegistrationTemplateState.Fees.Where( f => f.Id == fee.Key ).FirstOrDefault(); if ( templateFee != null && fee.Value != null ) { foreach ( var feeInfo in fee.Value ) { var feeControl = BuildRegistrantFeeControl( templateFee, feeInfo, registrant, setValues ); if ( feeControl != null ) { divFees.Controls.Add( feeControl ); } } } } var divActions = new HtmlGenericControl( "Div" ); divActions.AddCssClass( "actions" ); divBody.Controls.Add( divActions ); var lbEditRegistrant = new LinkButton(); lbEditRegistrant.Visible = EditAllowed; lbEditRegistrant.CausesValidation = false; lbEditRegistrant.ID = string.Format( "lbEditRegistrant_{0}", registrant.Id ); lbEditRegistrant.Text = "Edit"; lbEditRegistrant.CssClass = "btn btn-primary"; lbEditRegistrant.Click += lbEditRegistrant_Click; divActions.Controls.Add( lbEditRegistrant ); var lbDeleteRegistrant = new LinkButton(); lbDeleteRegistrant.Visible = EditAllowed; lbDeleteRegistrant.CausesValidation = false; lbDeleteRegistrant.ID = string.Format( "lbDeleteRegistrant_{0}", registrant.Id ); lbDeleteRegistrant.Text = "Delete"; lbDeleteRegistrant.CssClass = "btn btn-link"; lbDeleteRegistrant.Attributes["onclick"] = "javascript: return Rock.dialogs.confirmDelete(event, 'Registrant');"; lbDeleteRegistrant.Click += lbDeleteRegistrant_Click; divActions.Controls.Add( lbDeleteRegistrant ); }
private void BuildRegistrantControls( RegistrantInfo registrant, bool setValues ) { var anchor = new HtmlAnchor(); anchor.Name = registrant.Id.ToString(); phDynamicControls.Controls.Add( anchor ); var divPanel = new HtmlGenericControl( "div" ); divPanel.AddCssClass( "panel" ); divPanel.AddCssClass( "panel-block" ); phDynamicControls.Controls.Add( divPanel ); var divHeading = new HtmlGenericControl( "div" ); divHeading.AddCssClass( "panel-heading" ); divHeading.AddCssClass( "clearfix" ); divPanel.Controls.Add( divHeading ); var h1Heading = new HtmlGenericControl( "h1" ); h1Heading.AddCssClass( "panel-title" ); h1Heading.AddCssClass( "pull-left" ); h1Heading.InnerHtml = "<i class='fa fa-user'></i> " + registrant.PersonName; divHeading.Controls.Add( h1Heading ); var divLabels = new HtmlGenericControl( "div" ); divLabels.AddCssClass( "panel-labels" ); divHeading.Controls.Add( divLabels ); if ( registrant.OnWaitList ) { var hlOnWaitList = new HighlightLabel(); hlOnWaitList.ID = string.Format( "hlWaitList_{0}", registrant.Id ); hlOnWaitList.LabelType = LabelType.Warning; hlOnWaitList.Text = "Wait List"; hlOnWaitList.CssClass = "margin-r-sm"; divLabels.Controls.Add( hlOnWaitList ); } decimal discountedTotalCost = registrant.DiscountedTotalCost( Registration.DiscountPercentage, Registration.DiscountAmount ); if ( discountedTotalCost != 0.0m ) { var hlCost = new HighlightLabel(); hlCost.ID = string.Format( "hlCost_{0}", registrant.Id ); hlCost.LabelType = LabelType.Info; hlCost.ToolTip = "Cost"; hlCost.Text = discountedTotalCost.FormatAsCurrency(); divLabels.Controls.Add( hlCost ); } if ( registrant.PersonId.HasValue ) { var aProfileLink = new HtmlAnchor(); aProfileLink.HRef = ResolveRockUrl( string.Format( "~/Person/{0}", registrant.PersonId.Value ) ); divLabels.Controls.Add( aProfileLink ); aProfileLink.AddCssClass( "btn btn-default btn-xs margin-l-sm" ); var iProfileLink = new HtmlGenericControl( "i" ); iProfileLink.AddCssClass( "fa fa-user" ); aProfileLink.Controls.Add( iProfileLink ); } var divBody = new HtmlGenericControl( "div" ); divBody.AddCssClass( "panel-body" ); divPanel.Controls.Add( divBody ); SignatureDocumentTemplate documentTemplate = null; if ( Registration != null && Registration.RegistrationInstance != null && Registration.RegistrationInstance.RegistrationTemplate != null && Registration.RegistrationInstance.RegistrationTemplate.RequiredSignatureDocumentTemplate != null ) { documentTemplate = Registration.RegistrationInstance.RegistrationTemplate.RequiredSignatureDocumentTemplate; } if ( documentTemplate != null && !registrant.SignatureDocumentId.HasValue ) { var template = Registration.RegistrationInstance.RegistrationTemplate; var divSigAlert = new HtmlGenericControl( "div" ); divSigAlert.AddCssClass( "alert alert-warning" ); divBody.Controls.Add( divSigAlert ); StringBuilder sb = new StringBuilder(); sb.Append( "<div class='row'><div class='col-md-9'>" ); sb.AppendFormat( "There is not a signed {0} for {1}", template.RequiredSignatureDocumentTemplate.Name, registrant.GetFirstName( template ) ); if ( registrant.SignatureDocumentLastSent.HasValue ) { sb.AppendFormat( " (a request was sent {0})", registrant.SignatureDocumentLastSent.Value.ToElapsedString() ); } sb.Append( ".</div>" ); divSigAlert.Controls.Add( new LiteralControl( sb.ToString() ) ); var divSigAction = new HtmlGenericControl( "div" ); divSigAction.AddCssClass( "col-md-3 text-right" ); divSigAlert.Controls.Add( divSigAction ); var lbResendDocumentRequest = new LinkButton(); lbResendDocumentRequest.CausesValidation = false; lbResendDocumentRequest.ID = string.Format( "lbResendDocumentRequest_{0}", registrant.Id ); lbResendDocumentRequest.Text = registrant.SignatureDocumentLastSent.HasValue ? "Resend Signature Request" : "Send Signature Request"; lbResendDocumentRequest.CssClass = "btn btn-warning btn-sm"; lbResendDocumentRequest.Click += lbResendDocumentRequest_Click; divSigAction.Controls.Add( lbResendDocumentRequest ); divSigAlert.Controls.Add( new LiteralControl( "</div>" ) ); } var divRow = new HtmlGenericControl( "div" ); divRow.AddCssClass( "row" ); divBody.Controls.Add( divRow ); var divLeftColumn = new HtmlGenericControl( "div" ); divLeftColumn.AddCssClass( "col-md-6"); divRow.Controls.Add( divLeftColumn ); var divRightColumn = new HtmlGenericControl( "div" ); divRightColumn.AddCssClass( "col-md-6"); divRow.Controls.Add( divRightColumn ); if ( RegistrationTemplateState != null && RegistrationTemplateState.GroupTypeId.HasValue && Registration != null && Registration.Group != null && Registration.Group.GroupTypeId == RegistrationTemplateState.GroupTypeId.Value ) { if ( Registration != null && Registration.Group != null ) { var rcwGroupMember = new RockControlWrapper(); rcwGroupMember.ID = string.Format( "rcwGroupMember_{0}", registrant.Id ); divLeftColumn.Controls.Add( rcwGroupMember ); rcwGroupMember.Label = "Group"; var pGroupMember = new HtmlGenericControl( "p" ); pGroupMember.ID = string.Format( "pGroupMember_{0}", registrant.Id ); divRow.AddCssClass( "form-control-static" ); rcwGroupMember.Controls.Add( pGroupMember ); if ( registrant.GroupMemberId.HasValue ) { var qryParams = new Dictionary<string, string>(); qryParams.Add( "GroupMemberId", registrant.GroupMemberId.Value.ToString() ); var aProfileLink = new HtmlAnchor(); aProfileLink.HRef = LinkedPageUrl( "GroupMemberPage", qryParams ); pGroupMember.Controls.Add( aProfileLink ); aProfileLink.Controls.Add( new LiteralControl( string.IsNullOrWhiteSpace( registrant.GroupName ) ? "Group" : registrant.GroupName ) ); } else { pGroupMember.Controls.Add( new LiteralControl( "None (" ) ); var lbGroupMember = new LinkButton(); lbGroupMember.CausesValidation = false; lbGroupMember.ID = string.Format( "lbGroupMember_{0}", registrant.Id ); lbGroupMember.Text = string.Format( "Add {0} to Target Group", registrant.GetFirstName( RegistrationTemplateState ) ); lbGroupMember.Click += lbGroupMember_Click; pGroupMember.Controls.Add( lbGroupMember ); pGroupMember.Controls.Add( new LiteralControl( ")" ) ); } } } foreach( var form in RegistrationTemplateState.Forms.OrderBy( f => f.Order ) ) { foreach( var field in form.Fields.OrderBy( f => f.Order ) ) { var fieldControl = BuildRegistrantFieldControl( field, registrant, setValues ); if ( fieldControl != null ) { divLeftColumn.Controls.Add( fieldControl ); } } } if ( registrant.Cost > 0.0m) { var rlCost = new RockLiteral(); rlCost.ID = string.Format( "rlCost_{0}", registrant.Id ); rlCost.Label = "Cost"; rlCost.Text = registrant.Cost.FormatAsCurrency(); decimal discountedCost = registrant.DiscountedCost( Registration.DiscountPercentage, Registration.DiscountAmount ); if ( registrant.Cost == discountedCost ) { var divCost = new HtmlGenericControl( "div" ); divCost.AddCssClass( "col-xs-12" ); divCost.Controls.Add( rlCost ); divRightColumn.Controls.Add( divCost ); } else { var rlDiscountedCost = new RockLiteral(); rlDiscountedCost.ID = string.Format( "rlDiscountedCost_{0}", registrant.Id ); rlDiscountedCost.Label = "Discounted Cost"; rlDiscountedCost.Text = discountedCost.FormatAsCurrency(); var divCost = new HtmlGenericControl( "div" ); divCost.AddCssClass( "col-xs-6" ); divCost.Controls.Add( rlCost ); divRightColumn.Controls.Add( divCost ); var divDiscountedCost = new HtmlGenericControl( "div" ); divDiscountedCost.AddCssClass( "col-xs-6" ); divDiscountedCost.Controls.Add( rlDiscountedCost ); divRightColumn.Controls.Add( divDiscountedCost ); } } foreach ( var fee in registrant.FeeValues ) { var templateFee = RegistrationTemplateState.Fees.Where( f => f.Id == fee.Key ).FirstOrDefault(); if ( templateFee != null && fee.Value != null ) { foreach ( var feeInfo in fee.Value ) { var discountedCost = registrant.DiscountApplies ? feeInfo.DiscountedCost( Registration.DiscountPercentage ) : feeInfo.TotalCost; var feeControl = BuildRegistrantFeeControl( templateFee, feeInfo, registrant, setValues ); if ( feeControl != null ) { if ( feeInfo.TotalCost == discountedCost ) { var divFee = new HtmlGenericControl( "div" ); divFee.AddCssClass( "col-xs-12" ); divFee.Controls.Add( feeControl ); divRightColumn.Controls.Add( divFee ); } else { var rlDiscountedFee = new RockLiteral(); rlDiscountedFee.ID = string.Format( "rlDiscountedFee_{0}_{1}_{2}", registrant.Id, templateFee.Id, feeInfo.Option ); rlDiscountedFee.Label = "Discounted Amount"; rlDiscountedFee.Text = discountedCost.FormatAsCurrency(); var divFee = new HtmlGenericControl( "div" ); divFee.AddCssClass( "col-xs-6" ); divFee.Controls.Add( feeControl ); divRightColumn.Controls.Add( divFee ); var divDiscountedFee = new HtmlGenericControl( "div" ); divDiscountedFee.AddCssClass( "col-xs-6" ); divDiscountedFee.Controls.Add( rlDiscountedFee ); divRightColumn.Controls.Add( divDiscountedFee ); } } } } } if ( documentTemplate != null && registrant.SignatureDocumentId.HasValue ) { var rlDocumentLink = new RockLiteral(); rlDocumentLink.ID = string.Format( "rlDocumentLink_{0}", registrant.Id ); rlDocumentLink.Label = documentTemplate.Name; rlDocumentLink.Text = string.Format( "<a href='{0}?id={1}' target='_blank'>View Document</a>", ResolveRockUrl( "~/GetFile.ashx" ), registrant.SignatureDocumentId.Value ); divRightColumn.Controls.Add( rlDocumentLink ); } var divActions = new HtmlGenericControl( "Div" ); divActions.AddCssClass( "actions" ); divBody.Controls.Add( divActions ); var lbEditRegistrant = new LinkButton(); lbEditRegistrant.Visible = EditAllowed; lbEditRegistrant.CausesValidation = false; lbEditRegistrant.ID = string.Format( "lbEditRegistrant_{0}", registrant.Id ); lbEditRegistrant.Text = "Edit"; lbEditRegistrant.CssClass = "btn btn-primary"; lbEditRegistrant.Click += lbEditRegistrant_Click; divActions.Controls.Add( lbEditRegistrant ); var lbDeleteRegistrant = new LinkButton(); lbDeleteRegistrant.Visible = EditAllowed; lbDeleteRegistrant.CausesValidation = false; lbDeleteRegistrant.ID = string.Format( "lbDeleteRegistrant_{0}", registrant.Id ); lbDeleteRegistrant.Text = "Delete"; lbDeleteRegistrant.CssClass = "btn btn-link"; lbDeleteRegistrant.Attributes["onclick"] = "javascript: return Rock.dialogs.confirmDelete(event, 'Registrant');"; lbDeleteRegistrant.Click += lbDeleteRegistrant_Click; divActions.Controls.Add( lbDeleteRegistrant ); }