public List <Review> GetWorklistDetails(string UserId, string ProsIncId, string SN, string RefID) { List <Review> WorkListItem = new List <Review>(); try { WorkflowFacade workfacade = new WorkflowFacade(); List <WorklistItem> worklist = workfacade.GetWorklistItemsByProcess(UserId); if (worklist.Where(P => P.SN == SN).Count() > 0) { //string ReferID = Db.RequestFormMasters.Where(P => P.ProcInstID == ProsIncId).Select(P => P.ReferenceID).FirstOrDefault().ToString(); string ReferID = (from a in Db.RequestFormMasters join b in Db.RequestFormTaskActioners on a.FormID equals b.FormID into ps from b in ps.DefaultIfEmpty() where (a.ProcInstID == ProsIncId || b.ProcInstID.ToString() == ProsIncId) select a.ReferenceID).FirstOrDefault().ToString(); if (!string.IsNullOrEmpty(ReferID)) { int procid = 0; procid = Convert.ToInt32(ProsIncId); var item = GetRequestDetails(ReferID, UserId, ProsIncId, "Task").FirstOrDefault(); var actions = worklist.Where(p => p.ProcInstID == procid).Select(P => P.Actions).FirstOrDefault(); //item.actions = actions.Select(P => P.Name).ToList(); var items = actions.Select(P => P.Name).ToList(); item.actions = (from a in Db.ProcessStepLists join b in Db.ProcessActionLists on a.StepID equals b.StepID where (a.StepName == item.FormStatus) && items.Contains(b.K2ActionName) select new ProcessActionListDTO { ActionID = b.ActionID, Action = b.K2ActionName, ButtonName = b.ActionButtonName, DisplayOrder = b.DisplayOrder }).OrderBy(p => p.DisplayOrder).ToList(); WorkListItem.Add(item); } } else { List <CheckDelegationUser> record = new List <CheckDelegationUser>(); SqlParameter[] sqlp = { new SqlParameter("ProcInstId", ProsIncId), new SqlParameter("SUser", UserId) }; record = Db.Database.SqlQuery <CheckDelegationUser>("exec [K2_checkSharedUser] @ProcInstId,@SUser", sqlp).ToList(); if (record.Count() > 0) { var item = GetRequestDetails(RefID, UserId, ProsIncId, "Task").FirstOrDefault(); WorkListItem.Add(item); } else { throw new System.ArgumentException("The user has no enough permission to open this item"); } } } catch (Exception ex) { throw ex; } return(WorkListItem); }