public Delegation GetDelegatedTaskInfo(string Id) { Delegation delegation = new Delegation(null); int listItemId = 0; if (int.TryParse(Id, out listItemId)) { string[] viewFields = new string[] { StringConstant.ChangeShiftList.DHField, StringConstant.CommonSPListField.ApprovalStatusField, StringConstant.CommonSPListField.CommonDepartmentField }; string queryStr = $@"<Where> <Eq> <FieldRef Name='ID' /> <Value Type='Counter'>{listItemId}</Value> </Eq> </Where>"; List <Biz.Models.ChangeShiftManagement> changeShiftManagementCollection = this.GetByQuery(queryStr, viewFields); if (changeShiftManagementCollection != null && changeShiftManagementCollection.Count > 0) { Biz.Models.ChangeShiftManagement changeShiftManagement = changeShiftManagementCollection[0]; EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(this.SiteUrl); EmployeeInfo currentApprover = _employeeInfoDAL.GetByADAccount(changeShiftManagement.DepartmentHead.ID); if (currentApprover != null) { delegation = DelegationPermissionManager.IsDelegation(currentApprover.ID, StringConstant.ChangeShiftList.ListUrl, changeShiftManagement.ID); } } } return(delegation); }
public MessageResult Approve(ChangeShiftApprovalModel changeShiftApprovalModel) { MessageResult msgResult = new MessageResult(); try { SPWeb spWeb = SPContext.Current.Web; if (changeShiftApprovalModel.Id > 0) { Biz.Models.ChangeShiftManagement changeShiftManagement = _changeShiftManagementDAL.GetByID(changeShiftApprovalModel.Id); string currentApprovalStatus = !string.IsNullOrEmpty(changeShiftManagement.ApprovalStatus) ? changeShiftManagement.ApprovalStatus.ToLower() : string.Empty; if (currentApprovalStatus == ApprovalStatus.Approved.ToLower() || currentApprovalStatus == ApprovalStatus.Cancelled.ToLower() || currentApprovalStatus == ApprovalStatus.Rejected.ToLower()) { return(new MessageResult { Code = (int)ChangeShiftErrorCode.CannotApprove, Message = MessageResultHelper.GetRequestStatusMessage(currentApprovalStatus), ObjectId = 0 }); } string requestExpiredMsg = MessageResultHelper.GetRequestExpiredMessage(changeShiftManagement.RequestDueDate); if (!string.IsNullOrEmpty(requestExpiredMsg)) { return(new MessageResult { Code = (int)BusinessTripErrorCode.CannotApprove, Message = requestExpiredMsg, ObjectId = 0 }); } bool hasApprovalPermission = false; EmployeeInfoDAL _employeeInfoDAL = new EmployeeInfoDAL(spWeb.Url); int approverId = changeShiftApprovalModel.ApproverId; approverId = approverId > 0 ? approverId : changeShiftManagement.DepartmentHead.ID; EmployeeInfo currentApprover = _employeeInfoDAL.GetByADAccount(approverId); if (currentApprover != null) { if (currentApprover.ADAccount.ID == spWeb.CurrentUser.ID) { hasApprovalPermission = true; } else { Delegation delegation = DelegationPermissionManager.IsDelegation(currentApprover.ID, StringConstant.ChangeShiftList.ListUrl, changeShiftManagement.ID); if (delegation != null) { hasApprovalPermission = true; } } } if (hasApprovalPermission == true) { changeShiftManagement.ApprovalStatus = ApprovalStatus.Approved; changeShiftManagement.Comment = changeShiftApprovalModel.Comment; var approver = spWeb.AllUsers.GetByID(approverId); changeShiftManagement.DepartmentHead = new User { UserName = approver.LoginName, FullName = approver.Name }; _changeShiftManagementDAL.SaveItem(changeShiftManagement); // Send approval email to employee SendEmail(spWeb.Url, changeShiftApprovalModel.Id, "ChangeShift_Approve", changeShiftApprovalModel.ApproverName); } } } catch (Exception ex) { msgResult.Code = (int)ChangeShiftErrorCode.Unexpected; msgResult.Message = ex.Message; } return(msgResult); }