/// <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;
            }
        }