/// <summary>
        /// An item was updated.
        /// </summary>
        public override void ItemUpdated(SPItemEventProperties properties)
        {
            try
            {
                base.ItemUpdated(properties);

                var siteURL = properties.WebUrl;
                var vehicleManagementDAL = new VehicleManagementDAL(siteURL);
                var ItemID      = properties.ListItemId;
                var currentItem = vehicleManagementDAL.GetByID(ItemID);
                if (currentItem.ApprovalStatus == "Cancelled")
                {
                    taskManagementDAL = new TaskManagementDAL(siteURL);
                    var tasks = taskManagementDAL.GetByItemID(currentItem.ID, StepModuleList.VehicleManagement.ToString()).ToList();
                    foreach (var task in tasks)
                    {
                        task.TaskStatus = TaskStatusList.Deferred;
                    }
                    taskManagementDAL.SaveItems(tasks);
                }
            }
            catch (Exception ex)
            {
                ULSLogging.Log(new SPDiagnosticsCategory("STADA -  Transportation Event Receiver - ItemAdded fn",
                                                         TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected,
                               string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ex.Message, ex.StackTrace));
            }
        }
        public List <TaskManagementModel> GetTaskHistory(string Id, string fulldata)
        {
            int itemId            = 0;
            int allHistoricalData = 0;

            if (int.TryParse(Id, out itemId) == true && int.TryParse(fulldata, out allHistoricalData) == true)
            {
                TaskManagementDAL          _taskManagementDAL       = new TaskManagementDAL(SPContext.Current.Site.Url);
                List <TaskManagement>      taskManagementCollection = _taskManagementDAL.GetTaskHistory(itemId, StepModuleList.VehicleManagement.ToString(), allHistoricalData == 0 ? false : true);
                List <TaskManagementModel> ret = null;
                if (taskManagementCollection != null)
                {
                    ret = new List <TaskManagementModel>();
                    foreach (var taskManagement in taskManagementCollection)
                    {
                        ret.Add(new TaskManagementModel(taskManagement));
                    }
                }
                return(ret);
            }
            else
            {
                return(null);
            }
        }
