コード例 #1
0
ファイル: DelegationsDAL.cs プロジェクト: nmtri1987/stadavn
        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);
        }
コード例 #2
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);
                        }
                    }
                }
            }
        }