コード例 #1
0
        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);
        }