Пример #3
0
        private void InitialViewGUID()
        {
            try
            {
                var url = SPContext.Current.Web.Url;
                taskManagementDAL = new TaskManagementDAL(url);

                var guidViews = taskManagementDAL.GetViewGuildID().Where(x => x.BaseViewID == baseViewID).FirstOrDefault();
                TaskApprovalControlWP.ViewGuid = guidViews.ID.ToString();
                XElement xmlViewDef   = XElement.Parse(TaskApprovalControlWP.XmlDefinition);
                XElement whereElement = xmlViewDef.Descendants("Where").FirstOrDefault();
                if (whereElement != null)
                {
                    if (whereElement.HasElements)
                    {
                        whereElement.RemoveNodes();
                    }
                    // whereElement.Add(BuildQueryString());
                    //TaskApprovalControlWP.XmlDefinition = xmlViewDef.ToString();
                    //SPContext.Current.Web.AllowUnsafeUpdates = true;
                    var module = Page.Request["AdminModule"];
                    if (module != null)
                    {
                        TaskApprovalControlWP.View.Query = string.Format(@"<Where>
                                            <And>   
                                                <In>
                                                    <FieldRef Name='AssignedTo' LookupId='TRUE' />
                                                    <Values>
                                                        <Value Type='Integer'>
                                                            <UserID />
                                                        </Value>
                                                    </Values>
                                                </In> 
                                                <And>
                                                    <Eq>
                                                        <FieldRef Name='StepModule' />
                                                        <Value Type='Choice'>{0}</Value>
                                                    </Eq>
                                                    <Eq>
                                                        <FieldRef Name='Status' />
                                                        <Value Type='Choice'>In Progress</Value>
                                                    </Eq>
                                                </And>
                                            </And>
                                        </Where>", module);
                    }
                }
            }
            catch (Exception ex)
            {
                ULSLogging.Log(new SPDiagnosticsCategory("STADA - Task Approval Control - InitData", TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected, string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ex.Message, ex.StackTrace));
            }
        }
Пример #4
0
        public MessageResult CancelBusinessTrip(string Id)
        {
            if (!string.IsNullOrEmpty(Id))
            {
                try
                {
                    Biz.Models.BusinessTripManagement businessTripManagement = _businessTripManagementDAL.GetByID(Convert.ToInt32(Id));
                    if (businessTripManagement.ID > 0)
                    {
                        string currentApprovalStatus = businessTripManagement.ApprovalStatus.ToLower();
                        if (businessTripManagement.CreatedBy.ID == businessTripManagement.ModifiedBy.ID && businessTripManagement.CreatedBy.ID == SPContext.Current.Web.CurrentUser.ID &&
                            (currentApprovalStatus != ApprovalStatus.Approved.ToLower() && currentApprovalStatus != ApprovalStatus.Cancelled.ToLower() && currentApprovalStatus != ApprovalStatus.Rejected.ToLower()))
                        {
                            TaskManagementDAL      _taskManagementDAL       = new TaskManagementDAL(SPContext.Current.Site.Url);
                            IList <TaskManagement> taskManagementCollection = _taskManagementDAL.GetRelatedTasks(businessTripManagement.ID, StepModuleList.BusinessTripManagement.ToString());
                            if (taskManagementCollection != null && taskManagementCollection.Count > 0)
                            {
                                _taskManagementDAL.CloseTasks(taskManagementCollection.ToList());
                            }

                            businessTripManagement.ApprovalStatus = StringConstant.ApprovalStatus.Cancelled;
                            _businessTripManagementDAL.SaveOrUpdate(SPContext.Current.Web, businessTripManagement);
                        }
                        else
                        {
                            return(new MessageResult {
                                Code = (int)BusinessTripErrorCode.CannotCancel, Message = MessageResultHelper.GetRequestStatusMessage(businessTripManagement.ApprovalStatus.ToLower()), ObjectId = 0
                            });
                        }
                    }
                }
                catch (Exception ex)
                {
                    return(new MessageResult {
                        Code = (int)BusinessTripErrorCode.Unexpected, Message = ex.Message, ObjectId = 0
                    });
                }
            }
            else
            {
                return(new MessageResult {
                    Code = (int)BusinessTripErrorCode.Unexpected, Message = "Cannot find the item", ObjectId = 0
                });
            }

            return(new MessageResult {
                Code = 0, Message = "Successful", ObjectId = 0
            });
        }
        private XElement BuildViewString(int assigneeId, string siteUrl)
        {
            XElement filterElement = null;
            string   filterStr     = "<Eq><FieldRef Name='ID' /><Value Type='Counter'>0</Value></Eq>";

            TaskManagementDAL     _taskManagementDAL       = new TaskManagementDAL(siteUrl);
            string                taskQueryStr             = string.Format(@"<Where>
                                  <And>
                                     <Eq>
                                        <FieldRef Name='Status' />
                                        <Value Type='Choice'>{0}</Value>
                                     </Eq>
                                     <And>
                                        <Eq>
                                            <FieldRef Name='StepModule' />
                                            <Value Type='Choice'>{1}</Value>
                                        </Eq>
                                        <Eq>
                                            <FieldRef Name='AssignedTo' LookupId='TRUE' />
                                            <Value Type='User'>{2}</Value>
                                        </Eq>
                                     </And>
                                  </And>
                               </Where>", TaskStatusList.InProgress.ToString(), StepModuleList.FreightManagement.ToString(), assigneeId);
            List <TaskManagement> taskManagementCollection = _taskManagementDAL.GetByQuery(taskQueryStr);

            if (taskManagementCollection != null && taskManagementCollection.Count > 0)
            {
                List <int> itemIds = taskManagementCollection.Where(t => t.ItemId > 0).Select(t => t.ItemId).ToList();

                if (itemIds != null && itemIds.Count > 0)
                {
                    filterStr = "";
                    foreach (var itemId in itemIds)
                    {
                        filterStr += string.Format("<Value Type='Counter'>{0}</Value>", itemId);
                    }
                    if (!string.IsNullOrEmpty(filterStr))
                    {
                        filterStr = string.Format("<In><FieldRef Name='ID'/><Values>{0}</Values></In>", filterStr);
                    }
                }
            }

            filterElement = XElement.Parse(filterStr);

            return(filterElement);
        }
        public bool HasApprovalPermission(string vehicleId)
        {
            string            siteUrl            = SPContext.Current.Site.Url;
            EmployeeInfoDAL   _employeeInfoDAL   = new EmployeeInfoDAL(siteUrl);
            TaskManagementDAL _taskManagementDAL = new TaskManagementDAL(siteUrl);
            EmployeeInfo      employeeInfo       = _employeeInfoDAL.GetByADAccount(SPContext.Current.Web.CurrentUser.ID);

            string taskQueryStr = string.Format(@"<Where>
                                  <And>
                                     <Eq>
                                        <FieldRef Name='Status' />
                                        <Value Type='Choice'>{0}</Value>
                                     </Eq>
                                     <And>
                                        <Eq>
                                            <FieldRef Name='StepModule' />
                                            <Value Type='Choice'>{1}</Value>
                                        </Eq>
                                         <And>
                                            <Eq>
                                                <FieldRef Name='AssignedTo' LookupId='TRUE' />
                                                <Value Type='User'>{2}</Value>
                                            </Eq>
                                            <Eq>
                                                <FieldRef Name='ItemId' />
                                                <Value Type='Number'>{3}</Value>
                                            </Eq>
                                         </And>
                                     </And>
                                  </And>
                               </Where>", TaskStatusList.InProgress.ToString(), StepModuleList.VehicleManagement.ToString(), employeeInfo.ADAccount.ID, vehicleId);
            List <TaskManagement> taskManagementCollection = _taskManagementDAL.GetByQuery(taskQueryStr);

            if (taskManagementCollection != null && taskManagementCollection.Count > 0)
            {
                return(true);
            }
            return(false);
        }
        public MessageResult ApproveVehicle(VehicleApprovalModel vehicleApprovalModel)
        {
            MessageResult msgResult = new MessageResult();

            try
            {
                SPWeb spWeb = SPContext.Current.Web;

                if (vehicleApprovalModel.Id > 0)
                {
                    Biz.Models.VehicleManagement vehicleManagement = _vehicleManagementDAL.GetByID(vehicleApprovalModel.Id);
                    string currentApprovalStatus = vehicleManagement.ApprovalStatus.ToLower();
                    if (currentApprovalStatus == ApprovalStatus.Approved.ToLower() || currentApprovalStatus == ApprovalStatus.Cancelled.ToLower() || currentApprovalStatus == ApprovalStatus.Rejected.ToLower())
                    {
                        return(new MessageResult {
                            Code = (int)VehicleErrorCode.CannotApprove, Message = MessageResultHelper.GetRequestStatusMessage(currentApprovalStatus), ObjectId = 0
                        });
                    }

                    string requestExpiredMsg = MessageResultHelper.GetRequestExpiredMessage(vehicleManagement.RequestDueDate);
                    if (!string.IsNullOrEmpty(requestExpiredMsg))
                    {
                        return(new MessageResult {
                            Code = (int)VehicleErrorCode.CannotApprove, Message = requestExpiredMsg, ObjectId = 0
                        });
                    }

                    bool            hasApprovalPermission = HasApprovalPermission(vehicleApprovalModel.Id.ToString());
                    DelegationModel delegationModel       = GetDelegatedTaskInfo(vehicleApprovalModel.Id.ToString());
                    bool            isDelegated           = (delegationModel != null && delegationModel.Requester.LookupId > 0) ? true : false;
                    if (hasApprovalPermission == false && isDelegated == false)
                    {
                        return(msgResult);
                    }

                    EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(spWeb.Url);
                    EmployeeInfo    approverInfo     = _employeeInfoDAL.GetByADAccount(spWeb.CurrentUser.ID);

                    int assigneeId = hasApprovalPermission == true ? approverInfo.ADAccount.ID : (isDelegated == true ? delegationModel.FromEmployee.ID : 0);

                    TaskManagementDAL      _taskManagementDAL       = new TaskManagementDAL(spWeb.Url);
                    IList <TaskManagement> taskManagementCollection = _taskManagementDAL.GetRelatedTasks(vehicleManagement.ID, StepModuleList.VehicleManagement.ToString());
                    if (taskManagementCollection != null && taskManagementCollection.Count > 0)
                    {
                        TaskManagement        taskOfOriginalAssignee = _taskManagementDAL.GetTaskByAssigneeId(taskManagementCollection, assigneeId);
                        List <TaskManagement> relatedTasks           = taskManagementCollection.Where(t => t.ID != taskOfOriginalAssignee.ID).ToList();
                        User nextAssignee = taskOfOriginalAssignee.NextAssign;

                        if (hasApprovalPermission == true)
                        {
                            taskOfOriginalAssignee.TaskStatus      = TaskStatusList.Completed.ToString();
                            taskOfOriginalAssignee.PercentComplete = 1;
                            taskOfOriginalAssignee.TaskOutcome     = TaskOutcome.Approved.ToString();
                            taskOfOriginalAssignee.Description     = vehicleApprovalModel.Comment;
                            _taskManagementDAL.CloseTasks(relatedTasks);
                            _taskManagementDAL.SaveItem(taskOfOriginalAssignee);
                        }
                        else if (isDelegated == true)
                        {
                            TaskManagement clonedTask = _taskManagementDAL.CloneTask(taskOfOriginalAssignee);
                            clonedTask.AssignedTo      = approverInfo.ADAccount;
                            clonedTask.TaskStatus      = TaskStatusList.Completed.ToString();
                            clonedTask.PercentComplete = 1;
                            clonedTask.TaskOutcome     = TaskOutcome.Approved.ToString();
                            clonedTask.Description     = vehicleApprovalModel.Comment;
                            relatedTasks.Add(taskOfOriginalAssignee);
                            _taskManagementDAL.CloseTasks(relatedTasks);
                            _taskManagementDAL.SaveItem(clonedTask);
                        }

                        if (!string.IsNullOrEmpty(vehicleApprovalModel.Comment))
                        {
                            vehicleManagement.CommonComment = vehicleManagement.CommonComment.BuildComment(string.Format("{0}: {1}", approverInfo.FullName, vehicleApprovalModel.Comment));
                        }

                        if (nextAssignee == null)
                        {
                            vehicleManagement.ApprovalStatus = StringConstant.ApprovalStatus.Approved.ToString();
                            _vehicleManagementDAL.SaveOrUpdate(spWeb, vehicleManagement);

                            EmailTemplateDAL _emailTemplateDAL = new EmailTemplateDAL(spWeb.Url);
                            EmailTemplate    emailTemplate     = _emailTemplateDAL.GetByKey("VehicleManagement_Approve");
                            EmployeeInfo     toUser            = _employeeInfoDAL.GetByID(vehicleManagement.Requester.LookupId);
                            _vehicleManagementDAL.SendEmail(vehicleManagement, emailTemplate, approverInfo, toUser, VehicleTypeOfEmail.Approve, spWeb.Url);
                        }
                        else if (nextAssignee != null && taskManagementCollection != null && taskManagementCollection.Count > 0)
                        {
                            _vehicleManagementDAL.RunWorkFlow(vehicleManagement, taskOfOriginalAssignee);

                            EmailTemplateDAL _emailTemplateDAL = new EmailTemplateDAL(spWeb.Url);
                            EmailTemplate    emailTemplate     = _emailTemplateDAL.GetByKey("VehicleManagement_Request");
                            EmployeeInfo     toUser            = _employeeInfoDAL.GetByADAccount(nextAssignee.ID);
                            _vehicleManagementDAL.SendEmail(vehicleManagement, emailTemplate, approverInfo, toUser, VehicleTypeOfEmail.Request, spWeb.Url);

                            try
                            {
                                List <EmployeeInfo> toUsers = DelegationPermissionManager.GetListOfDelegatedEmployees(toUser.ID, StringConstant.VehicleManagementList.ListUrl, vehicleManagement.ID);
                                _vehicleManagementDAL.SendDelegationEmail(vehicleManagement, emailTemplate, toUsers, spWeb.Url);
                            }
                            catch { }
                        }
                    }
                }
            }
            catch (Exception ex)
            {
                msgResult.Code    = (int)VehicleErrorCode.Unexpected;
                msgResult.Message = ex.Message;
            }

            return(msgResult);
        }
        public DelegationModel GetDelegatedTaskInfo(string Id)
        {
            DelegationModel delegationModel = new DelegationModel();

            int listItemId = 0;

            if (int.TryParse(Id, out listItemId))
            {
                string[] viewFields = new string[] { StringConstant.VehicleManagementList.DH, StringConstant.VehicleManagementList.BOD,
                                                     StringConstant.CommonSPListField.ApprovalStatusField, StringConstant.CommonSPListField.CommonDepartmentField };
                string queryStr = $@"<Where>
                                      <Eq>
                                         <FieldRef Name='ID' />
                                         <Value Type='Counter'>{listItemId}</Value>
                                      </Eq>
                                   </Where>";
                string siteUrl  = SPContext.Current.Site.Url;
                List <Biz.Models.VehicleManagement> vehicleManagementCollection = _vehicleManagementDAL.GetByQuery(queryStr, viewFields);
                if (vehicleManagementCollection != null && vehicleManagementCollection.Count > 0)
                {
                    Biz.Models.VehicleManagement vehicleManagement  = vehicleManagementCollection[0];
                    StepManagementDAL            _stepManagementDAL = new StepManagementDAL(siteUrl);
                    var currentStep = _stepManagementDAL.GetStepManagement(vehicleManagement.ApprovalStatus, StepModuleList.VehicleManagement, vehicleManagement.CommonDepartment.LookupId);
                    if (currentStep != null)
                    {
                        TaskManagementDAL     _taskManagementDAL       = new TaskManagementDAL(siteUrl);
                        string                taskQueryStr             = string.Format(@"<Where>
                                  <And>
                                     <Eq>
                                        <FieldRef Name='Status' />
                                        <Value Type='Choice'>{0}</Value>
                                     </Eq>
                                     <And>
                                        <Eq>
                                            <FieldRef Name='StepModule' />
                                            <Value Type='Choice'>{1}</Value>
                                        </Eq>
                                         <And>
                                            <Eq>
                                                <FieldRef Name='CurrentStepStatus' />
                                                <Value Type='Choice'>{2}</Value>
                                            </Eq>
                                            <Eq>
                                                <FieldRef Name='ItemId' />
                                                <Value Type='Number'>{3}</Value>
                                            </Eq>
                                         </And>
                                     </And>
                                  </And>
                               </Where>", TaskStatusList.InProgress.ToString(), StepModuleList.VehicleManagement.ToString(), vehicleManagement.ApprovalStatus, vehicleManagement.ID);
                        List <TaskManagement> taskManagementCollection = _taskManagementDAL.GetByQuery(taskQueryStr);
                        if (taskManagementCollection != null)
                        {
                            EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(siteUrl);
                            foreach (var taskManagement in taskManagementCollection)
                            {
                                EmployeeInfo assigneeInfo = _employeeInfoDAL.GetByADAccount(taskManagement.AssignedTo.ID);
                                Delegation   delegation   = DelegationPermissionManager.IsDelegation(assigneeInfo.ID, StringConstant.VehicleManagementList.ListUrl, vehicleManagement.ID);
                                delegationModel = new DelegationModel(delegation);
                                if (delegationModel.Requester.LookupId > 0)
                                {
                                    break;
                                }
                            }
                        }
                    }
                }
            }

            return(delegationModel);
        }
        public override void ItemAdded(SPItemEventProperties properties)
        {
            try
            {
                base.ItemAdded(properties);

                var siteURL = properties.WebUrl;
                var vehicleManagementDAL = new VehicleManagementDAL(siteURL);
                var ItemID      = properties.ListItemId;
                var currentItem = vehicleManagementDAL.GetByID(ItemID);

                taskManagementDAL = new TaskManagementDAL(siteURL);
                TaskManagement taskManagement = new TaskManagement();
                taskManagement.StartDate       = DateTime.Now;
                taskManagement.DueDate         = currentItem.RequestDueDate;
                taskManagement.PercentComplete = 0;
                taskManagement.ItemId          = currentItem.ID;
                taskManagement.ItemURL         = properties.List.DefaultDisplayFormUrl + "?ID=" + properties.ListItemId;
                taskManagement.ListURL         = properties.List.DefaultViewUrl;
                taskManagement.TaskName        = TASK_NAME;
                taskManagement.TaskStatus      = TaskStatusList.InProgress;
                taskManagement.StepModule      = StepModuleList.VehicleManagement.ToString();
                taskManagement.Department      = currentItem.CommonDepartment;
                taskManagement.AssignedTo      = currentItem.DepartmentHead;

                employeeInfoDAL = new EmployeeInfoDAL(siteURL);
                EmployeeInfo requesterInfo = employeeInfoDAL.GetByID(currentItem.Requester.LookupId);

                if ((int)Convert.ToDouble(requesterInfo.EmployeeLevel.LookupValue, CultureInfo.InvariantCulture.NumberFormat) == (int)StringConstant.EmployeeLevel.DepartmentHead)
                {
                    taskManagement.StepStatus = StepStatusList.BODApproval;
                }
                else
                {
                    taskManagement.StepStatus = StepStatusList.DHApproval;
                }

                DepartmentDAL _departmentDAL = new DepartmentDAL(siteURL);
                Department    departmentHR   = _departmentDAL.GetByCode("HR");
                if (departmentHR.ID == currentItem.CommonDepartment.LookupId)
                {
                    taskManagement.NextAssign = null;
                }
                else
                {
                    EmployeeInfo deptHeadOfHR = employeeInfoDAL.GetByPositionDepartment(StringConstant.EmployeePosition.DepartmentHead, requesterInfo.FactoryLocation.LookupId, departmentHR.ID).FirstOrDefault();
                    if (deptHeadOfHR != null)
                    {
                        taskManagement.NextAssign = deptHeadOfHR.ADAccount;
                    }
                }

                taskManagementDAL.SaveItem(taskManagement);

                var          mailDAL       = new EmailTemplateDAL(siteURL);
                var          emailTemplate = mailDAL.GetByKey("VehicleManagement_Request");
                EmployeeInfo assigneeInfo  = employeeInfoDAL.GetByADAccount(taskManagement.AssignedTo.ID);
                currentItem.ApprovalStatus = taskManagement.StepStatus;

                vehicleManagementDAL.SaveOrUpdate(currentItem);

                vehicleManagementDAL.SendEmail(currentItem, emailTemplate, null, assigneeInfo, VehicleTypeOfEmail.Request, siteURL);

                try
                {
                    List <EmployeeInfo> toUsers = DelegationPermissionManager.GetListOfDelegatedEmployees(siteURL, assigneeInfo.ID, StringConstant.VehicleManagementList.ListUrl, currentItem.ID);
                    vehicleManagementDAL.SendDelegationEmail(currentItem, emailTemplate, toUsers, siteURL);
                }
                catch { }
            }
            catch (Exception ex)
            {
                ULSLogging.Log(new SPDiagnosticsCategory("STADA -  Transportation Event Receiver - ItemAdded fn",
                                                         TraceSeverity.Unexpected, EventSeverity.Error), TraceSeverity.Unexpected,
                               string.Format(CultureInfo.InvariantCulture, "{0}:{1}", ex.Message, ex.StackTrace));
            }
        }
Пример #10
0
        public MessageResult RejectBusinessTrip(BusinessTripManagementModel businessTripManagementModel)
        {
            MessageResult msgResult = new MessageResult();

            try
            {
                SPWeb spWeb = SPContext.Current.Web;

                if (businessTripManagementModel.Id > 0)
                {
                    Biz.Models.BusinessTripManagement businessTripManagement = _businessTripManagementDAL.GetByID(businessTripManagementModel.Id);
                    string currentApprovalStatus = businessTripManagement.ApprovalStatus.ToLower();
                    if (currentApprovalStatus == ApprovalStatus.Approved.ToLower() || currentApprovalStatus == ApprovalStatus.Cancelled.ToLower() || currentApprovalStatus == ApprovalStatus.Rejected.ToLower())
                    {
                        return(new MessageResult {
                            Code = (int)BusinessTripErrorCode.CannotReject, Message = MessageResultHelper.GetRequestStatusMessage(currentApprovalStatus), ObjectId = 0
                        });
                    }

                    string requestExpiredMsg = MessageResultHelper.GetRequestExpiredMessage(businessTripManagement.RequestDueDate);
                    if (!string.IsNullOrEmpty(requestExpiredMsg))
                    {
                        return(new MessageResult {
                            Code = (int)BusinessTripErrorCode.CannotReject, Message = requestExpiredMsg, ObjectId = 0
                        });
                    }

                    bool            hasApprovalPermission = HasApprovalPermission(businessTripManagementModel.Id.ToString());
                    DelegationModel delegationModel       = GetDelegatedTaskInfo(businessTripManagementModel.Id.ToString());
                    bool            isDelegated           = (delegationModel != null && delegationModel.Requester.LookupId > 0) ? true : false;
                    if (hasApprovalPermission == false && isDelegated == false)
                    {
                        return(msgResult);
                    }

                    EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(spWeb.Url);
                    EmployeeInfo    approverInfo     = _employeeInfoDAL.GetByADAccount(spWeb.CurrentUser.ID);

                    int assigneeId = hasApprovalPermission == true ? approverInfo.ADAccount.ID : (isDelegated == true ? delegationModel.FromEmployee.ID : 0);

                    TaskManagementDAL      _taskManagementDAL       = new TaskManagementDAL(spWeb.Url);
                    IList <TaskManagement> taskManagementCollection = _taskManagementDAL.GetRelatedTasks(businessTripManagement.ID, StepModuleList.BusinessTripManagement.ToString());
                    if (taskManagementCollection != null && taskManagementCollection.Count > 0)
                    {
                        TaskManagement        taskOfOriginalAssignee = _taskManagementDAL.GetTaskByAssigneeId(taskManagementCollection, assigneeId);
                        List <TaskManagement> relatedTasks           = taskManagementCollection.Where(t => t.ID != taskOfOriginalAssignee.ID).ToList();

                        if (hasApprovalPermission == true)
                        {
                            taskOfOriginalAssignee.TaskStatus      = TaskStatusList.Completed.ToString();
                            taskOfOriginalAssignee.PercentComplete = 1;
                            taskOfOriginalAssignee.TaskOutcome     = TaskOutcome.Rejected.ToString();
                            taskOfOriginalAssignee.Description     = businessTripManagementModel.Comment;
                            _taskManagementDAL.CloseTasks(relatedTasks);
                            _taskManagementDAL.SaveItem(taskOfOriginalAssignee);
                        }
                        else if (isDelegated == true)
                        {
                            TaskManagement clonedTask = _taskManagementDAL.CloneTask(taskOfOriginalAssignee);
                            clonedTask.AssignedTo      = approverInfo.ADAccount;
                            clonedTask.TaskStatus      = TaskStatusList.Completed.ToString();
                            clonedTask.PercentComplete = 1;
                            clonedTask.TaskOutcome     = TaskOutcome.Rejected.ToString();
                            clonedTask.Description     = businessTripManagementModel.Comment;
                            relatedTasks.Add(taskOfOriginalAssignee);
                            _taskManagementDAL.CloseTasks(relatedTasks);
                            _taskManagementDAL.SaveItem(clonedTask);
                        }
                    }

                    if (!string.IsNullOrEmpty(businessTripManagementModel.Comment))
                    {
                        businessTripManagement.Comment = businessTripManagement.Comment.BuildComment(string.Format("{0}: {1}", approverInfo.FullName, businessTripManagementModel.Comment));
                    }

                    businessTripManagement.ApprovalStatus = ApprovalStatus.Rejected.ToString();
                    _businessTripManagementDAL.SaveOrUpdate(spWeb, businessTripManagement);

                    EmailTemplateDAL _emailTemplateDAL = new EmailTemplateDAL(spWeb.Url);
                    EmailTemplate    emailTemplate     = _emailTemplateDAL.GetByKey("BusinessTripManagement_Reject");
                    EmployeeInfo     toUser            = _employeeInfoDAL.GetByID(businessTripManagement.Requester.LookupId);
                    _businessTripManagementDAL.SendEmail(businessTripManagement, emailTemplate, approverInfo, toUser, spWeb.Url, false);
                }
            }
            catch (Exception ex)
            {
                msgResult.Code    = (int)BusinessTripErrorCode.Unexpected;
                msgResult.Message = ex.Message;
            }

            return(msgResult);
        }
Пример #11
0
 public FilterTaskManager(string siteUrl)
 {
     _taskManagementDAL = new TaskManagementDAL(siteUrl);
     _workFlowHistory   = new WorkflowHistoryDAL(siteUrl);
 }