//插入 客户历史信息处理日志(动作记录)
        public void InsertCustHistoryLogByAction(string taskID, string comment, int action)
        {
            CustHistoryLog model_Log = new CustHistoryLog();

            model_Log.TaskID       = taskID;
            model_Log.Action       = action;
            model_Log.Comment      = comment;
            model_Log.SolveTime    = DateTime.Now;
            model_Log.SolveUserID  = BLL.Util.GetLoginUserID();
            model_Log.SolveUserEID = BLL.Util.GetLoginUserID();
            //CustHistoryLog 作废 2016-3-1 强斐
            //InsertCustHistoryLog(model_Log);

            string _action = string.Empty;

            switch (model_Log.Action)
            {
            case (int)Entities.Action.ActionSumbit: _action = "提交";
                break;

            case (int)Entities.Action.ActionTurnOut: _action = "转出";
                break;

            case (int)Entities.Action.ActionApplyTurn: _action = "申请转出";
                break;

            case (int)Entities.Action.ActionTurnOver: _action = "结束";
                break;

            case (int)Entities.Action.ActionAgreeApplyTurn: _action = "同意转出";
                break;
            }
            BLL.Util.InsertUserLog("【CustHistoryLog】客户历史信息处理日志表【插入】【动作记录】任务ID:【" + model_Log.TaskID + "】受理人:【" + model_Log.SolveUserEID.GetValueOrDefault(-2) + "】动作:【" + _action + "】的记录");
        }
        //插入 CustHistoryLog表
        private void InsertCustHistoryLog(CustHistoryLog model)
        {
            if (model != null)
            {
                BLL.CustHistoryLog.Instance.Insert(model);
                //日志
                string action = string.Empty;
                switch (model.Action)
                {
                case (int)Entities.Action.ActionSumbit: action = "提交";
                    break;

                case (int)Entities.Action.ActionTurnOut: action = "转出";
                    break;

                case (int)Entities.Action.ActionApplyTurn: action = "申请转出";
                    break;

                case (int)Entities.Action.ActionTurnOver: action = "结束";
                    break;

                case (int)Entities.Action.ActionAgreeApplyTurn: action = "同意转出";
                    break;
                }
                string status = string.Empty;
                switch (model.Status)
                {
                case (int)Entities.ProcessStatus.ProcessSolve: status = "已解决";
                    break;

                case (int)Entities.ProcessStatus.ProcessUnresolved: status = "未解决";
                    break;

                case (int)Entities.ProcessStatus.ProcessNotSolve: status = "不解决";
                    break;
                }
                BLL.Util.InsertUserLog("【外部提交】客户历史信息处理日志表【插入】任务ID:【" + model.TaskID + "】受理人:【" + BLL.Util.GetEmployeeNameByEID(int.Parse(model.SolveUserEID.ToString())) + "】处理意见:【" + model.Comment + "】动作:【" + action + "】处理状态:【" + status + "】pid:【" + model.Pid + "】的记录", int.Parse(RequestLoginEID));
            }
        }
        //提交 外部使用(插入客户历史信息处理日志)
        private void CustHistoryLogExternalSubmit(out string msg)
        {
            msg = string.Empty;

            if (RequestCHITaskID == "")
            {
                msg = "{'result':'no','msg':'没有任务ID,操作失败!'}";
                return;
            }

            Entities.CustHistoryInfo model_CustHistoryInfo = getModelCustHistoryInfoByTaskID(RequestCHITaskID);
            if (model_CustHistoryInfo == null)
            {
                msg = "{'result':'no','msg':'没有找到该条任务记录,操作失败!'}";
                return;
            }

            int action = (int)Entities.Action.ActionSumbit;//记录动作 默认:提交

            //1 判断是否存在“转到受理人ID(ToNextSolveUserEID)”存在:向当前受理人表插入一条记录
            int nextSolveEID;

            if (RequestToNextSolveUserEID != "")
            {
                if (int.TryParse(RequestToNextSolveUserEID, out nextSolveEID))
                {
                    //判断登陆者权限 如果权限有高级操作权限,则不需要修改自己的记录 自己添加提交

                    //坐席权限
                    //修改:当前受理人表(修改自己的记录) 状态改为0 无效
                    QueryTaskCurrentSolveUser query_TCSUpdate = new QueryTaskCurrentSolveUser();
                    query_TCSUpdate.TaskID = RequestCHITaskID;
                    query_TCSUpdate.CurrentSolveUserEID = int.Parse(RequestLoginEID);
                    query_TCSUpdate.Status = 1;
                    int       count;
                    DataTable dt_TCSUpdate = BLL.TaskCurrentSolveUser.Instance.GetTaskCurrentSolveUser(query_TCSUpdate, "", 1, 10000, out count);
                    if (dt_TCSUpdate.Rows.Count == 0)
                    {
                        msg = "{'result':'no','msg':'您不是当前受理人,操作失败!'}";
                        return;
                    }
                    for (int i = 0; i < dt_TCSUpdate.Rows.Count; i++)
                    {
                        UpdateTaskCurrentSolveUser(dt_TCSUpdate.Rows[i]["RecID"].ToString(), 0);
                    }

                    // 插入:当前受理人表  (插入转到受理人的记录)
                    TaskCurrentSolveUser model_TCS = new TaskCurrentSolveUser();
                    model_TCS.TaskID = RequestCHITaskID;
                    model_TCS.CurrentSolveUserEID = nextSolveEID;
                    //model_TCS.CurrentSolveUserID = getUserEID(nextSolveEID);
                    model_TCS.Status     = 1;
                    model_TCS.CreateTime = DateTime.Now;
                    int _loginerEID;
                    if (int.TryParse(RequestLoginEID, out _loginerEID))
                    {
                        model_TCS.CreateUserAdName = BLL.Util.GetEmployeeDomainAccountByEid(_loginerEID);
                    }
                    InsertTaskCurrentSolveUser(model_TCS);
                    action = (int)Entities.Action.ActionTurnOut;//动作:转出

                    //发送邮件
                    sendEmailByType(2, RequestCHITaskID, nextSolveEID, model_CustHistoryInfo.CustID, _loginerEID);
                    //sendEmail(RequestCHITaskID, nextSolveEID, model_CustHistoryInfo.CustID);
                }
                else
                {
                    msg = "{'result':'no','msg':'转到下一个受理人ID出错,操作失败!'}";
                    return;
                }
            }

            //2 插入处理信息到CustHistoryLog表
            CustHistoryLog model = new CustHistoryLog();

            model.TaskID = RequestCHITaskID;
            //model.SolveUserID = BLL.Util.GetLoginUserID();
            model.SolveUserEID = int.Parse(RequestLoginEID);
            model.SolveTime    = DateTime.Now;
            model.Comment      = RequestComment;
            model.Action       = action;
            int status;

            if (int.TryParse(RequestCHLStatus, out status))
            {
                model.Status = status;
            }

            int toNextSolveUserEID;

            if (int.TryParse(RequestToNextSolveUserEID, out toNextSolveUserEID))
            {
                model.ToNextSolveUserEID = toNextSolveUserEID;
                //model.ToNextSolveUserID = getUserEID(toNextSolveUserEID);
            }
            int _loginEID;

            if (int.TryParse(RequestLoginEID, out _loginEID))
            {
                long pid = getPIDByNextSolveEID(RequestCHITaskID, _loginEID);
                if (pid != 0)
                {
                    model.Pid = pid;
                }
            }

            InsertCustHistoryLog(model);

            //查找登陆人的客户历史关联邮件模板的记录
            QueryCustHistoryTemplateMapping query_templateMappingOld = new QueryCustHistoryTemplateMapping();

            query_templateMappingOld.TaskID       = model.TaskID;
            query_templateMappingOld.SolveUserEID = model.SolveUserEID;
            int       templateCount;
            DataTable dt_templateMappingOld = BLL.CustHistoryTemplateMapping.Instance.GetCustHistoryTemplateMapping(query_templateMappingOld, "", 1, 10000, out templateCount);

            if (dt_templateMappingOld.Rows.Count > 0)
            {
                int _templateID;
                if (int.TryParse(dt_templateMappingOld.Rows[0]["TemplateID"].ToString(), out _templateID))
                {
                    //插入(下一个受理人)到客户历史关联邮件模板
                    CustHistoryTemplateMapping model_templateMappingNew = new CustHistoryTemplateMapping();
                    model_templateMappingNew.TaskID       = query_templateMappingOld.TaskID;
                    model_templateMappingNew.TemplateID   = _templateID;
                    model_templateMappingNew.SolveUserEID = toNextSolveUserEID;
                    model_templateMappingNew.CreateTime   = DateTime.Now;
                    model_templateMappingNew.CreateUserID = _loginEID;
                    BLL.CustHistoryTemplateMapping.Instance.Insert(model_templateMappingNew);
                }
            }

            msg = "{'result':'yes','msg':'操作成功'}";
        }
        //提交(插入客户历史信息处理日志)
        private void CustHistoryLogSubmit(out string msg)
        {
            msg = string.Empty;

            if (RequestCHITaskID == "")
            {
                msg = "{'result':'no','msg':'没有任务ID,操作失败!'}";
                return;
            }

            Entities.CustHistoryInfo model_CustHistoryInfo = getModelCustHistoryInfoByTaskID(RequestCHITaskID);
            if (model_CustHistoryInfo == null)
            {
                msg = "{'result':'no','msg':'没有找到该条任务记录,操作失败!'}";
                return;
            }

            int action = (int)Entities.Action.ActionSumbit;//记录动作 默认:提交

            //0 判断如果是有高级操作按钮的人操作,则在提交时将其他当前受理人的表中记录状态改为无效0
            bool right_AgreeTurnOut = BLL.Util.CheckRight(BLL.Util.GetLoginUserID(), "SYS024BUT1101");
            bool right_TaskTurnOver = BLL.Util.CheckRight(BLL.Util.GetLoginUserID(), "SYS024BUT1102");

            if (right_AgreeTurnOut && right_TaskTurnOver)
            {
                QueryTaskCurrentSolveUser query_taskCurrentSolveUser = new QueryTaskCurrentSolveUser();
                query_taskCurrentSolveUser.TaskID = model_CustHistoryInfo.TaskID;
                query_taskCurrentSolveUser.Status = 1;
                int       count;
                DataTable dt_taskCurrentSolveUser = BLL.TaskCurrentSolveUser.Instance.GetTaskCurrentSolveUser(query_taskCurrentSolveUser, "", 1, 10000, out count);
                for (int i = 0; i < dt_taskCurrentSolveUser.Rows.Count; i++)
                {
                    UpdateTaskCurrentSolveUser(dt_taskCurrentSolveUser.Rows[i]["RecID"].ToString(), 0);
                }
            }

            //1 判断是否存在“转到受理人ID(ToNextSolveUserEID)”存在:向当前受理人表插入一条记录
            int nextSolveEID;

            if (RequestToNextSolveUserEID != "")
            {
                if (int.TryParse(RequestToNextSolveUserEID, out nextSolveEID))
                {
                    //判断登陆者权限 如果权限有高级操作权限,则不需要修改自己的记录 自己添加提交

                    //坐席权限
                    if (!right_AgreeTurnOut && !right_TaskTurnOver)
                    {
                        //修改:当前受理人表(修改自己的记录) 状态改为0 无效
                        QueryTaskCurrentSolveUser query_TCSUpdate = new QueryTaskCurrentSolveUser();
                        query_TCSUpdate.TaskID = model_CustHistoryInfo.TaskID;
                        query_TCSUpdate.CurrentSolveUserEID = BLL.Util.GetLoginUserID();
                        query_TCSUpdate.Status = 1;
                        int       count;
                        DataTable dt_TCSUpdate = BLL.TaskCurrentSolveUser.Instance.GetTaskCurrentSolveUser(query_TCSUpdate, "", 1, 10000, out count);
                        if (dt_TCSUpdate.Rows.Count == 0)
                        {
                            msg = "{'result':'no','msg':'您不是当前受理人,操作失败!'}";
                            return;
                        }
                        for (int i = 0; i < dt_TCSUpdate.Rows.Count; i++)
                        {
                            UpdateTaskCurrentSolveUser(dt_TCSUpdate.Rows[i]["RecID"].ToString(), 0);
                        }
                    }

                    if (right_AgreeTurnOut && right_TaskTurnOver)
                    {
                        //因为是高级权限操作,先判断是否已经转出过,如果没有同意转出而直接点击提交,则向Log表插入一条同意转出的动作记录

                        //1 判断是否是第一次转出,如果是,则插入一条同意转出的动作记录
                        QueryCustHistoryLog query_Log = new QueryCustHistoryLog();
                        query_Log.TaskID = model_CustHistoryInfo.TaskID;
                        int totalCount;
                        query_Log.Action = (int)Entities.Action.ActionAgreeApplyTurn;
                        DataTable dt_Log = BLL.CustHistoryLog.Instance.GetCustHistoryLog(query_Log, "", 1, 10000, out totalCount);
                        if (dt_Log.Rows.Count == 0)
                        {
                            //2 插入 客户历史信息处理日志 (动作记录)
                            InsertCustHistoryLogByAction(model_CustHistoryInfo.TaskID, RequestComment, (int)Entities.Action.ActionAgreeApplyTurn);//动作:同意转出
                        }

                        //3 修改客户历史记录信息表的记录:是否确定投诉 可修改,是否确认发送邮件 必须修改为true,任务状态 必须修改为“处理中”
                        model_CustHistoryInfo.IsSendEmail = true;
                        if (RequestIsComplaint != "")
                        {
                            model_CustHistoryInfo.IsComplaint = bool.Parse(RequestIsComplaint);
                        }
                        model_CustHistoryInfo.ProcessStatus = (int)Entities.EnumTaskStatus.TaskStatusNow;

                        UpdateCustHistoryInfo(model_CustHistoryInfo);
                    }

                    // 插入:当前受理人表  (插入转到受理人的记录)
                    TaskCurrentSolveUser model_TCS = new TaskCurrentSolveUser();
                    model_TCS.TaskID = model_CustHistoryInfo.TaskID;
                    model_TCS.CurrentSolveUserEID = nextSolveEID;
                    model_TCS.CurrentSolveUserID  = getUserEID(nextSolveEID);
                    model_TCS.Status           = 1;
                    model_TCS.CreateTime       = DateTime.Now;
                    model_TCS.CreateUserAdName = BLL.Util.GetDomainAccountByLimitEID(BLL.Util.GetLoginUserID());
                    InsertTaskCurrentSolveUser(model_TCS);
                    action = (int)Entities.Action.ActionTurnOut;//动作:转出

                    //发送邮件
                    sendEmailByType(2, model_CustHistoryInfo.TaskID, nextSolveEID, model_CustHistoryInfo.CustID, BLL.Util.GetLoginUserID());
                }
                else
                {
                    msg = "{'result':'no','msg':'转到下一个受理人ID出错,操作失败!'}";
                    return;
                }
            }

            //2 插入处理信息到CustHistoryLog表
            CustHistoryLog model = new CustHistoryLog();

            //modify by qizq 2013-1-4首先判断是否是通话中
            if (IsCalling == "1")
            {
                if (HistoryLogID == "")
                {
                    //通话中提交把本地录音主键付给实体
                    long CallRecordReCID = 0;
                    if (CallRecordID != "")
                    {
                        if (long.TryParse(CallRecordID, out CallRecordReCID))
                        {
                            model.CallRecordID = CallRecordReCID;
                        }
                    }
                }
            }
            //
            model.TaskID       = model_CustHistoryInfo.TaskID;
            model.SolveUserID  = BLL.Util.GetLoginUserID();
            model.SolveUserEID = BLL.Util.GetLoginUserID();
            model.SolveTime    = DateTime.Now;
            model.Comment      = RequestComment;
            model.Action       = action;
            int status;

            if (int.TryParse(RequestCHLStatus, out status))
            {
                model.Status = status;
            }

            int toNextSolveUserEID;

            if (int.TryParse(RequestToNextSolveUserEID, out toNextSolveUserEID))
            {
                model.ToNextSolveUserEID = toNextSolveUserEID;
                model.ToNextSolveUserID  = getUserEID(toNextSolveUserEID);
            }
            long pid = getPIDByNextSolveEID(model_CustHistoryInfo.TaskID, BLL.Util.GetLoginUserID());

            if (pid != 0)
            {
                model.Pid = pid;
            }
            //modify by qizq 2013-1-4不是在通话中,处理记录已存在更新处理记录
            if (IsCalling != "1" && HistoryLogID != "")
            {
                //通话中提交把本地录音主键付给实体
                long CallRecordReCID = 0;
                if (CallRecordID != "")
                {
                    if (long.TryParse(CallRecordID, out CallRecordReCID))
                    {
                        model.CallRecordID = CallRecordReCID;
                    }
                }
                long HistoryLogIDLog = 0;
                if (long.TryParse(HistoryLogID, out HistoryLogIDLog))
                {
                    model.RecID = HistoryLogIDLog;
                }
                //CustHistoryLog 作废 2016-3-1 强斐
                //UpdateCustHistoryLog(model);
            }
            else
            {
                //CustHistoryLog 作废 2016-3-1 强斐
                //InsertCustHistoryLog(model);
            }

            //查找登陆人的客户历史关联邮件模板的记录
            QueryCustHistoryTemplateMapping query_templateMappingOld = new QueryCustHistoryTemplateMapping();

            query_templateMappingOld.TaskID       = model.TaskID;
            query_templateMappingOld.SolveUserEID = model.SolveUserEID;
            int       templateCount;
            DataTable dt_templateMappingOld = BLL.CustHistoryTemplateMapping.Instance.GetCustHistoryTemplateMapping(query_templateMappingOld, "", 1, 10000, out templateCount);

            if (dt_templateMappingOld.Rows.Count > 0)
            {
                int _templateID;
                if (int.TryParse(dt_templateMappingOld.Rows[0]["TemplateID"].ToString(), out _templateID))
                {
                    //插入(下一个受理人)到客户历史关联邮件模板
                    CustHistoryTemplateMapping model_templateMappingNew = new CustHistoryTemplateMapping();
                    model_templateMappingNew.TaskID       = query_templateMappingOld.TaskID;
                    model_templateMappingNew.TemplateID   = _templateID;
                    model_templateMappingNew.SolveUserEID = toNextSolveUserEID;
                    model_templateMappingNew.CreateTime   = DateTime.Now;
                    model_templateMappingNew.CreateUserID = BLL.Util.GetLoginUserID();
                    BLL.CustHistoryTemplateMapping.Instance.Insert(model_templateMappingNew);
                }
            }

            msg = "{'result':'yes','msg':'操作成功'}";
        }