/// <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); } } } } }
/// <summary> /// GetSelectedDelegationTasks /// </summary> /// <returns></returns> private List <Delegation> GetSelectedDelegationTasks() { var res = new List <Delegation>(); var delegationTasks = this.Page.Session[DelegationTasksSessionKey] as List <Delegation>; if (delegationTasks != null && delegationTasks.Count > 0) { string title = string.Format("{0} - {1}", this.ddlFromEmployee.SelectedItem.Text, this.ddlToEmployee.SelectedItem.Text); DateTime fromDate = this.dtFromDate.SelectedDate.Date; DateTime toDate = this.dtToDate.SelectedDate.Date; LookupItem fromEmployee = new LookupItem { LookupId = int.Parse(this.ddlFromEmployee.SelectedItem.Value), LookupValue = this.ddlFromEmployee.SelectedItem.Text }; List <LookupItem> toEmployees = new List <LookupItem>(); JavaScriptSerializer seriallizer = new JavaScriptSerializer(); var selectedToEmployees = seriallizer.Deserialize <List <int> >(this.hdSelectedToEmployees.Value); foreach (var toEmployee in selectedToEmployees) { LookupItem lookupItem = new LookupItem(); lookupItem.LookupId = toEmployee; toEmployees.Add(lookupItem); } foreach (GridViewRow gridViewRow in this.gridTasks.Rows) { if (gridViewRow.RowType == DataControlRowType.DataRow) { var cbSelect = gridViewRow.FindControl("cbSelect") as CheckBox; if (cbSelect.Checked) { Delegation delegation = delegationTasks[gridViewRow.RowIndex]; delegation.Title = title; delegation.FromDate = fromDate; delegation.ToDate = toDate; delegation.FromEmployee = fromEmployee; delegation.ToEmployee = toEmployees; var isExisted = DelegationManager.IsDelegationExisted(delegation, this.SiteUrl); if (!isExisted) { res.Add(delegation); } } } } } return(res); }