Пример #1
0
        public Delegation GetDelegatedTaskInfo(string Id)
        {
            Delegation delegation = new Delegation(null);

            int listItemId = 0;

            if (int.TryParse(Id, out listItemId))
            {
                string[] viewFields = new string[] { StringConstant.NotOvertimeList.DHField, 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.NotOvertimeManagement> notOvertimeManagementCollection = this.GetByQuery(queryStr, viewFields);
                if (notOvertimeManagementCollection != null && notOvertimeManagementCollection.Count > 0)
                {
                    Biz.Models.NotOvertimeManagement notOvertimeManagement = notOvertimeManagementCollection[0];

                    EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(siteUrl);
                    EmployeeInfo    currentApprover  = _employeeInfoDAL.GetByADAccount(notOvertimeManagement.DH.ID);
                    if (currentApprover != null)
                    {
                        delegation = DelegationPermissionManager.IsDelegation(currentApprover.ID, StringConstant.NotOvertimeList.ListUrl, notOvertimeManagement.ID);
                    }
                }
            }

            return(delegation);
        }
        public MessageResult Reject(NotOverTimeApprovalModel notOverTimeApprovalModel)
        {
            MessageResult msgResult = new MessageResult();

            try
            {
                SPWeb spWeb = SPContext.Current.Web;

                if (notOverTimeApprovalModel.Id > 0)
                {
                    Biz.Models.NotOvertimeManagement notOvertimeManagement = _notOvertimeManagementDAL.GetByID(notOverTimeApprovalModel.Id);
                    string currentApprovalStatus = !string.IsNullOrEmpty(notOvertimeManagement.ApprovalStatus) ? notOvertimeManagement.ApprovalStatus.ToLower() : string.Empty;
                    if (currentApprovalStatus == ApprovalStatus.Approved.ToLower() || currentApprovalStatus == ApprovalStatus.Cancelled.ToLower() || currentApprovalStatus == ApprovalStatus.Rejected.ToLower())
                    {
                        return new MessageResult { Code = (int)NotOverTimeErrorCode.CannotReject, Message = MessageResultHelper.GetRequestStatusMessage(currentApprovalStatus), ObjectId = 0 };
                    }

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

                    bool hasRejectPermission = false;
                    EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(spWeb.Url);
                    int approverId = notOverTimeApprovalModel.ApproverId;
                    approverId = approverId > 0 ? approverId : notOvertimeManagement.DH.ID;
                    EmployeeInfo currentApprover = _employeeInfoDAL.GetByADAccount(approverId);
                    if (currentApprover != null)
                    {
                        if (currentApprover.ADAccount.ID == spWeb.CurrentUser.ID)
                        {
                            hasRejectPermission = true;
                        }
                        else
                        {
                            Delegation delegation = DelegationPermissionManager.IsDelegation(currentApprover.ID, StringConstant.NotOvertimeList.ListUrl, notOvertimeManagement.ID);
                            if (delegation != null)
                            {
                                hasRejectPermission = true;
                            }
                        }
                    }

                    if (hasRejectPermission == true)
                    {
                        notOvertimeManagement.ApprovalStatus = ApprovalStatus.Rejected;
                        notOvertimeManagement.Comment = notOverTimeApprovalModel.Comment;
                        var approver = spWeb.AllUsers.GetByID(approverId);
                        notOvertimeManagement.DH = new User
                        {
                            UserName = approver.LoginName,
                            FullName = approver.Name
                        };
                        _notOvertimeManagementDAL.SaveItem(notOvertimeManagement);

                        // Send reject email to employee
                        SendEmail(spWeb.Url, notOverTimeApprovalModel.Id, "LOAbsence_Reject", notOverTimeApprovalModel.ApproverName);
                    }
                }
            }
            catch (Exception ex)
            {
                msgResult.Code = (int)NotOverTimeErrorCode.Unexpected;
                msgResult.Message = ex.Message;
            }

            return msgResult;
        }