Beispiel #1
0
 /// <summary>
 ///
 /// </summary>
 protected override void ExcuteSelf()
 {
     try
     {
         DiyStep currentStep = _PositionApplication.DiyProcess.FindCancelStep();
         DiyStep nextStep    = _PositionApplication.DiyProcess.FindCancelNextStep();
         using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
         {
             _PositionApplicationDal.UpdatePositionApplicationStatusByPositionApplicationID(_PositionApplicationID,
                                                                                            _RequestStatus, nextStep.DiyStepID);
             PositionApplicationFlow flow = new PositionApplicationFlow(0, _PositionApplicationID,
                                                                        new Account(_OperatorID, "", ""),
                                                                        DateTime.Now, _RequestStatus, _Reason, _PositionApplication);
             _PositionApplicationDal.InsertPositionApplicationFlow(flow);
             ts.Complete();
         }
         List <string> accounts =
             new GetDiyProcess(_DalEmployeeDiyProcess).GetAccountMailListByDiyProcessIDAccountID(
                 currentStep, _PositionApplication.Account.Id);
         new PositionApplicationMailAndPhoneDelegate().CancelMail(_PositionApplication.PKID, accounts, nextStep);
     }
     catch
     {
         BllUtility.ThrowException(BllExceptionConst._DbError);
     }
 }
Beispiel #2
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionApplicationID"></param>
 /// <param name="currentStepAccountlist"></param>
 /// <param name="nextStep"></param>
 public PositionApplicationCancelMail(int positionApplicationID, List <string> currentStepAccountlist, DiyStep nextStep)
 {
     _PositionApplication         = new GetPositionApplication().GetPositionApplicationByPKID(positionApplicationID);
     _PositionApplication.Account = _AccountBll.GetAccountById(_PositionApplication.Account.Id);
     _NextStep = nextStep;
     _CurrentStepAccountlist = currentStepAccountlist;
 }
        /// <summary>
        /// 通过帐号ID查找相关的帐套项
        /// </summary>
        /// <param name="diyProcessID"></param>
        /// <returns></returns>
        private static List <DiyStep> GetDiyStepsByDiyProcessID(int diyProcessID)
        {
            List <DiyStep> diySteps = new List <DiyStep>();
            SqlCommand     cmd      = new SqlCommand();

            cmd.Parameters.Add(_DiyProcessID, SqlDbType.Int).Value = diyProcessID;
            using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetDiyStepByDiyProcessID", cmd))
            {
                while (sdr.Read())
                {
                    DiyStep diyStep =
                        new DiyStep((int)sdr[_DBPKID], sdr[_DBStatus].ToString(),
                                    new OperatorType((int)sdr[_DBOperatorType], OperatorType.FindOperatorTypeByID((int)sdr[_DBOperatorType])),
                                    (int)sdr[_DBOperatorID]);
                    string[] mailAccount = sdr[_DBMailAccount].ToString().Split('|');
                    foreach (string accountId in mailAccount)
                    {
                        int id;
                        if (int.TryParse(accountId, out id))
                        {
                            diyStep.MailAccount.Add(new Account(Convert.ToInt32(accountId), string.Empty, string.Empty));
                        }
                    }
                    diySteps.Add(diyStep);
                }
            }
            return(diySteps);
        }
        /// <summary>
        /// 根据ID获得请假
        /// </summary>
        /// <param name="leaveRequestID"></param>
        /// <returns></returns>
        public LeaveRequest GetLeaveRequestByPKID(int leaveRequestID)
        {
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.Add(_ParmPKID, SqlDbType.Int).Value = leaveRequestID;
            using (SqlDataReader sdr = SqlHelper.ExecuteReader("GetLeaveRequestByPKID", cmd))
            {
                while (sdr.Read())
                {
                    LeaveRequest leaveRequest = new LeaveRequest();
                    leaveRequest.PKID             = leaveRequestID;
                    leaveRequest.Account          = new Account((int)sdr[_DBAccountID], "", "");
                    leaveRequest.FromDate         = (DateTime)sdr[_DBFromDate];
                    leaveRequest.ToDate           = (DateTime)sdr[_DBToDate];
                    leaveRequest.CostTime         = (decimal)sdr[_DBAbsentHours];
                    leaveRequest.LeaveRequestType =
                        new LeaveRequestType(Convert.ToInt32(sdr[_DBLeaveRequestTypeID]),
                                             sdr[_DBAbsenceTypeName].ToString(),
                                             sdr[_DBLeaveRequestTypeDescription].ToString(),
                                             ((LegalHoliday)sdr[_DBLeaveRequestTypeIncludeNationalHolidays]),
                                             ((RestDay)sdr[_DBLeaveRequestTypeIncludeRestDay]),
                                             Convert.ToInt32(sdr[_DBLeastHour]));
                    leaveRequest.SubmitDate = Convert.ToDateTime(sdr[_DBSubmitDate]);
                    leaveRequest.Reason     = sdr[_DBReason].ToString();

                    List <DiyStep> diyStepList = new List <DiyStep>();
                    string         diyProcess  = sdr[_DbDiyProcess].ToString();
                    string[]       diySteps    = diyProcess.Split(';');
                    foreach (string diyStep in diySteps)
                    {
                        string[] steps = diyStep.Split('|');
                        if (steps.Length > 4)
                        {
                            DiyStep step =
                                new DiyStep(Convert.ToInt32(steps[0]), steps[1],
                                            new OperatorType(Convert.ToInt32(steps[2]),
                                                             OperatorType.FindOperatorTypeByID(Convert.ToInt32(steps[2]))),
                                            Convert.ToInt32(steps[3]));

                            string[] mailAccounts = steps[4].Split(',');
                            foreach (string mailAccount in mailAccounts)
                            {
                                if (!string.IsNullOrEmpty(mailAccount))
                                {
                                    step.MailAccount.Add(new Account(Convert.ToInt32(mailAccount), "", ""));
                                }
                            }

                            diyStepList.Add(step);
                        }
                    }

                    leaveRequest.DiyProcess          = new DiyProcess();
                    leaveRequest.DiyProcess.DiySteps = diyStepList;
                    leaveRequest.LeaveRequestItems   = GetLeaveRequestItemByLeaveRequestID(leaveRequestID, leaveRequest.DiyProcess);
                    return(leaveRequest);
                }
                return(null);
            }
        }
