Ejemplo n.º 1
0
        /*
         * Get delegate users according to the given multi names.
         * @Return array that contains delegate users
         */
        public static List<string> GetDelemans(List<string> loginNames, string moduleId)
        {
            List<string> delemans = new List<string>();
            var now = DateTime.Now.ToString("yyyyMMdd");

            var qApprover = new QueryField("ApproverLoginName", false);
            var qBeginOn = new QueryField("BeginOn", false);
            var qEndOn = new QueryField("EndOn", false);
            var qModules = new QueryField("Modules", false);
            CamlExpression exp = null;
            exp = WorkFlowUtil.LinkAnd(exp, qModules.Contains(moduleId));
            exp = WorkFlowUtil.LinkAnd(exp, qBeginOn.LessEqual(now));
            exp = WorkFlowUtil.LinkAnd(exp, qEndOn.MoreEqual(now));

            CamlExpression exp2 = null;
            foreach (string name in loginNames)
            {
                exp2 = WorkFlowUtil.LinkOr(exp2, qApprover.Equal(name));
            }

            exp = WorkFlowUtil.LinkAnd(exp, exp2);

            SPListItemCollection coll = null;

            SPSecurity.RunWithElevatedPrivileges(delegate
            {
                using (SPSite site = new SPSite(SPContext.Current.Site.ID))
                {
                    using (SPWeb web = site.OpenWeb(SPContext.Current.Web.ID))
                    {
                        coll = ListQuery.Select()
                            .From(web.Lists["Delegates"])
                            .Where(exp)
                            .GetItems();
                    }
                }
            });

            foreach (SPListItem item in coll)
            {
                // Need to check whether the delegate account is valid.
                if (UserProfileUtil.GetEmployeeEx(item["DelegateToLoginName"].ToString()) != null)
                {
                    delemans.Add(item["DelegateToLoginName"].ToString());
                }
            }

            return delemans;
        }
Ejemplo n.º 2
0
        internal static SPListItem GetClaimStdByLevel(int jobLevel, string type)
        {
            var qLowLevel = new QueryField("LowLevel", false);
            var qHighLevel = new QueryField("HighLevel", false);
            var qType = new QueryField("ExpenseType", false);
            CamlExpression exp = null;
            if (type.Equals("Mobile phone", System.StringComparison.CurrentCultureIgnoreCase))
            {
                exp = WorkFlowUtil.LinkAnd(exp, qLowLevel.LessEqual(jobLevel));
                exp = WorkFlowUtil.LinkAnd(exp, qHighLevel.MoreEqual(jobLevel));
            }
            exp = WorkFlowUtil.LinkAnd(exp, qType.MoreEqual(type));

            SPListItemCollection lc = ListQuery.Select()
                    .From(WorkFlowUtil.GetWorkflowList("ExpenseClaimStd"))
                    .Where(exp)
                    .GetItems();

            return lc.Count > 0 ? lc[0] : null;
        }