private bool IsDelegationNotApprovedYet(Delegation delegation, int currentUserInfoId, SPWeb web) { var isDelegationNotApprovedYet = false; string listUrl = delegation.ListUrl; int itemId = delegation.ListItemID; var queryString = $"<Where><Eq><FieldRef Name='ID'></FieldRef><Value Type='Integer'>{itemId.ToString(CultureInfo.InvariantCulture)}</Value></Eq></Where>"; SPList list = web.GetList(string.Format("{0}{1}", this.SiteUrl, listUrl)); var query = new SPQuery { Query = queryString }; var results = list.GetItems(query); if (results != null && results.Count > 0) { int fromEmployeeId = 0; var delegatedEmployee = DelegationManager.GetCurrentEmployeeProcessing(listUrl, results[0], web); if (delegatedEmployee != null) { fromEmployeeId = delegatedEmployee.LookupId; } if (fromEmployeeId > 0) { var isDelegation = DelegationPermissionManager.IsDelegation(fromEmployeeId, currentUserInfoId, listUrl, itemId, this.SiteUrl); if (isDelegation != null) { isDelegationNotApprovedYet = true; } } return(isDelegationNotApprovedYet); } return(false); }
/// <summary> /// When have new task, check assignee who has delegation or no. If have, insert into delegations list. /// </summary> /// <param name="properties">The SPItemEventProperties object.</param> private void UpdateDelegationOfNewTask(SPItemEventProperties properties) { string listUrl = properties.List.RootFolder.ServerRelativeUrl; int taskFromEmployeeId = 0; LookupItem currentEmployeeProcessing = DelegationManager.GetCurrentEmployeeProcessing(listUrl, properties.ListItem, properties.Web); if (currentEmployeeProcessing != null) { taskFromEmployeeId = currentEmployeeProcessing.LookupId; } if (taskFromEmployeeId > 0) { string webUrl = properties.WebUrl; var delegationOfNewTasks = DelegationPermissionManager.HasDelegationOfNewTasks(taskFromEmployeeId, listUrl, webUrl); if (delegationOfNewTasks != null) { foreach (var delegationOfNewTask in delegationOfNewTasks) { try { var delegationListItem = DelegationManager.GetDelegationListItem(listUrl, properties.ListItem, properties.Web); if (delegationListItem != null) { List <int> toEmployeeIds = delegationOfNewTask.ToEmployee.Select(e => e.LookupId).ToList(); bool isDelegationExisted = DelegationManager.IsDelegationExisted(taskFromEmployeeId, toEmployeeIds, listUrl, properties.ListItemId, delegationOfNewTask.FromDate, delegationOfNewTask.ToDate, properties.Web.Url); if (isDelegationExisted == true) { return; } delegationListItem.FromDate = delegationOfNewTask.FromDate; delegationListItem.ToDate = delegationOfNewTask.ToDate; delegationListItem.FromEmployee = delegationOfNewTask.FromEmployee; delegationListItem.ToEmployee = delegationOfNewTask.ToEmployee; StringBuilder toEmployeesBuilder = new StringBuilder(); foreach (var toEmployee in delegationListItem.ToEmployee) { toEmployeesBuilder.AppendFormat("{0}; ", toEmployee.LookupValue); } delegationListItem.Title = string.Format("{0} - {1}", delegationListItem.FromEmployee.LookupValue, toEmployeesBuilder.ToString()); var delegationsDAL = new DelegationsDAL(webUrl); int id = delegationsDAL.SaveItem(delegationListItem); if (id <= 0) { ULSLogging.LogError(new Exception("Updating for new delegation was unsuccessfully.")); } } } catch (Exception ex) { ULSLogging.LogError(ex); } } } } }