Beispiel #5
0
        /// <summary>
        /// </summary>
        public static DiyProcess GetDiyProcess(string processtest)
        {
            List <DiyStep> diyStepList = new List <DiyStep>();
            string         diyProcess  = processtest;

            string[] diySteps = diyProcess.Split(';');
            foreach (string diyStep in diySteps)
            {
                string[] steps = diyStep.Split('|');
                if (steps.Length > 4)
                {
                    DiyStep step =
                        new DiyStep(Convert.ToInt32(steps[0]), steps[1],
                                    new OperatorType(Convert.ToInt32(steps[2]),
                                                     OperatorType.FindOperatorTypeByID(Convert.ToInt32(steps[2]))),
                                    Convert.ToInt32(steps[3]));

                    string[] mailAccounts = steps[4].Split(',');
                    foreach (string mailAccount in mailAccounts)
                    {
                        if (!string.IsNullOrEmpty(mailAccount))
                        {
                            step.MailAccount.Add(new Account(Convert.ToInt32(mailAccount), "", ""));
                        }
                    }

                    diyStepList.Add(step);
                }
            }
            DiyProcess diyprocess = new DiyProcess();

            diyprocess.DiySteps = diyStepList;
            return(diyprocess);
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="leaveRequestID"></param>
 /// <param name="item"></param>
 /// <param name="nextStep"></param>
 public LeaveRequestCancelPhone(int leaveRequestID, LeaveRequestItem item, DiyStep nextStep)
 {
     _LeaveRequest         = _DalLeaveRequest.GetLeaveRequestByPKID(leaveRequestID);
     _LeaveRequest.Account = _AccountBll.GetAccountById(_LeaveRequest.Account.Id);
     _LeaveRequestItem     = item;
     _NextStep             = nextStep;
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="leaveRequestID"></param>
 /// <param name="hrAccount"></param>
 /// <param name="currentStep"></param>
 public LeaveRequestOverMail(int leaveRequestID, List <Account> hrAccount, DiyStep currentStep)
 {
     _LeaveRequest         = _DalLeaveRequest.GetLeaveRequestByPKID(leaveRequestID);
     _LeaveRequest.Account = _AccountBll.GetAccountById(_LeaveRequest.Account.Id);
     _HRAccount            = hrAccount;
     _CurrentStep          = currentStep;
 }
Beispiel #8
0
 /// <summary>
 /// 新增请假单
 /// </summary>
 protected override void ExcuteSelf()
 {
     if (_IfSubmit)
     {
         foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
         {
             item.Status = RequestStatus.Submit;
         }
         DiyStep currentStep = _LeaveRequest.DiyProcess.FindFirstStep();
         DiyStep nextStep    = _LeaveRequest.DiyProcess.FindSecondStep();
         _LeaveRequest.PKID = _DalLeaveRequest.InsertLeaveRequest(_LeaveRequest, nextStep.DiyStepID);
         _LeaveRequest      = _DalLeaveRequest.GetLeaveRequestByPKID(_LeaveRequest.PKID);
         foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
         {
             _DalLeaveRequestFlow.InsertLeaveRequestFlow(PrepareLeaveRequestFlow(item));
         }
         new LeaveRequestMailAndPhoneDelegate().SubmitOperation(_LeaveRequest.PKID, _LeaveRequest.MailCC ?? new List <Account>(),
                                                                currentStep.MailAccount, nextStep);
     }
     else
     {
         foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
         {
             item.Status = RequestStatus.New;
         }
         DiyStep nextStep = _LeaveRequest.DiyProcess.FindFirstStep();
         _LeaveRequest.PKID = _DalLeaveRequest.InsertLeaveRequest(_LeaveRequest, nextStep.DiyStepID);
     }
 }
 /// <summary>
 ///
 /// </summary>
 /// <param name="leaveRequestID"></param>
 /// <param name="diyProcessAccountlist"></param>
 /// <param name="nextStep"></param>
 public LeaveRequestCancelMail(int leaveRequestID, List <Account> diyProcessAccountlist, DiyStep nextStep)
 {
     _LeaveRequest          = _DalLeaveRequest.GetLeaveRequestByPKID(leaveRequestID);
     _LeaveRequest.Account  = _AccountBll.GetAccountById(_LeaveRequest.Account.Id);
     _NextStep              = nextStep;
     _DiyProcessAccountlist = diyProcessAccountlist;
 }
        /// <summary>
        ///
        /// </summary>
        /// <param name="positionApplication"></param>
        /// <param name="nextStep"></param>
        /// <returns></returns>
        public Account GetMailToAccount(PositionApplication positionApplication, DiyStep nextStep)
        {
            int accountID =
                new GetPositionApplication().ChangeOperatorToEmployee(positionApplication, nextStep);
            Account account = _AccountBll.GetAccountById(accountID);

            return(account);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="leaveRequest"></param>
        /// <param name="nextStep"></param>
        /// <returns></returns>
        public Account GetMailToAccount(LeaveRequest leaveRequest, DiyStep nextStep)
        {
            int accountID =
                new GetLeaveRequest().ChangeOperatorToEmployee(leaveRequest, nextStep);
            Account account = _AccountBll.GetAccountById(accountID);

            return(account);
        }
        /// <summary>
        ///
        /// </summary>
        /// <param name="traineeApplication"></param>
        /// <returns></returns>
        /// <param name="diyStep"></param>
        public Account GetMailToAccount(TraineeApplication traineeApplication, DiyStep diyStep)
        {
            int accountID =
                new GetTraineeApplication().ChangeOperatorToEmployee(traineeApplication, diyStep);
            Account account = _AccountBll.GetAccountById(accountID);

            return(account);
        }
Beispiel #13
0
        protected override void ExcuteSelf()
        {
            try
            {
                DiyStep currentStep = _TraineeApplication.TraineeApplicationDiyProcess.FindStep
                                          (_TraineeApplication.NextStep.DiyStepID);
                //TraineeApplicationStatus traineeApplicationStatus = _TraineeApplication.TraineeApplicationStatuss;
                DiyStep nextStep = _TraineeApplication.TraineeApplicationDiyProcess.FindNextStep
                                       (_TraineeApplication.NextStep.DiyStepID);
                if (nextStep == null)
                {
                    nextStep = new DiyStep(0, "结束", OperatorType.Others, 0);
                }
                if (_Status.Id == TraineeApplicationStatus.ApproveFail.Id)
                {
                    nextStep = new DiyStep(0, "结束", OperatorType.Others, 0);
                }

                _TraineeApplication.NextStep    = nextStep;
                _TraineeApplication.CurrentStep = currentStep;
                if (nextStep.DiyStepID != 0)
                {
                    _TraineeApplication.TraineeApplicationStatuss = TraineeApplicationStatus.Approving;
                }
                else
                {
                    _TraineeApplication.TraineeApplicationStatuss = _Status;
                }
                //_TraineeApplication.TraineeApplicationFlowList =
                //    new List<TraineeApplicationFlow>();
                //_TraineeApplication.TraineeApplicationFlowList.Add(
                //    new TraineeApplicationFlow(_LoginUser, DateTime.Now,
                //                               _TraineeApplication.TraineeApplicationStatuss));
                TraineeApplicationFlow flow =
                    new TraineeApplicationFlow(_LoginUser, DateTime.Now,
                                               _TraineeApplication.TraineeApplicationStatuss);
                flow.Remark = _Remark;
                _TraineeApplication.TraineeApplicationFlowList = new List <TraineeApplicationFlow>();
                _TraineeApplication.TraineeApplicationFlowList.Add(flow);
                _DalTraineeApplication.ApproveTraineeApplication(_LoginUser, _TraineeApplication,
                                                                 _TraineeApplication.TraineeApplicationStatuss);
                DiyProcess hrDiyProcess = _DalEmployeeDiyProcess.
                                          GetDiyProcessByProcessTypeAndAccountID(ProcessType.HRPrincipal,
                                                                                 _TraineeApplication.Applicant.Id);

                List <Account> accountList = new List <Account>();
                if (hrDiyProcess != null && hrDiyProcess.DiySteps != null && hrDiyProcess.DiySteps.Count > 0)
                {
                    accountList = hrDiyProcess.DiySteps[0].MailAccount;
                }
                new TraineeApplicationMailAndPhoneDelegate().ConfirmOperation(_TraineeApplication,
                                                                              accountList, _LoginUser.Id);
            }
            catch
            {
                BllUtility.ThrowException(BllExceptionConst._DbError);
            }
        }
        /// <summary>
        ///
        /// </summary>
        protected override void ExcuteSelf()
        {
            int failCount    = 0;
            int successCount = 0;
            List <List <Account> > account = new List <List <Account> >();
            List <DiyStep>         csteps  = new List <DiyStep>();
            List <DiyStep>         nsteps  = new List <DiyStep>();

            foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
            {
                //-1 全部;0 新增;1 提交;2 审核不通过;3 审核通过;4 取消请假;5 拒绝取消假期;
                //6 批准取消假期;7 审核中;8 审核取消中
                switch (item.Status.Id)
                {
                case 1:
                case 7:
                    _RequestStatus = RequestStatus.ApprovePass;
                    break;

                case 4:
                case 8:
                    _RequestStatus = RequestStatus.ApproveCancelPass;
                    break;
                }

                try
                {
                    ApproveLeaveRequestItem approveLeaveRequestItem =
                        new ApproveLeaveRequestItem(_LeaveRequestID, item.LeaveRequestItemID, _AccountID, _RequestStatus,
                                                    _Reason, _DalLeaveRequest, _DalLeaveRequestFlow,
                                                    _DalEmployeeDiyProcess, _DalVacation,
                                                    _IAdjustRestDal, _DalPlanDutyDal, _DalLeaveRequestType);
                    List <Account> mailaccountlist;
                    DiyStep        cstep;
                    DiyStep        nstep;
                    approveLeaveRequestItem.ConfirmItem(out mailaccountlist, out cstep, out nstep);
                    if (!DiyStep.Contains(nsteps, nstep))
                    {
                        account.Add(mailaccountlist);
                        csteps.Add(cstep);
                        nsteps.Add(nstep);
                    }
                    successCount++;
                }
                catch
                {
                    failCount++;
                }

                ResultMessage = successCount + "个请假项审核成功," + failCount + "个请假项审核失败";;
            }
            for (int i = 0; i < nsteps.Count; i++)
            {
                new LeaveRequestMailAndPhoneDelegate().ConfirmOperationMail(_LeaveRequest, account[i], _AccountID,
                                                                            csteps[i], nsteps[i]);
            }
        }
 /// <summary>
 ///
 /// </summary>
 /// <param name="leaveRequestID"></param>
 /// <param name="cclist"></param>
 /// <param name="diyProcesslist"></param>
 /// <param name="nextStep"></param>
 public LeaveRequestSubmitMail(int leaveRequestID, List <Account> cclist, List <Account> diyProcesslist,
                               DiyStep nextStep)
 {
     _LeaveRequest         = _DalLeaveRequest.GetLeaveRequestByPKID(leaveRequestID);
     _LeaveRequest.Account = _AccountBll.GetAccountById(_LeaveRequest.Account.Id);
     _CCList         = cclist;
     _DiyProcesslist = diyProcesslist;
     _NextStep       = nextStep;
 }
Beispiel #16
0
 /// <summary>
 ///
 /// </summary>
 /// <param name="positionApplicationID"></param>
 /// <param name="cclist"></param>
 /// <param name="diyProcesslist"></param>
 /// <param name="nextStep"></param>
 public PositionApplicationSubmitMail(int positionApplicationID, List <Account> cclist, List <string> diyProcesslist,
                                      DiyStep nextStep)
 {
     _PositionApplication         = new GetPositionApplication().GetPositionApplicationByPKID(positionApplicationID);
     _PositionApplication.Account = _AccountBll.GetAccountById(_PositionApplication.Account.Id);
     _CCList         = cclist;
     _DiyProcesslist = diyProcesslist;
     _NextStep       = nextStep;
 }
Beispiel #17
0
        protected override void ExcuteSelf()
        {
            try
            {
                int                    cancelCount     = 0;
                DiyStep                currentStep     = _LeaveRequest.DiyProcess.FindCancelStep();
                DiyStep                nextStep        = _LeaveRequest.DiyProcess.FindCancelNextStep();
                List <DiyStep>         diysteplist     = new List <DiyStep>();
                List <List <Account> > mailAccountlist = new List <List <Account> >();

                //如果请假信息状态不是取消或提交状态,不能取消
                foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
                {
                    using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                    {
                        if (RequestStatus.CanCancelStatus(item.Status))
                        {
                            _DalLeaveRequest.UpdateLeaveRequestItemStatusByLeaveRequestItemID(item.LeaveRequestItemID,
                                                                                              _RequestStatus,
                                                                                              nextStep.DiyStepID);
                            _DalLeaveRequestFlow.InsertLeaveRequestFlow(
                                PrepareLeaveRequestFlow(item.LeaveRequestItemID));
                            ts.Complete();
                            cancelCount++;
                        }
                    }
                    new LeaveRequestMailAndPhoneDelegate().CancelOperation(_LeaveRequest.PKID, item,
                                                                           currentStep.MailAccount, nextStep);
                    if (!DiyStep.Contains(diysteplist, nextStep))
                    {
                        diysteplist.Add(nextStep);
                        mailAccountlist.Add(currentStep.MailAccount);
                    }
                }
                for (int i = 0; i < diysteplist.Count; i++)
                {
                    new LeaveRequestMailAndPhoneDelegate().CancelMail(_LeaveRequest.PKID, mailAccountlist[i], diysteplist[i]);
                }
                if (cancelCount == _LeaveRequest.LeaveRequestItems.Count)
                {
                    ResultMessage = string.Empty;
                }
                else if (cancelCount == 0)
                {
                    ResultMessage = HrmisUtility._LeaveRequest_CanNot_BeCancled;
                }
                else if (cancelCount > 0)
                {
                    ResultMessage = HrmisUtility._LeaveRequest_Partial_CanNot_BeCancled;
                }
            }
            catch
            {
                HrmisUtility.ThrowException(HrmisUtility._DbError);
            }
        }
 private void ChangeRequestStatus(DiyStep nextStep)
 {
     if (nextStep.Status != "取消" && _RequestStatus.Id == RequestStatus.ApprovePass.Id)
     {
         _RequestStatus = RequestStatus.Approving;
     }
     if (nextStep.Status != "结束" && _RequestStatus.Id == RequestStatus.ApproveCancelPass.Id)
     {
         _RequestStatus = RequestStatus.CancelApproving;
     }
 }
Beispiel #19
0
        /// <summary>
        /// 审核
        /// </summary>
        public void ConfirmOperationMail(LeaveRequest leaveRequest, List <Account> hrAccount,
                                         int currentAccountID, DiyStep currentStep, DiyStep nextStep)
        {
            Account mailToAccount = new MailAndPhoneUtility().GetMailToAccount(leaveRequest, nextStep);

            if (nextStep.DiyStepID == 0 || nextStep.Status == "取消")
            {
                _LeaveRequestMail.SendConfirmOverMail(leaveRequest.PKID, hrAccount, currentStep);
            }
            else if (mailToAccount != null)
            {
                _LeaveRequestMail.SendMailToNextOperator(leaveRequest.PKID, mailToAccount);
            }
        }
Beispiel #20
0
        /// <summary>
        /// 交换第id行<==>第id+1行
        /// </summary>
        /// <param name="id"></param>
        public void DiyStepChangedForDownEvent(string id)
        {
            List <DiyStep> items   = _IDiyProcessView.DiyStepList;
            int            currRow = Convert.ToInt32(id);

            if (currRow + 1 == items.Count)
            {
                return;
            }
            DiyStep tempItem = items[currRow + 1];

            items[currRow + 1]           = items[currRow];
            items[currRow]               = tempItem;
            _IDiyProcessView.DiyStepList = items;
        }
Beispiel #21
0
        /// <summary>
        /// 在rowIndex下新增空行
        /// </summary>
        /// <param name="rowIndex"></param>
        public void DiyStepForAddAtEvent(string rowIndex)
        {
            List <DiyStep> items = new List <DiyStep>();

            for (int i = 0; i < _IDiyProcessView.DiyStepList.Count; i++)
            {
                items.Add(_IDiyProcessView.DiyStepList[i]);
                if (Convert.ToInt32(rowIndex) == i)
                {
                    DiyStep item = new DiyStep(-1, "", OperatorType.YourSelf, 0);
                    items.Add(item);
                }
            }
            _IDiyProcessView.DiyStepList = items;
        }
Beispiel #22
0
        /// <summary>
        /// 修改请假单
        /// </summary>
        protected override void ExcuteSelf()
        {
            try
            {
                using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    if (_OldLeaveRequest.IfAutoCancel)
                    {
                        AutoCancelLeaveRequest();
                    }
                    if (_IfSubmit)
                    {
                        foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
                        {
                            item.Status = RequestStatus.Submit;
                        }
                        DiyStep currentStep = _LeaveRequest.DiyProcess.FindFirstStep();
                        DiyStep nextStep    = _LeaveRequest.DiyProcess.FindSecondStep();
                        _DalLeaveRequest.UpdateLeaveRequest(_LeaveRequest, nextStep.DiyStepID);
                        _LeaveRequest = _DalLeaveRequest.GetLeaveRequestByPKID(_LeaveRequest.PKID);
                        foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
                        {
                            _DalLeaveRequestFlow.InsertLeaveRequestFlow(PrepareLeaveRequestFlow(item));
                        }

                        new LeaveRequestMailAndPhoneDelegate().SubmitOperation(_LeaveRequest.PKID, _LeaveRequest.MailCC ?? new List <Account>(),
                                                                               currentStep.MailAccount, nextStep);
                    }
                    else
                    {
                        foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
                        {
                            item.Status = RequestStatus.New;
                        }
                        DiyStep nextStep = _LeaveRequest.DiyProcess.FindFirstStep();
                        _DalLeaveRequest.UpdateLeaveRequest(_LeaveRequest, nextStep.DiyStepID);
                    }
                    ts.Complete();
                }
            }
            catch
            {
                HrmisUtility.ThrowException(HrmisUtility._DbError);
            }
        }
Beispiel #23
0
        /// <summary>
        ///
        /// </summary>
        private void ConfirmItem(out DiyStep cstep, out DiyStep nstep)
        {
            Validation();
            cstep = null;
            nstep = null;
            try
            {
                DiyStep currentStep = _PositionApplication.DiyProcess.FindStep(_PositionApplication.CurrentStep.DiyStepID);
                DiyStep nextStep    = _PositionApplication.DiyProcess.FindNextStep(_PositionApplication.CurrentStep.DiyStepID);
                if (nextStep == null)
                {
                    nextStep = new DiyStep(0, "结束", OperatorType.Others, 0);
                }

                ChangeRequestStatus(nextStep);

                if (_RequestStatus.Id == RequestStatus.ApproveFail.Id ||
                    _RequestStatus.Id == RequestStatus.ApproveCancelFail.Id)
                {
                    nextStep = new DiyStep(0, "结束", OperatorType.Others, 0);
                }

                _PositionApplication.Status = _RequestStatus;
                using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    _PositionApplicationDal.UpdatePositionApplication(_PositionApplication);
                    _PositionApplicationDal.UpdatePositionApplicationStatusByPositionApplicationID(_PositionApplication.PKID,
                                                                                                   _RequestStatus, nextStep.DiyStepID);
                    PositionApplicationFlow flow = new PositionApplicationFlow(0, _PositionApplication.PKID,
                                                                               new Account(_OperatorID, "", ""),
                                                                               DateTime.Now, _RequestStatus, _Reason, _PositionApplication);
                    _PositionApplicationDal.InsertPositionApplicationFlow(flow);
                    ts.Complete();
                }
                new PositionApplicationMailAndPhoneDelegate().ConfirmOperationMail(_PositionApplication, _OperatorID, currentStep, nextStep);
                cstep = currentStep;
                nstep = nextStep;
            }
            catch
            {
                BllUtility.ThrowException(BllExceptionConst._DbError);
            }
        }
        /// <summary>
        ///
        /// </summary>
        protected override void ExcuteSelf()
        {
            int failCount    = 0;
            int successCount = 0;
            List <List <Account> > account = new List <List <Account> >();
            List <DiyStep>         csteps  = new List <DiyStep>();
            List <DiyStep>         nsteps  = new List <DiyStep>();

            foreach (LeaveRequestItem item in _LeaveRequest.LeaveRequestItems)
            {
                try
                {
                    ChangeRequestStatus(item);
                    ApproveLeaveRequestItem approveLeaveRequestItem =
                        new ApproveLeaveRequestItem(_LeaveRequestID, item.LeaveRequestItemID, _AccountID, _RequestStatus,
                                                    _Reason, _DalLeaveRequest, _DalLeaveRequestFlow,
                                                    _DalEmployeeDiyProcess, _DalVacation,
                                                    _IAdjustRestDal, _DalPlanDutyDal, _DalLeaveRequestType);
                    List <Account> mailaccountlist;
                    DiyStep        cstep;
                    DiyStep        nstep;
                    approveLeaveRequestItem.ConfirmItem(out mailaccountlist, out cstep, out nstep);
                    if (!DiyStep.Contains(nsteps, nstep))
                    {
                        account.Add(mailaccountlist);
                        csteps.Add(cstep);
                        nsteps.Add(nstep);
                    }
                    successCount++;
                }
                catch
                {
                    failCount++;
                }

                ResultMessage = successCount + "个请假项审核成功," + failCount + "个请假项审核失败";;
            }
            for (int i = 0; i < nsteps.Count; i++)
            {
                new LeaveRequestMailAndPhoneDelegate().ConfirmOperationMail(_LeaveRequest, account[i], _AccountID,
                                                                            csteps[i], nsteps[i]);
            }
        }
Beispiel #25
0
        /// <summary>
        /// 获取hr负责人流程字符串
        /// </summary>
        /// <param name="diyStep"></param>
        /// <returns></returns>
        private string GetHRPrincipalProcessString(DiyStep diyStep)
        {
            StringBuilder operate = new StringBuilder();

            try
            {
                if (diyStep.MailAccount != null)
                {
                    foreach (Account account in diyStep.MailAccount)
                    {
                        operate.Append(_IAccountBll.GetAccountById(account.Id).Name);
                        operate.Append(" ");
                    }
                }
            }
            catch
            {}
            return(operate.ToString());
        }
Beispiel #26
0
        private List <DiyStep> CollerctDiySteps(List <DiyStep> process)
        {
            switch (_ItsView.ProcessType.Id)
            {
            //外出申请流程
            case 1:
            //加班申请流程
            case 2:
                List <DiyStep> iRet      = new List <DiyStep>();
                DiyStep        firststep =
                    new DiyStep(process[0].DiyStepID,
                                process[0].Status, new OperatorType(0, "本人"),
                                0);;
                firststep.MailAccount = process[0].MailAccount;
                firststep.IfSystem    = true;
                iRet.Add(firststep);
                for (int i = 1; i < process.Count; i++)
                {
                    DiyStep step =
                        new DiyStep(process[i].DiyStepID, process[i].Status,
                                    process[i - 1].OperatorType, process[i - 1].OperatorID);
                    step.MailAccount = process[i].MailAccount;
                    iRet.Add(step);
                }
                return(iRet);

            //请假流程
            case 0:
            //考评流程
            case 3:
            //人事负责人
            case 4:
            //报销流程
            case 5:
            //培训申请流程
            case 6:
                return(process);

            default:
                return(new List <DiyStep>());
            }
        }
Beispiel #27
0
        /// <summary>
        /// 新增自定义步骤
        /// </summary>
        /// <param name="diyProcessID"></param>
        /// <param name="diyStep"></param>
        /// <param name="conn"></param>
        /// <param name="trans"></param>
        private static void InsertDiySteps(int diyProcessID, DiyStep diyStep, SqlConnection conn,
                                           SqlTransaction trans)
        {
            int        pkid;
            SqlCommand cmd = new SqlCommand();

            cmd.Parameters.Add(_DiyProcessID, SqlDbType.Int).Value    = diyProcessID;
            cmd.Parameters.Add(_Status, SqlDbType.NVarChar, 50).Value = diyStep.Status;
            cmd.Parameters.Add(_OperatorType, SqlDbType.Int).Value    = diyStep.OperatorType.Id;
            cmd.Parameters.Add(_OperatorID, SqlDbType.Int).Value      = diyStep.OperatorID;
            string mailAccount = "";

            foreach (Account account in diyStep.MailAccount)
            {
                mailAccount += account.Id + "|";
            }
            cmd.Parameters.Add(_MailAccount, SqlDbType.NVarChar, 255).Value = mailAccount;
            cmd.Parameters.Add(_PKID, SqlDbType.Int).Direction = ParameterDirection.Output;
            SqlHelper.TransExecuteNonQueryReturnPKID("InsertDiySteps", cmd, conn, trans, out pkid);
        }
Beispiel #28
0
        /// <summary>
        ///
        /// </summary>
        /// <param name="step"></param>
        /// <param name="accountID"></param>
        /// <returns></returns>
        public List <string> GetAccountMailListByDiyProcessIDAccountID(DiyStep step, int accountID)
        {
            List <string>  mailToList = new List <string>();
            List <Account> accounts   = step.MailAccount;

            for (int i = 0; i < step.MailRole.Count; i++)
            {
                DiyProcess hrProcess =
                    _DiyEmployeeProcessDal.GetDiyProcessByProcessTypeAndAccountID(step.MailRole[i], accountID);
                accounts.AddRange(hrProcess.DiySteps[0].MailAccount);
            }

            foreach (Account account in accounts)
            {
                Account innaccount = _IAccountBll.GetAccountById(account.Id);
                mailToList.AddRange(HrmisUtility.GetMail(innaccount));
            }
            RequestUtility.CleanMailAddress(mailToList);
            return(mailToList);
        }
        /// <summary>
        /// 修改
        /// </summary>
        protected override void ExcuteSelf()
        {
            try
            {
                using (TransactionScope ts = new TransactionScope(TransactionScopeOption.Required))
                {
                    if (_OldPositionApplication.IfAutoCancel)
                    {
                        AutoCancelPositionApplication();
                    }
                    if (_IfSubmit)
                    {
                        _PositionApplication.Status = RequestStatus.Submit;
                        DiyStep currentStep = _PositionApplication.DiyProcess.FindFirstStep();
                        DiyStep nextStep    = _PositionApplication.DiyProcess.FindSecondStep();
                        _PositionApplication.NextStep = nextStep;
                        _PositionApplicationDal.UpdatePositionApplication(_PositionApplication);
                        PositionApplicationFlow flow = new PositionApplicationFlow(0, _PositionApplication.PKID,
                                                                                   _PositionApplication.Account,
                                                                                   DateTime.Now, RequestStatus.Submit, "", _PositionApplication);
                        _PositionApplicationDal.InsertPositionApplicationFlow(flow);

                        List <string> accounts =
                            new GetDiyProcess(_DalEmployeeDiyProcess).GetAccountMailListByDiyProcessIDAccountID(
                                currentStep, _PositionApplication.Account.Id);
                        new PositionApplicationMailAndPhoneDelegate().SubmitOperation(_PositionApplication.PKID, accounts, nextStep);
                    }
                    else
                    {
                        _PositionApplication.Status   = RequestStatus.New;
                        _PositionApplication.NextStep = _PositionApplication.DiyProcess.FindFirstStep();
                        _PositionApplicationDal.UpdatePositionApplication(_PositionApplication);
                    }
                    ts.Complete();
                }
            }
            catch
            {
                HrmisUtility.ThrowException(HrmisUtility._DbError);
            }
        }
Beispiel #30
0
        private List <DiyStep> CollerctDiySteps()
        {
            switch (_ItsView.ProcessType.Id)
            {
            //外出申请流程
            case 1:
            //加班申请流程
            case 2:
                List <DiyStep> iRet = new List <DiyStep>();
                for (int i = 0; i < _ItsView.DiyStepList.Count - 1; i++)
                {
                    DiyStep step =
                        new DiyStep(_ItsView.DiyStepList[i].DiyStepID, _ItsView.DiyStepList[i].Status,
                                    _ItsView.DiyStepList[i + 1].OperatorType, _ItsView.DiyStepList[i + 1].OperatorID);
                    step.MailAccount = _ItsView.DiyStepList[i].MailAccount;
                    iRet.Add(step);
                }
                DiyStep lasestep =
                    new DiyStep(_ItsView.DiyStepList[_ItsView.DiyStepList.Count - 1].DiyStepID,
                                _ItsView.DiyStepList[_ItsView.DiyStepList.Count - 1].Status, new OperatorType(0, ""),
                                0);
                lasestep.MailAccount = _ItsView.DiyStepList[_ItsView.DiyStepList.Count - 1].MailAccount;
                iRet.Add(lasestep);
                return(iRet);

            //请假流程
            case 0:
            //考评流程
            case 3:
            //人事负责人
            case 4:
            //报销流程
            case 5:
            //培训申请流程
            case 6:
                return(_ItsView.DiyStepList);

            default:
                return(new List <DiyStep>());
            }
        }