/// <summary>
        /// InitDelegationOfNewTask
        /// </summary>
        /// <param name="listUrl">The listUrl.</param>
        /// <returns></returns>
        private DelegationOfNewTask InitDelegationOfNewTask(string listUrl)
        {
            DelegationOfNewTask delegationOfNewTask = new DelegationOfNewTask();

            delegationOfNewTask.Title    = string.Format("{0} - {1}", this.ddlFromEmployee.SelectedItem.Text, this.ddlToEmployee.SelectedItem.Text);
            delegationOfNewTask.FromDate = this.dtFromDate.SelectedDate.Date;
            delegationOfNewTask.ToDate   = this.dtToDate.SelectedDate.Date;
            DelegationModule delegationModule = this.delegationModulesDAL.GetByListUrl(listUrl);

            if (delegationModule != null)
            {
                delegationOfNewTask.ModuleName           = delegationModule.ModuleName;
                delegationOfNewTask.VietnameseModuleName = delegationModule.VietnameseModuleName;
                delegationOfNewTask.ListUrl = delegationModule.ListUrl;
            }
            delegationOfNewTask.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);
            }
            delegationOfNewTask.ToEmployee = toEmployees;

            return(delegationOfNewTask);
        }
        /// <summary>
        /// To check current employee who is delegated to process for new task.
        /// </summary>
        /// <param name="fromEmployeeId"></param>
        /// <param name="listUrl">The url of list object. For example: /Lists/Requests, /Lists/Recruitments</param>
        /// <returns>If return not null value, this task is delegated for current employee. Otherwise return null value.</returns>
        public static DelegationOfNewTask IsDelegationOfNewTask(int fromEmployeeId, string listUrl)
        {
            DelegationOfNewTask delegationOfNewTask = null;

            string siteUrl = string.Empty;

            if (SPContext.Current != null)
            {
                siteUrl = SPContext.Current.Web.Url;
            }
            if (!string.IsNullOrEmpty(siteUrl))
            {
                int          toEmployeeId        = 0;
                EmployeeInfo currentEmployeeInfo = GetCurrentEmployeeInfo(siteUrl);
                if (currentEmployeeInfo != null)
                {
                    toEmployeeId = currentEmployeeInfo.ID;
                }

                if (toEmployeeId > 0)
                {
                    delegationOfNewTask = IsDelegationOfNewTask(fromEmployeeId, toEmployeeId, listUrl, siteUrl);
                }
            }

            return(delegationOfNewTask);
        }
        /// <summary>
        /// To check employee who is delegated to process for new task.
        /// </summary>
        /// <param name="fromEmployeeId">The employ id who is processing for this task.</param>
        /// <param name="toEmployeeId"></param>
        /// <param name="listUrl">The url of list object. For example: /Lists/Requests, /Lists/Recruitments</param>
        /// <param name="itemId">The id of SPListItem (task).</param>
        /// <param name="siteUrl">The current site url.</param>
        /// <returns></returns>
        public static DelegationOfNewTask IsDelegationOfNewTask(int fromEmployeeId, int toEmployeeId, string listUrl, string siteUrl)
        {
            DelegationOfNewTask res = null;

            if (delegationsOfNewTaskDAL == null)
            {
                delegationsOfNewTaskDAL = new DelegationsOfNewTaskDAL(siteUrl);
            }

            string  queryString = $@"<Where>
                                        <And>
                                            <Leq>
                                                <FieldRef Name='{StringConstant.DelegationsOfNewTaskList.Fields.FromDate}' />
                                                <Value IncludeTimeValue='FALSE' Type='DateTime'>{DateTime.Today.Date.ToString(StringConstant.DateFormatForCAML)}</Value>
                                            </Leq>
                                            <And>
                                                <Geq>
                                                    <FieldRef Name='{StringConstant.DelegationsOfNewTaskList.Fields.ToDate}' />
                                                    <Value IncludeTimeValue='FALSE' Type='DateTime'>{DateTime.Today.Date.ToString(StringConstant.DateFormatForCAML)}</Value>
                                                </Geq>
                                                <And>
                                                    <Eq>
                                                        <FieldRef Name='{StringConstant.DelegationsOfNewTaskList.Fields.FromEmployee}' LookupId='TRUE'/>
                                                        <Value Type='Lookup'>{fromEmployeeId}</Value>
                                                    </Eq>
                                                        <And>
                                                            <Eq>
                                                                <FieldRef Name='{StringConstant.DelegationsOfNewTaskList.Fields.ToEmployee}' LookupId='TRUE'/>
                                                                <Value Type='Lookup'>{toEmployeeId}</Value>
                                                            </Eq>
                                                            <Eq>
                                                                <FieldRef Name='{StringConstant.DelegationsOfNewTaskList.Fields.ListUrl}' />
                                                                <Value Type='Text'>{listUrl}</Value>
                                                            </Eq>
                                                        </And>
                                                </And>
                                            </And>
                                        </And>
                                    </Where>";
            SPQuery query       = new SPQuery {
                Query = queryString, RowLimit = 1
            };
            var delegationsOfNewTask = delegationsOfNewTaskDAL.GetByQuery(query);

            if (delegationsOfNewTask != null && delegationsOfNewTask.Count > 0)
            {
                res = delegationsOfNewTask[0];
            }

            return(res);
        }
