Ejemplo n.º 1
0
        /// <summary>
        /// 添加时,如果对应的WorkflowInstanceID+OperateTime已经存在则跳过
        /// </summary>
        /// <param name="al"></param>
        /// <returns></returns>
        public int AddApproveLog(ApproveLog al)
        {
            var isExists = _alRepository.GetAllList().Where(w => w.WorkflowInstanceID == al.WorkflowInstanceID && w.OperateTime == al.OperateTime).ToList();

            if (isExists.Count == 0)
            {
                if (al.OperateType == "提交" || al.OperateType == "审批通过" || al.OperateType == "驳回" || al.OperateType == "转办")
                {
                    var submitter = _userRepository.GetAll().Where(u => u.EmployeeCode == al.Creator).FirstOrDefault();
                    if (al.OperateType != "提交")
                    {
                        //如果不是提交,则需要先根据WorkflowInstanceID找到提交人,同一个WorkflowInstanceID操作日期最小的就是提交人记录的
                        var submitLog = _alRepository.GetAllList().Where(w => w.WorkflowInstanceID == al.WorkflowInstanceID).OrderBy(alog => alog.OperateTime).FirstOrDefault();
                        submitter = _userRepository.GetAll().Where(u => u.EmployeeCode == submitLog.Creator).FirstOrDefault();
                    }
                    var        setting  = _settingRepository.GetAll().Where(s => s.UserId == submitter.EmployeeCode).FirstOrDefault();
                    var        team     = _teamRepository.Get(setting.TeamId);
                    HREmployee approver = null;

                    if (al.OperateType == "提交")
                    {
                        approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.NextOperator).FirstOrDefault();
                        EmailSender.SendEmailForSubmitToApprover(team.TeamName, submitter.EmployeeName, approver.EmployeeName, approver.Email, al.Comment, al.OperateTime, al.StartDate, al.EndDate);
                    }
                    else if (al.OperateType == "审批通过")
                    {
                        approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.CurrentOperator).FirstOrDefault();
                        EmailSender.SendEmailForApproverCompleteApprove(team.TeamName, submitter.EmployeeName, approver.EmployeeName, submitter.Email, al.Comment, al.OperateTime);
                    }
                    else if (al.OperateType == "驳回")
                    {
                        approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.CurrentOperator).FirstOrDefault();
                        EmailSender.SendEmailForRollbackToSubmitter(team.TeamName, submitter.EmployeeName, approver.EmployeeName, submitter.Email, al.Comment, al.OperateTime);
                    }
                    else if (al.OperateType == "转办")
                    {
                        approver = _userRepository.GetAll().Where(u => u.EmployeeCode == al.NextOperator).FirstOrDefault();
                        EmailSender.SendEmailForApproverTransferToOther(team.TeamName, submitter.EmployeeName, approver.EmployeeName, approver.Email, al.Comment, al.OperateTime);
                    }
                }
                return(_alRepository.InsertAndGetId(al));
            }
            else
            {
                return(isExists[0].Id);
            }
        }
Ejemplo n.º 2
0
 public ApproveLog UpdateApproveLog(ApproveLog al)
 {
     return(_alRepository.Update(al));
 }