Ejemplo n.º 1
0
        public static IQueryable <WorkflowActivity> GetAuthorized(this IRepository <WorkflowActivity> repository,
                                                                  WorkflowActivityFinderModel finder, string account, bool optimization = true)
        {
            IQueryable <WorkflowActivity> workflowActivities = repository
                                                               .Query(x => x.WorkflowAuthorizations.Any(y => y.Account.ToLower() == account.ToLower()), optimization: optimization)
                                                               .Include(x => x.DocumentUnitReferenced.Category)
                                                               .Include(x => x.DocumentUnitReferenced.Container)
                                                               .OrderBy(o => o.OrderByDescending(oo => oo.RegistrationDate))
                                                               .SelectAsQueryable();


            if (finder != null)
            {
                if (finder.IdWorkflowActivity.HasValue)
                {
                    workflowActivities = workflowActivities.Where(x => x.UniqueId == finder.IdWorkflowActivity.Value);
                }
                if (!string.IsNullOrWhiteSpace(finder.RegistrationUser))
                {
                    workflowActivities = workflowActivities.Where(x => x.RegistrationUser.Contains(finder.RegistrationUser.ToLower()));
                }
                if (finder.AuthorizeDateFrom.HasValue)
                {
                    workflowActivities = workflowActivities.Where(x => x.RegistrationDate >= finder.AuthorizeDateFrom.Value);
                }
                if (finder.AuthorizeDateTo.HasValue)
                {
                    workflowActivities = workflowActivities.Where(x => x.RegistrationDate <= finder.AuthorizeDateTo.Value);
                }
                if (!string.IsNullOrEmpty(finder.RequestorUsername))
                {
                    workflowActivities = workflowActivities.Where(x => x.WorkflowProperties.Any(y => y.Name == WorkflowPropertyHelper.DSW_PROPERTY_PROPOSER_USER && y.ValueString.Contains(finder.RequestorUsername)));
                }
                if (!string.IsNullOrEmpty(finder.RequestorRoleName))
                {
                    workflowActivities = workflowActivities.Where(x => x.DocumentUnitReferenced != null && x.DocumentUnitReferenced.Container.Name.Contains(finder.RequestorRoleName));
                }
                if (finder.Status.HasValue)
                {
                    WorkflowStatus workflowStatus = (WorkflowStatus)finder.Status.Value;
                    workflowActivities = workflowActivities.Where(x => x.WorkflowInstance.Status == workflowStatus);
                }

                if (!string.IsNullOrEmpty(finder.Note))
                {
                    workflowActivities = workflowActivities.Where(x => x.Note.Contains(finder.Note));
                }

                if (!string.IsNullOrEmpty(finder.Subject))
                {
                    workflowActivities = workflowActivities.Where(x => x.Subject.Contains(finder.Subject));
                }

                if (finder.Skip != null && finder.Top != null)
                {
                    workflowActivities = workflowActivities.Skip(finder.Skip.Value).Take(finder.Top.Value);
                }
            }

            return(workflowActivities);
        }
Ejemplo n.º 2
0
        public static int CountUserAuthorized(this IRepository <WorkflowActivity> repository, string account, WorkflowActivityFinderModel finder, bool optimization = true)
        {
            var workflowActivities = repository
                                     .Query(optimization: optimization)
                                     .Include(x => x.WorkflowAuthorizations)
                                     .SelectAsQueryable()
                                     .Where(x => x.WorkflowAuthorizations.Any(y => y.Account.ToLower() == account.ToLower()));

            if (finder != null)
            {
                if (finder.IdWorkflowActivity.HasValue)
                {
                    workflowActivities = workflowActivities.Where(x => x.UniqueId == finder.IdWorkflowActivity.Value);
                }
                if (!string.IsNullOrWhiteSpace(finder.RegistrationUser))
                {
                    workflowActivities = workflowActivities.Where(x => x.RegistrationUser.Contains(finder.RegistrationUser.ToLower()));
                }
                if (finder.AuthorizeDateFrom.HasValue)
                {
                    workflowActivities = workflowActivities.Where(x => x.RegistrationDate >= finder.AuthorizeDateFrom.Value);
                }
                if (finder.AuthorizeDateTo.HasValue)
                {
                    workflowActivities = workflowActivities.Where(x => x.RegistrationDate <= finder.AuthorizeDateTo.Value);
                }
                if (finder.RequestorUsername != null && finder.RequestorUsername != string.Empty)
                {
                    workflowActivities = workflowActivities.Where(x => x.WorkflowProperties.Any(y => y.Name == WorkflowPropertyHelper.DSW_PROPERTY_PROPOSER_USER && y.ValueString.Contains(finder.RequestorUsername)));
                }
                if (finder.Status.HasValue)
                {
                    WorkflowStatus workflowStatus = (WorkflowStatus)finder.Status.Value;
                    workflowActivities = workflowActivities.Where(x => x.WorkflowInstance.Status == workflowStatus);
                }

                if (finder.Note != null && finder.Note != string.Empty)
                {
                    workflowActivities = workflowActivities.Where(x => x.Note.Contains(finder.Note));
                }

                if (finder.Subject != null && finder.Subject != string.Empty)
                {
                    workflowActivities = workflowActivities.Where(x => x.Subject.Contains(finder.Subject));
                }
            }
            return(workflowActivities.Count());
        }