Exemplo n.º 4
0
        public static bool IsDelegationOfNewTaskExisted(DelegationOfNewTask delegationOfNewTask, string siteUrl)
        {
            var result = false;

            List <int> toEmployeeIds = new List <int>();

            foreach (var toEmployee in delegationOfNewTask.ToEmployee)
            {
                toEmployeeIds.Add(toEmployee.LookupId);
            }
            result = IsDelegationOfNewTaskExisted(delegationOfNewTask.FromEmployee.LookupId, toEmployeeIds, delegationOfNewTask.ListUrl, delegationOfNewTask.FromDate, delegationOfNewTask.ToDate, siteUrl);

            return(result);
        }
        private void BtnDelegate_Click(object sender, EventArgs e)
        {
            try
            {
                if (this.IsValid)
                {
                    var savedDelegationsOfNewTasks   = false;
                    var savedDelectedDelegationTasks = false;
                    //if (this.cbDelegationNewTask.Checked)
                    var isDelegationOfNewTaskChecked = true;
                    if (isDelegationOfNewTaskChecked)
                    {
                        List <DelegationOfNewTask> delegationOfNewTaskEntities = new List <DelegationOfNewTask>();

                        JavaScriptSerializer seriallizer = new JavaScriptSerializer();
                        var selectedModules = seriallizer.Deserialize <List <string> >(this.hdSelectedModules.Value);
                        // Select all modules
                        if (selectedModules != null && selectedModules.Count > 0)
                        {
                            foreach (var listUrl in selectedModules)
                            {
                                if (!string.IsNullOrEmpty(listUrl))
                                {
                                    DelegationOfNewTask delegationOfNewTask = InitDelegationOfNewTask(listUrl);
                                    var isExisted = DelegationManager.IsDelegationOfNewTaskExisted(delegationOfNewTask, this.SiteUrl);
                                    if (!isExisted)
                                    {
                                        delegationOfNewTaskEntities.Add(delegationOfNewTask);
                                    }
                                }
                            }
                        }

                        if (delegationOfNewTaskEntities.Count > 0)
                        {
                            savedDelegationsOfNewTasks = this.delegationsOfNewTaskDAL.SaveItems(delegationOfNewTaskEntities);
                        }
                        else
                        {
                            savedDelegationsOfNewTasks = true;
                        }
                    }

                    if (this.selectedDelegationTasks != null && this.selectedDelegationTasks.Count > 0)
                    {
                        savedDelectedDelegationTasks = this.delegationsDAL.SaveItems(selectedDelegationTasks);
                    }
                    else
                    {
                        savedDelectedDelegationTasks = true;
                    }

                    if (savedDelegationsOfNewTasks && savedDelectedDelegationTasks)
                    {
                        SendEmail();
                        CloseForm(sender);
                    }
                    else
                    {
                        // TODO: Continue show error message.
                    }
                }
            }
            catch (Exception ex)
            {
                this.hdErrorMessage.Value = ex.Message;
                ULSLogging.LogError(ex);
            }
        }