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 ); }
/// <summary> /// Called by the ASP.NET page framework to notify server controls that use composition-based implementation to create any child controls they contain in preparation for posting back or rendering. /// </summary> protected override void CreateChildControls() { base.CreateChildControls(); Controls.Clear(); RockControlHelper.CreateChildControls( this, Controls ); Controls.Add( _hfBinaryFileId ); _hfBinaryFileId.ID = this.ID + "_hfBinaryFileId"; Controls.Add( _hfBinaryFileTypeGuid ); _hfBinaryFileTypeGuid.ID = this.ID + "_hfBinaryFileTypeGuid"; _aFileName = new HtmlAnchor(); Controls.Add( _aFileName ); _aFileName.ID = "fn"; _aFileName.Target = "_blank"; _aFileName.AddCssClass("file-link"); _aRemove = new HtmlAnchor(); Controls.Add( _aRemove ); _aRemove.ID = "rmv"; _aRemove.HRef = "#"; _aRemove.InnerHtml = "<i class='fa fa-times'></i>"; _aRemove.Attributes["class"] = "remove-file"; _fileUpload = new FileUpload(); Controls.Add( _fileUpload ); _fileUpload.ID = this.ID + "_fu"; }
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 ); }