public List <IIFWorklistItem> ListIIFWorklistItem(IIFWorklistItem_Filter filter) { K2Services svc = new K2Services(); svc.AppConfig = this.AppConfig; return(svc.ListIIFWorklistItem(filter)); }
public List <IIFWorklistItem> ListIIFWorklistItem(IIFWorklistItem_Filter filter) { List <IIFWorklistItem> result = new List <IIFWorklistItem>(); Dictionary <int, List <IIFWorklistItem> > dictWfItem = new Dictionary <int, List <IIFWorklistItem> >(); using (Connection k2Con = new Connection()) { k2Con.Open(this.AppConfig.K2Server); if (filter != null) { if (!string.IsNullOrEmpty(filter.Destination)) { k2Con.ImpersonateUser(filter.Destination); } } WorklistCriteria worklistCriteria = new WorklistCriteria(); worklistCriteria.Platform = "ASP"; worklistCriteria.AddFilterField(WCField.ProcessFullName, WCCompare.Equal, "IIF\\PAM"); worklistCriteria.AddFilterField(WCLogical.Or, WCField.ProcessFullName, WCCompare.Equal, "IIF\\CM"); worklistCriteria.AddFilterField(WCLogical.Or, WCField.WorklistItemOwner, "Me", WCCompare.Equal, WCWorklistItemOwner.Me); worklistCriteria.AddFilterField(WCLogical.Or, WCField.WorklistItemOwner, "Other", WCCompare.Equal, WCWorklistItemOwner.Other); Worklist worklist = k2Con.OpenWorklist(worklistCriteria); foreach (WorklistItem item in worklist) { IIFWorklistItem newData = new IIFWorklistItem(); newData.K2ProcessId = item.ProcessInstance.ID; newData.SN = item.SerialNumber; newData.K2CurrentActivityName = item.ActivityInstanceDestination.DisplayName; if (!dictWfItem.ContainsKey(newData.K2ProcessId)) { dictWfItem.Add(newData.K2ProcessId, new List <IIFWorklistItem>()); } newData.SharedUserFQN = item.AllocatedUser; dictWfItem[newData.K2ProcessId].Add(newData); } } if (dictWfItem.Count > 0) { string conStringIIF = this.AppConfig.IIFConnectionString; using (SqlConnection con = new SqlConnection(conStringIIF)) { con.Open(); string queryInValue = string.Empty; foreach (int k2ProcessId in dictWfItem.Keys) { if (string.IsNullOrEmpty(queryInValue)) { queryInValue = k2ProcessId.ToString(); } else { queryInValue = queryInValue + ", " + k2ProcessId.ToString(); } } string query = "SELECT [K2ProcessId], [Id]"; query = query + ", [MDocTypeId], [MDocTypeName], [MProductTypeId], [MProductTypeName]"; query = query + ", [ProjectCode], [CustomerName], [SubmitDate], [CMNumber]"; query = query + ", [IsInRevise]"; query = query + ", [MWorkflowStatusId], [MWorkflowStatusName]"; query = query + ", [ModifiedBy], [ModifiedOn]"; query = query + " FROM [dbo].[Vw_SubmissionList]"; query = query + " WHERE [K2ProcessId] IN ("; query = query + queryInValue; query = query + " )"; using (SqlCommand cmd = con.CreateCommand()) { cmd.CommandType = CommandType.Text; #region Filter if (filter != null) { if (filter.SubmitDate_FROM.HasValue) { query = query + " AND CONVERT(DATE, [SubmitDate]) >= @SubmitDate_FROM"; cmd.Parameters.Add(this.NewSqlParameter("SubmitDate_FROM", SqlDbType.Date, filter.SubmitDate_FROM)); } if (filter.SubmitDate_TO.HasValue) { query = query + " AND CONVERT(DATE, [SubmitDate]) <= @SubmitDate_TO"; cmd.Parameters.Add(this.NewSqlParameter("SubmitDate_TO", SqlDbType.Date, filter.SubmitDate_TO)); } if (!string.IsNullOrEmpty(filter.ProjectCode_LIKE)) { query = query + " AND [ProjectCode] LIKE '%' + @ProjectCode_LIKE + '%'"; cmd.Parameters.Add(this.NewSqlParameter("ProjectCode_LIKE", SqlDbType.VarChar, filter.ProjectCode_LIKE)); } if (!string.IsNullOrEmpty(filter.CustomerName_LIKE)) { query = query + " AND [CustomerName] LIKE '%' + @CustomerName_LIKE + '%'"; cmd.Parameters.Add(this.NewSqlParameter("CustomerName_LIKE", SqlDbType.VarChar, filter.CustomerName_LIKE)); } if (filter.ProductTypeId.HasValue) { query = query + " AND [MProductTypeId] = @ProductTypeId"; cmd.Parameters.Add(this.NewSqlParameter("ProductTypeId", SqlDbType.Int, filter.ProductTypeId)); } if (filter.MDocTypeId.HasValue) { query = query + " AND [MDocTypeId] = @MDocTypeId"; cmd.Parameters.Add(this.NewSqlParameter("MDocTypeId", SqlDbType.VarChar, filter.MDocTypeId.Value)); } if (!string.IsNullOrEmpty(filter.CMNumber_LIKE)) { query = query + " AND [CMNumber] LIKE '%' + @CMNumber_LIKE + '%'"; cmd.Parameters.Add(this.NewSqlParameter("CMNumber_LIKE", SqlDbType.VarChar, filter.CMNumber_LIKE)); } } #endregion cmd.CommandText = query; using (SqlDataReader dr = cmd.ExecuteReader()) { int indexOf_K2ProcessId = dr.GetOrdinal("K2ProcessId"); int indexOf_Id = dr.GetOrdinal("Id"); int indexOf_MDocTypeId = dr.GetOrdinal("MDocTypeId"); int indexOf_MDocTypeName = dr.GetOrdinal("MDocTypeName"); int indexOf_MProductTypeId = dr.GetOrdinal("MProductTypeId"); int indexOf_MProductTypeName = dr.GetOrdinal("MProductTypeName"); int indexOf_ProjectCode = dr.GetOrdinal("ProjectCode"); int indexOf_CustomerName = dr.GetOrdinal("CustomerName"); int indexOf_SubmitDate = dr.GetOrdinal("SubmitDate"); int indexOf_CMNumber = dr.GetOrdinal("CMNumber"); int indexOf_IsInRevise = dr.GetOrdinal("IsInRevise"); int indexOf_MWorkflowStatusId = dr.GetOrdinal("MWorkflowStatusId"); int indexOf_MWorkflowStatusName = dr.GetOrdinal("MWorkflowStatusName"); int indexOf_ModifiedBy = dr.GetOrdinal("ModifiedBy"); int indexOf_ModifiedOn = dr.GetOrdinal("ModifiedOn"); while (dr.Read()) { int k2ProcessId = dr.GetInt32(indexOf_K2ProcessId); if (dictWfItem.ContainsKey(k2ProcessId)) { foreach (IIFWorklistItem data in dictWfItem[k2ProcessId]) { Logger.Error("DocumentId: " + dr.GetInt64(indexOf_Id)); Logger.Error("MDocTypeId: " + dr.GetInt32(indexOf_MDocTypeId)); Logger.Error("MDocTypeName: " + dr.GetNullableString(indexOf_MDocTypeName)); Logger.Error("ProductTypeId: " + dr.GetInt32(indexOf_MProductTypeId)); Logger.Error("ProductTypeName: " + dr.GetNullableString(indexOf_MProductTypeName)); Logger.Error("ProjectCode: " + dr.GetNullableString(indexOf_ProjectCode)); Logger.Error("CustomerName: " + dr.GetNullableString(indexOf_CustomerName)); //Logger.Error("SubmitDate: " + dr.GetDateTime(indexOf_SubmitDate)); Logger.Error("CMNumber: " + dr.GetNullableString(indexOf_CMNumber)); Logger.Error("IsInRevise: " + dr.GetBoolean(indexOf_IsInRevise)); Logger.Error("WorkflowStatusId: " + dr.GetInt32(indexOf_MWorkflowStatusId)); Logger.Error("WorkflowStatusName: " + dr.GetNullableString(indexOf_MWorkflowStatusName)); Logger.Error("ModifiedBy: " + dr.GetNullableString(indexOf_ModifiedBy)); //Logger.Error("ModifiedOn: " + dr.GetDateTime(indexOf_ModifiedOn)); data.DocumentId = dr.GetInt64(indexOf_Id); data.MDocTypeId = dr.GetInt32(indexOf_MDocTypeId); data.MDocTypeName = dr.GetNullableString(indexOf_MDocTypeName); data.ProductTypeId = dr.GetInt32(indexOf_MProductTypeId); data.ProductTypeName = dr.GetNullableString(indexOf_MProductTypeName); data.ProjectCode = dr.GetNullableString(indexOf_ProjectCode); data.CustomerName = dr.GetNullableString(indexOf_CustomerName); try { data.SubmitDate = dr.GetDateTime(indexOf_SubmitDate); } catch { } data.CMNumber = dr.GetNullableString(indexOf_CMNumber); data.IsInRevise = dr.GetBoolean(indexOf_IsInRevise); data.WorkflowStatusId = dr.GetInt32(indexOf_MWorkflowStatusId); data.WorkflowStatusName = dr.GetNullableString(indexOf_MWorkflowStatusName); data.ModifiedBy = dr.GetNullableString(indexOf_ModifiedBy); try { data.ModifiedOn = dr.GetDateTime(indexOf_ModifiedOn); } catch { } if ((data.K2CurrentActivityName.ToUpper() == "Submit MoM BoD".ToUpper()) || (data.K2CurrentActivityName.ToUpper() == "Submit MoM BoC".ToUpper())) { data.TaskListStatus = "Responded (Risk Team)"; } else { data.TaskListStatus = data.WorkflowStatusName; } result.Add(data); } } } } } con.Close(); } } return(result); }