Exemple #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.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);
        }