public static string GetAccessTeamFilter() { string filter = ""; List<int> openEnums = new List<int>(); openEnums.Add((int)RequestState.Open); openEnums.Add((int)RequestState.Pending); openEnums.Add((int)RequestState.Change_Requested); RequestFilter newFilter = new RequestFilter(); List<Filter> newFilters = new List<Filter>(); Filter PendingAcknowledgementFilter = new Filter(); Filter PendingWorkflowFilter = new Filter(); Filter PendingTicketFilter = new Filter(); Filter PendingProvisioningFilter = new Filter(); Filter ChangeRequestedFilter = new Filter(); Filter InWorkflowFilter = new Filter(); List<int> PendingAcknowledgementList = new List<int>(); List<int> PendingWorkflowList = new List<int>(); List<int> PendingTicketList = new List<int>(); List<int> PendingProvisioningList = new List<int>(); List<int> ChangeRequestedList = new List<int>(); List<int> InWorkflowList = new List<int>(); using (var db = new SNAPDatabaseDataContext()) { var filterCounts = from r in db.SNAP_Requests join w in db.SNAP_Workflows on r.pkId equals w.requestId join ws in db.SNAP_Workflow_States on w.pkId equals ws.workflowId join a in db.SNAP_Actors on w.actorId equals a.pkId where a.pkId == AccessTeamActorId && openEnums.Contains(r.statusEnum) && ws.completedDate == null group r by new { r.pkId, r.ticketNumber, ws.workflowStatusEnum } into grp select new { requestId = grp.Key.pkId, ticketNumber = grp.Key.ticketNumber, workflowStatusEnum = grp.Key.workflowStatusEnum }; if(filterCounts != null) { foreach(var row in filterCounts) { switch (row.workflowStatusEnum) { case (int)WorkflowState.Pending_Acknowledgement: PendingAcknowledgementList.Add(row.requestId); break; case (int)WorkflowState.Pending_Workflow: PendingWorkflowList.Add(row.requestId); break; case (int)WorkflowState.Approved: case (int)WorkflowState.Pending_Provisioning: if (row.ticketNumber == null) { PendingTicketList.Add(row.requestId); } else { PendingProvisioningList.Add(row.requestId); } break; case (int)WorkflowState.Workflow_Created: InWorkflowList.Add(row.requestId); break; case (int)WorkflowState.Change_Requested: ChangeRequestedList.Add(row.requestId); break; } } PendingAcknowledgementFilter.FilterName = "Ack"; PendingAcknowledgementFilter.RequestIds = PendingAcknowledgementList; PendingWorkflowFilter.FilterName = "WrkFl"; PendingWorkflowFilter.RequestIds = PendingWorkflowList; PendingTicketFilter.FilterName = "Tkt"; PendingTicketFilter.RequestIds = PendingTicketList; PendingProvisioningFilter.FilterName = "Prov"; PendingProvisioningFilter.RequestIds = PendingProvisioningList; ChangeRequestedFilter.FilterName = "Chng Req"; ChangeRequestedFilter.RequestIds = ChangeRequestedList; InWorkflowFilter.FilterName = "In WrkFl"; InWorkflowFilter.RequestIds = InWorkflowList; newFilters.Add(PendingAcknowledgementFilter); newFilters.Add(PendingWorkflowFilter); newFilters.Add(PendingTicketFilter); newFilters.Add(PendingProvisioningFilter); newFilters.Add(ChangeRequestedFilter); newFilters.Add(InWorkflowFilter); newFilter.Filters = newFilters; DataContractJsonSerializer serializer = new DataContractJsonSerializer(newFilter.GetType()); using (MemoryStream ms = new MemoryStream()) { serializer.WriteObject(ms, newFilter); string retVal = Encoding.Default.GetString(ms.ToArray()); filter = retVal; } } } return filter; }