/// <summary>
        ///
        /// </summary>
        public void Excute()
        {
            List <LeaveRequestItem> items = new List <LeaveRequestItem>();

            items.Add(_LeaveRequestItem);

            if (_LeaveRequestItem.Status.Id == RequestStatus.ApprovePass.Id)
            {
                new DeleteVacationByLeaveReuqest(_LeaveRequest.Account.Id, items, _LeaveRequest.LeaveRequestType).
                Excute();
                return;
            }
            List <LeaveRequestFlow> leaveRequestFlows =
                _DalLeaveRequestFlow.GetLeaveRequestFlowByLeaveRequestItemID(_LeaveRequestItem.LeaveRequestItemID);

            if (RequestUtility.IsItemFlowContainStatus(leaveRequestFlows, RequestStatus.ApprovePass))
            {
                if (_LeaveRequestItem.Status.Id == RequestStatus.ApproveCancelPass.Id &&
                    !RequestUtility.IsItemFlowContainStatus(leaveRequestFlows, RequestStatus.ApproveCancelPass))
                {
                    new AddVacationByLeaveReuqest(items).Excute();
                    return;
                }
            }
            else
            {
                if (_LeaveRequestItem.Status.Id == RequestStatus.ApproveCancelFail.Id)
                {
                    new DeleteVacationByLeaveReuqest(_LeaveRequest.Account.Id, items, _LeaveRequest.LeaveRequestType)
                    .Excute();
                    return;
                }
                if (_LeaveRequestItem.Status.Id == RequestStatus.ApproveCancelPass.Id
                    &&
                    RequestUtility.IsItemFlowContainStatus(leaveRequestFlows,
                                                           RequestStatus.ApproveCancelFail))
                {
                    new AddVacationByLeaveReuqest(items).Excute();
                    return;
                }
            }
        }
Exemplo n.º 2
0
        /// <summary>
        /// 提交—>通过(扣)—>取消—>通过取消(返还)—>再编辑(不动)
        /// 提交—>通过(扣)—>取消—>拒绝取消(不动)—>再编辑(返还)
        /// 提交—>通过(扣)—>取消—>再编辑(返还)
        /// 提交—>通过(扣)—>再编辑(返还)
        /// 提交—>不通过(不动)—>再编辑(不动)
        /// 提交—>再编辑(不动)
        /// 提交—>取消—>通过取消(不动)—>再编辑(不动)
        /// 提交—>取消—>拒绝取消(扣)—>再编辑(返还)
        /// </summary>
        public void Excute()
        {
            if (_LeaveRequestItem.Status.Id == RequestStatus.ApprovePass.Id)
            {
                new DeleteAdjustRestByLeaveRequest(_LeaveRequestItem, _AccountID, _LeaveRequestID).Excute();
                return;
            }
            List <LeaveRequestFlow> leaveRequestFlows =
                _DalLeaveRequestFlow.GetLeaveRequestFlowByLeaveRequestItemID(_LeaveRequestItem.LeaveRequestItemID);

            if (RequestUtility.IsItemFlowContainStatus(leaveRequestFlows, RequestStatus.ApprovePass))
            {
                if (_LeaveRequestItem.Status.Id == RequestStatus.ApproveCancelPass.Id &&
                    !RequestUtility.IsItemFlowContainStatus(leaveRequestFlows, RequestStatus.ApproveCancelPass))
                {
                    new RestoreAdjustRestByLeaveRequest(_LeaveRequestItem, _AccountID, _LeaveRequestID).Excute();
                    return;
                }
            }
            else
            {
                if (_LeaveRequestItem.Status.Id == RequestStatus.ApproveCancelFail.Id)
                {
                    new DeleteAdjustRestByLeaveRequest(_LeaveRequestItem, _AccountID, _LeaveRequestID).Excute();
                    return;
                }
                if (_LeaveRequestItem.Status.Id == RequestStatus.ApproveCancelPass.Id
                    &&
                    RequestUtility.IsItemFlowContainStatus(leaveRequestFlows,
                                                           RequestStatus.ApproveCancelFail))
                {
                    new RestoreAdjustRestByLeaveRequest(_LeaveRequestItem, _AccountID, _LeaveRequestID).Excute();
                    return;
                }
            }
        }