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