public virtual IQueryable <T> AssigneeFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            e.DisableUiFiltering = true;
            var allUsers = new List <IUser>();
            var actionItemExecutionAssignment = RecordManagement.ActionItemExecutionAssignments.As(_obj.ParentAssignment);

            if (actionItemExecutionAssignment != null)
            {
                allUsers.AddRange(Functions.DeadlineExtensionTask.GetAssigneesForActionItemExecutionTask(actionItemExecutionAssignment).Assignees);
            }
            else if (Sungero.Docflow.ApprovalManagerAssignments.Is(_obj.ParentAssignment))
            {
                allUsers.Add(_obj.ParentAssignment.Author);
            }
            else
            {
                allUsers.Add(_obj.ParentAssignment.Author);
                var employee = Company.Employees.As(_obj.ParentAssignment.Author);
                if (employee != null && employee.Department.Manager != null)
                {
                    allUsers.Add(employee.Department.Manager);
                }
            }

            return(query.Where(x => allUsers.Contains(x)));
        }
Exemple #2
0
        public virtual IQueryable <T> AssigneeFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            query = query.Where(q => q.Status == CoreEntities.DatabookEntry.Status.Active);

            // Для выбора доступны только сотрудники и одиночные роли.
            return(query.Where(q => Company.Employees.Is(q) || Roles.Is(q) && Roles.As(q).IsSingleUser == true));
        }
Exemple #3
0
        public virtual IQueryable <T> ReworkPerformerFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            var reworkPerformersIds = Functions.ApprovalTask.GetReworkPerformers(ApprovalTasks.As(_obj.Task))
                                      .Select(p => p.Id).ToList();

            return(query.Where(x => reworkPerformersIds.Contains(x.Id)));
        }
Exemple #4
0
        public virtual IQueryable <T> ExchangeServiceFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            var services = Functions.ApprovalTask.GetExchangeServices(_obj).Services;

            query = query.Where(s => services.Contains(s));
            return(query);
        }
Exemple #5
0
        public virtual IQueryable <T> AssignedByFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            e.DisableUiFiltering = true;
            var resolutionAuthorsIds = Docflow.PublicFunctions.Module.Remote.UsersCanBeResolutionAuthor(_obj.DocumentsGroup.OfficialDocuments.SingleOrDefault()).Select(x => x.Id).ToList();

            return(query.Where(x => resolutionAuthorsIds.Contains(x.Id)));
        }
        public override IQueryable <T> DocumentKindFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            query = base.DocumentKindFiltering(query, e);

            // Отфильтровать внутренние виды документов.
            return(query.Where(k => k.DocumentFlow.Value == Docflow.DocumentKind.DocumentFlow.Inner));
        }
Exemple #7
0
        public virtual IQueryable <T> SignatoryFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            e.DisableUiFiltering = true;
            var document    = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();
            var signatories = Functions.OfficialDocument.GetSignatories(document).Select(s => s.EmployeeId).Distinct().ToList();

            return(query.Where(s => signatories.Contains(s.Id)));
        }
Exemple #8
0
 public virtual IQueryable <T> SignedByFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
 {
     if (_obj.Correspondent != null)
     {
         query = query.Where(c => Equals(c.Company, _obj.Correspondent));
     }
     return(query);
 }
Exemple #9
0
 public virtual IQueryable <T> JobTitleFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
 {
     if (_obj.Department != null)
     {
         return(query.Where(x => Equals(x.Department, _obj.Department) || x.Department == null));
     }
     return(query);
 }
        public virtual IQueryable <T> DocumentTypeFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            if (_obj.NumberingType != NumberingType.NotNumerable)
            {
                query = query.Where(d => d.IsRegistrationAllowed == true);
            }

            return(query.Where(d => Equals(d.DocumentFlow, _obj.DocumentFlow)));
        }
        public virtual IQueryable <T> ContactFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            if (_obj.Counterparty != null)
            {
                query = query.Where(c => c.Company == _obj.Counterparty);
            }

            return(query);
        }
        public virtual IQueryable <T> HeadOfficeFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            // Фильтровать головное подразделение по нашим организациям.
            if (_obj.BusinessUnit != null)
            {
                query = query.Where(d => d.BusinessUnit.Equals(_obj.BusinessUnit));
            }

            return(query.Where(d => !Equals(d, _obj)));
        }
Exemple #13
0
        public virtual IQueryable <T> CityFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            // Фильтровать населенные пункты по региону.
            if (_obj.Region != null)
            {
                query = query.Where(settlement => Equals(settlement.Region, _obj.Region));
            }

            return(query);
        }
Exemple #14
0
        public virtual IQueryable <T> RegionFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            // Отфильтровать регионы по странам.
            if (_obj.Country != null)
            {
                query = query.Where(region => Equals(region.Country, _obj.Country));
            }

            return(query);
        }
Exemple #15
0
        public virtual IQueryable <T> ContractFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            if (_obj.Counterparty != null)
            {
                query = query.Where(c => Equals(c.Counterparty, _obj.Counterparty));
            }

            query = query.Where(c => !Equals(c.LifeCycleState, Sungero.Contracts.ContractBase.LifeCycleState.Obsolete));

            return(query);
        }
Exemple #16
0
        public virtual IQueryable <T> ApprovalRoleFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            var possibleRoles = Functions.ApprovalStage.GetPossibleRoles(_obj);

            if (CallContext.CalledFrom(ApprovalRules.Info))
            {
                possibleRoles.Remove(Docflow.ApprovalRoleBase.Type.ContractResp);
                possibleRoles.Remove(Docflow.ApprovalRoleBase.Type.ContRespManager);
            }
            return(query.Where(r => possibleRoles.Contains(r.Type)));
        }
