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); }
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()); }