public virtual IQueryable <T> DocumentFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            query = query.Where(d => InternalDocumentBases.Is(d) && d.LifeCycleState != Docflow.OfficialDocument.LifeCycleState.Obsolete);

            if (_obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney)
            {
                query = query.Where(d => PowerOfAttorneys.Is(d) && PowerOfAttorneys.As(d).ValidTill >= Calendar.UserToday);

                if (_obj.Recipient != null)
                {
                    query = query.Where(d => Equals(_obj.Recipient, PowerOfAttorneys.As(d).IssuedTo));
                }
            }

            return(query);
        }
 public virtual void DocumentChanged(Sungero.Docflow.Shared.SignatureSettingDocumentChangedEventArgs e)
 {
     if (e.NewValue != null && !Equals(e.NewValue, e.OldValue) && _obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney)
     {
         if (PowerOfAttorneys.Is(e.NewValue))
         {
             var powerOfAttorney = PowerOfAttorneys.As(e.NewValue);
             _obj.Recipient = powerOfAttorney.IssuedTo;
             _obj.ValidFrom = powerOfAttorney.RegistrationDate;
             _obj.ValidTill = powerOfAttorney.ValidTill;
             _obj.BusinessUnits.Clear();
             var newBusinessUnit = _obj.BusinessUnits.AddNew();
             newBusinessUnit.BusinessUnit = powerOfAttorney.BusinessUnit;
         }
         else
         {
             _obj.Recipient = null;
             _obj.ValidTill = null;
             _obj.BusinessUnits.Clear();
         }
     }
 }
        public virtual void RecipientChanged(Sungero.Docflow.Shared.SignatureSettingRecipientChangedEventArgs e)
        {
            // При изменении подписывающего почистить документ.
            if (_obj.Reason == Docflow.SignatureSetting.Reason.PowerOfAttorney &&
                _obj.Document != null && Docflow.PowerOfAttorneys.Is(_obj.Document) && !Equals(e.NewValue, PowerOfAttorneys.As(_obj.Document).IssuedTo))
            {
                _obj.Document  = null;
                _obj.ValidFrom = null;
                _obj.ValidTill = null;
            }

            if (!Equals(e.NewValue, e.OldValue))
            {
                _obj.Certificate = null;
            }
            Functions.SignatureSetting.ChangePropertiesAccess(_obj);
        }