/// <summary> /// Binds the signature documents grid. /// </summary> protected void BindGrid() { var qry = new SignatureDocumentService( new RockContext() ) .Queryable().AsNoTracking(); if ( TargetPerson != null ) { qry = qry.Where( d => ( d.AppliesToPersonAlias != null && d.AppliesToPersonAlias.PersonId == TargetPerson.Id ) || ( d.AssignedToPersonAlias != null && d.AssignedToPersonAlias.PersonId == TargetPerson.Id ) || ( d.SignedByPersonAlias != null && d.SignedByPersonAlias.PersonId == TargetPerson.Id ) ); } else { int? documentTypeId = PageParameter( "SignatureDocumentTemplateId" ).AsIntegerOrNull(); if ( documentTypeId.HasValue ) { qry = qry.Where( d => d.SignatureDocumentTemplateId == documentTypeId.Value ); var typeColumn = gSignatureDocuments.ColumnsOfType<RockBoundField>().Where( f => f.HeaderText == "Document Type" ).First(); typeColumn.Visible = false; } } SortProperty sortProperty = gSignatureDocuments.SortProperty; if ( sortProperty != null ) { qry = qry.Sort( sortProperty ); } else { qry = qry.OrderByDescending( d => d.LastInviteDate ); } gSignatureDocuments.DataSource = qry.Select( d => new { d.Id, d.Name, d.DocumentKey, d.AppliesToPersonAlias, d.AssignedToPersonAlias, d.SignedByPersonAlias, d.Status, d.LastInviteDate, d.SignatureDocumentTemplate, FileText = d.BinaryFileId.HasValue ? "<i class='fa fa-file-text-o fa-lg'></i>" : "", FileId = d.BinaryFileId ?? 0 } ).ToList(); gSignatureDocuments.DataBind(); }
private void ShowRequiredDocumentStatus( RockContext rockContext, GroupMember groupMember, Group group ) { if ( groupMember.Person != null && group.RequiredSignatureDocumentTemplate != null ) { var documents = new SignatureDocumentService( rockContext ) .Queryable().AsNoTracking() .Where( d => d.SignatureDocumentTemplateId == group.RequiredSignatureDocumentTemplate.Id && d.AppliesToPersonAlias.PersonId == groupMember.Person.Id ) .ToList(); if ( !documents.Any( d => d.Status == SignatureDocumentStatus.Signed ) ) { var lastSent = documents.Any( d => d.Status == SignatureDocumentStatus.Sent ) ? documents.Where( d => d.Status == SignatureDocumentStatus.Sent ).Max( d => d.LastInviteDate ) : (DateTime?)null; pnlRequiredSignatureDocument.Visible = true; if ( lastSent.HasValue ) { lbResendDocumentRequest.Text = "Resend Signature Request"; lRequiredSignatureDocumentMessage.Text =string.Format("A signed {0} document has not yet been received for {1}. The last request was sent {2}.", group.RequiredSignatureDocumentTemplate.Name, groupMember.Person.NickName, lastSent.Value.ToElapsedString() ); } else { lbResendDocumentRequest.Text = "Send Signature Request"; lRequiredSignatureDocumentMessage.Text = string.Format("The required {0} document has not yet been sent to {1} for signing.", group.RequiredSignatureDocumentTemplate.Name, groupMember.Person.NickName ); } } else { pnlRequiredSignatureDocument.Visible = false; } } else { pnlRequiredSignatureDocument.Visible = false; } }
/// <summary> /// Shows the readonly details. /// </summary> /// <param name="registration">The group.</param> private void ShowReadonlyDetails( Registration registration ) { SetCostLabels( registration ); SetEditMode( false ); var rockContext = new RockContext(); if ( registration.PersonAlias != null && registration.PersonAlias.Person != null ) { lName.Text = registration.PersonAlias.Person.GetAnchorTag( ResolveRockUrl( "/" ) ); } else { lName.Text = string.Format( "{0} {1}", registration.FirstName, registration.LastName ); } lConfirmationEmail.Text = registration.ConfirmationEmail; lConfirmationEmail.Visible = !string.IsNullOrWhiteSpace( registration.ConfirmationEmail ); lbResendConfirmation.Visible = lConfirmationEmail.Visible; if ( registration.Group != null ) { var qryParams = new Dictionary<string, string>(); qryParams.Add( "GroupId", registration.Group.Id.ToString() ); string groupUrl = LinkedPageUrl( "GroupDetailPage", qryParams ); lGroup.Text = string.Format( "<a href='{0}'>{1}</a>", groupUrl, registration.Group.Name ); lGroup.Visible = true; } else { lGroup.Visible = false; } lDiscountCode.Visible = !string.IsNullOrWhiteSpace( registration.DiscountCode ); lDiscountCode.Text = registration.DiscountCode; lDiscountPercent.Visible = registration.DiscountPercentage > 0.0m; lDiscountPercent.Text = registration.DiscountPercentage.ToString("P0"); lDiscountAmount.Visible = registration.DiscountAmount > 0.0m; lDiscountAmount.Text = registration.DiscountAmount.FormatAsCurrency(); RegistrantsState = new List<RegistrantInfo>(); registration.Registrants.ToList().ForEach( r => RegistrantsState.Add( new RegistrantInfo( r, rockContext ) ) ); if ( registration.RegistrationInstance != null && registration.RegistrationInstance.RegistrationTemplate != null && registration.RegistrationInstance.RegistrationTemplate.RequiredSignatureDocumentTemplateId.HasValue ) { var personIds = RegistrantsState.Select( r => r.PersonId ).ToList(); var documents = new SignatureDocumentService( rockContext ) .Queryable().AsNoTracking() .Where( d => d.SignatureDocumentTemplateId == registration.RegistrationInstance.RegistrationTemplate.RequiredSignatureDocumentTemplateId.Value && d.Status == SignatureDocumentStatus.Signed && d.BinaryFileId.HasValue && d.AppliesToPersonAlias != null && personIds.Contains( d.AppliesToPersonAlias.PersonId ) ) .OrderByDescending( d => d.LastStatusDate ) .ToList(); foreach( var registrantInfo in RegistrantsState ) { var document = documents.Where( d => d.AppliesToPersonAlias.PersonId == registrantInfo.PersonId ).FirstOrDefault(); registrantInfo.SignatureDocumentId = document != null ? document.BinaryFileId : (int?)null; registrantInfo.SignatureDocumentLastSent = document != null ? document.LastInviteDate : (DateTime?)null; } } PercentageDiscountExists = registration.DiscountPercentage > 0.0m; BuildFeeTable( registration ); pnlPaymentDetails.Visible = false; pnlPaymentInfo.Visible = false; BuildRegistrationControls( true ); bool anyPayments = registration.Payments.Any(); hfHasPayments.Value = anyPayments.ToString(); foreach ( RockWeb.Blocks.Finance.TransactionList block in RockPage.RockBlocks.Where( a => a is RockWeb.Blocks.Finance.TransactionList ) ) { block.SetVisible( anyPayments ); } lbAddRegistrant.Visible = EditAllowed; BindPaymentsGrid(); }