Exemple #1
0
Fichier : UI.cs Projet : apxlee/SAP
        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;
        }