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