Exemple #17
0
        public virtual IQueryable <T> CorrectedFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            query = query.Where(x => x.Id != _obj.Id && x.IsAdjustment != true);

            if (_obj.Counterparty != null)
            {
                query = query.Where(x => Equals(x.Counterparty, _obj.Counterparty));
            }

            return(query);
        }
Exemple #18
0
        public virtual IQueryable <T> ManagerFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            var role = Docflow.PublicInitializationFunctions.Module.GetProjectManagersRole();

            if (role != null)
            {
                var allRecipientIds = Groups.GetAllUsersInGroup(role).Select(x => x.Id).ToList();
                return(query.Where(m => allRecipientIds.Contains(m.Id)));
            }

            return(query);
        }
Exemple #19
0
        public virtual IQueryable <T> LeadingProjectFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            // Из-за того, что команда подпроекта включается в команду ведущего проекта, изменять ведущий проект могут РП или админстратор.
            var admin = Users.Current.IncludedIn(Roles.Administrators);

            if (!admin)
            {
                var projectsIds = Functions.Project.GetProjectsManagerOrAdministrator(Users.Current).Select(p => p.Id).ToList();
                query = query.Where(x => projectsIds.Contains(x.Id));
            }

            return(query.Where(x => x.Stage != Stage.Completed && !Equals(x, _obj)));
        }
Exemple #20
0
        public virtual IQueryable <T> ApprovalRuleFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            var document = _obj.DocumentGroup.OfficialDocuments.FirstOrDefault();

            if (document == null)
            {
                return(query);
            }

            var rules = Functions.OfficialDocument.GetApprovalRules(document).ToList();

            return(query.Where(r => rules.Contains(r)));
        }
        public virtual IQueryable <T> InResponseToFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            if (_obj.Correspondent != null)
            {
                query = query.Where(l => l.Addressees.Any(a => Equals(a.Correspondent, _obj.Correspondent)));
            }

            if (_obj.BusinessUnit != null)
            {
                query = query.Where(l => Equals(_obj.BusinessUnit, l.BusinessUnit));
            }

            return(query);
        }
Exemple #22
0
        public virtual IQueryable <T> ExchangeServiceFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            if (_obj.Status == Sungero.CoreEntities.DatabookEntry.Status.Active && _obj.BusinessUnit != null)
            {
                var alreadyUsedServices = Functions.BusinessUnitBox.GetUsedServicesOfBox(_obj, _obj.BusinessUnit);
                if (alreadyUsedServices.Any())
                {
                    query = query
                            .Where(x => !alreadyUsedServices.Contains(x));
                }
            }

            return(query);
        }
        public virtual IQueryable <T> InResponseToFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            if (_obj.Addressees.Any(a => a.Correspondent != null))
            {
                var correspondents = _obj.Addressees.Where(a => a.Correspondent != null).Select(a => a.Correspondent).ToList();
                query = query.Where(l => correspondents.Contains(l.Correspondent));
            }

            if (_obj.BusinessUnit != null)
            {
                query = query.Where(l => Equals(_obj.BusinessUnit, l.BusinessUnit));
            }

            return(query);
        }
        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);
        }
Exemple #25
0
        public virtual IQueryable <T> AssigneeFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            e.DisableUiFiltering = true;
            var parentTask       = ActionItemExecutionTasks.As(_obj.ParentTask);
            var parentAssignment = ActionItemExecutionAssignments.As(_obj.ParentAssignment);

            if (parentTask != null)
            {
                query = parentTask.IsCompoundActionItem ?? false?
                        query.Where(u => Functions.ActionItemExecutionTask.GetActionItemsPerformers(parentTask).Contains(u)) :
                            query.Where(u => u.Equals(parentTask.Assignee));
            }

            if (parentAssignment != null)
            {
                query = query.Where(u => Functions.ActionItemExecutionAssignment.GetActionItemsAssignees(parentAssignment).Contains(u));
            }

            return(query);
        }
Exemple #26
0
 public override IQueryable <T> ObserversObserverFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
 {
     return((IQueryable <T>)RecordManagement.PublicFunctions.Module.ObserversFiltering(query));
 }
Exemple #27
0
 public override IQueryable <T> OurSignatoryFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
 {
     return(query);
 }
Exemple #28
0
        public virtual IQueryable <T> AddApproversApproverFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            query = query.Where(c => c.Status == CoreEntities.DatabookEntry.Status.Active);

            // Отфильтровать всех пользователей.
            query = query.Where(x => x.Sid != Sungero.Domain.Shared.SystemRoleSid.AllUsers);

            // Отфильтровать служебные роли.
            return((IQueryable <T>)RecordManagement.PublicFunctions.Module.ObserversFiltering(query));
        }
        public override IQueryable <T> CounterpartySignatoryFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
        {
            query = base.CounterpartySignatoryFiltering(query, e);

            if (_obj.Counterparty != null)
            {
                query = query.Where(c => c.Company == _obj.Counterparty);
            }

            return(query);
        }
Exemple #30
0
 public override IQueryable <T> CorrectedFiltering(IQueryable <T> query, Sungero.Domain.PropertyFilteringEventArgs e)
 {
     query = base.CorrectedFiltering(query, e);
     return(query.Where(x => (OutgoingTaxInvoices.Is(x) || UniversalTransferDocuments.Is(x)) && x.IsAdjustment != true));
 }