/* * 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; }
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; }