/// <summary> /// 新增一个回复 /// </summary> /// <param name="ar"></param> public void AddAdviceReply(AdviceReply ar) { ar.ID = We7Helper.CreateNewID(); ar.CreateDate = DateTime.Now; Assistant.Insert(ar); UpdateAdviceCount(ar.AdviceID); }
/// <summary> /// 审核通过 /// </summary> /// <param name="sender"></param> /// <param name="e"></param> protected void ReportButton_Click(object sender, EventArgs e) { if (OperationInfo(AdviceState.Checking)) { Advice a = ThisAdvice; AdviceReply reply = AdviceReplyHelper.GetAdviceReplyByAdviceID(AdviceID); if (reply == null) { reply = new AdviceReply(); reply.AdviceID = AdviceID; reply.Suggest = ToAdviceTextBox.Text; reply.UserID = AccountID; reply.CreateDate = DateTime.Now; reply.Updated = DateTime.Now; } reply.Content = We7Helper.ConvertPageBreakFromVisualToChar(ReplyContentTextBox.Value); AdviceReplyHelper.UpdateReplyByAdviceID(reply, null); if (a.State == (int)AdviceState.Finished) { if (chbSendEmail.Checked) { AdviceEmailConfigs adviceEmailConfigs = new AdviceEmailConfigs(); AdviceEmailConfigInfo info = adviceEmailConfigs["ReplyUser"]; AdviceHelper.SendResultMailToAdvicer(a, reply, null, info); } } Messages.ShowMessage(" :) 审核成功!"); //记录日志 string content = string.Format("审核通过了留言反馈:“{0}”的详细信息", AdviceID); AddLog("留言反馈详细信息", content); Response.Write("<script>alert('审核成功!');location.href='AdviceList.aspx?adviceTypeID=" + ThisAdvice.TypeID + "';</script>"); //Initialize(); } }
/// <summary> /// 获取办理人名称 /// </summary> /// <param name="adviceID"></param> /// <returns></returns> public string GetUserName(string adviceID, string toOtherHandleUserID) { string userID = ""; string userName = ""; string action = " <b>转</b> "; if (toOtherHandleUserID.Trim() != "") { userID = toOtherHandleUserID; } if (adviceID != "") { AdviceReply ar = AdviceReplyHelper.GetAdviceReplyByAdviceID(adviceID); if (ar != null) { userID = ar.UserID; } } if (userID != "" && userID != null) { userName = AccountHelper.GetAccount(userID, new string[] { "LastName" }).LastName; } if (!string.IsNullOrEmpty(userName)) { userName = action + userName; } return(userName); }
/// <summary> /// 发送处理结果到提交者(用户)邮箱 /// </summary> /// <param name="advice"></param> /// <param name="reply"></param> /// <param name="adviceType"></param> /// <returns></returns> public bool SendResultMailToAdvicer(Advice advice, AdviceReply reply, AdviceType adviceType, AdviceEmailConfigInfo info) { try { if (adviceType == null) { adviceType = AdviceTypeHelper.GetAdviceType(advice.TypeID); } string userEmail = advice.Email; MailHelper mailHelper = GetMailHelper(adviceType); string siteFullName = GeneralConfigs.GetConfig().SiteFullName; //string body = "尊敬的{0}先生/女士:您好!<br><br>"; //body += "我们于{1}接收到您的反馈信息({2}),有关部门已做出处理,现答复如下:<br><br>"; //body += "{3}<br><br>"; //body += "感谢您的参与!<br>"; //body += "{4}"; //body = string.Format(body, advice.Name, advice.CreateDate.ToLongDateString(), advice.Title, reply.Content, GeneralConfigs.GetConfig().SiteFullName+ "|" + SiteConfigs.GetConfig().RootUrl); info.EmailContent = info.EmailContent.Replace("{UserName}", advice.Name).Replace("{DateTime}", advice.CreateDate.ToLongDateString()).Replace("{Title}", advice.Title).Replace("{EmailContent}", reply.Content).Replace("{SiteFullName}", GeneralConfigs.GetConfig().SiteFullName); string subject = info.EmailTitle.Replace("{SiteTitle}", GeneralConfigs.GetConfig().SiteTitle.Trim().Replace("\n", "")).Replace("{AdviceTitle}", advice.Title); string priority = "Normal";//过期提示,优先级别 mailHelper.Send(userEmail, mailHelper.AdminEmail, subject, info.EmailContent, priority); return(true); } catch (Exception ex) { return(false); } }
/// <summary> /// 获取回复对象 /// </summary> /// <param name="id"></param> /// <param name="fields"></param> /// <returns></returns> public AdviceReply GetAdviceReply(string id, string[] fields) { AdviceReply ar = new AdviceReply(); Criteria c = new Criteria(CriteriaType.Equals, "ID", id); List <AdviceReply> aList = Assistant.List <AdviceReply>(c, null, 0, 0, fields); if (aList != null && aList.Count > 0) { ar = aList[0]; } return(ar); }
/// <summary> /// 页面加载xml数据 /// </summary> void LoadAdvices() { List <AdviceReply> adviceReply = new List <AdviceReply>(); string root = Server.MapPath("/_Data/ErrorEmail/"); if (Directory.Exists(root)) { DirectoryInfo dir = new DirectoryInfo(root); FileInfo[] files = dir.GetFiles("*.xml"); for (int i = files.Length - 1; i >= 0; i--) { FileInfo file = files[i]; AdviceReply ar = new AdviceReply(); XmlDocument xmlDoc = new XmlDocument(); xmlDoc.Load(file.FullName); XmlNode node = xmlDoc.SelectSingleNode("/root/infoSubject"); ar.Title = We7Helper.Base64Decode(node.InnerText); node = xmlDoc.SelectSingleNode("/root/infoBody"); ar.Content = We7Helper.Base64Decode(node.InnerText); node = xmlDoc.SelectSingleNode("/root/infoUser"); ar.UserEmail = We7Helper.Base64Decode(node.InnerText); node = xmlDoc.SelectSingleNode("/root/infoTime"); ar.CreateDate = Convert.ToDateTime(node.InnerText); ar.MailFile = file.Name; adviceReply.Add(ar); } } if (adviceReply != null) { Pager.RecorderCount = adviceReply.Count; } else { Pager.RecorderCount = 0; } if (Pager.Count < 0) { Pager.PageIndex = 0; } Pager.FreshMyself(); if (Pager.Count <= 0) { DataGridView.DataSource = null; DataGridView.DataBind(); return; } DataGridView.DataSource = adviceReply.GetRange(Pager.Begin, Pager.Count); DataGridView.DataBind(); }
public string GetUserName(string adviceID) { string userID = ""; string userName = ""; if (adviceID != "") { AdviceReply ar = AdviceReplyHelper.GetAdviceReplyByAdviceID(adviceID); if (ar != null) { userID = ar.UserID; } } if (userID != "" && userID != null) { userName = AccountHelper.GetAccount(userID, new string[] { "LoginName" }).LoginName; } return(userName); }
/// <summary> /// 邮件转交操作 /// </summary> public void ToOtherReplyUser() { AdviceReply adviceReply = new AdviceReply(); //adviceReply.UserID = UserIDTextBox.Text; adviceReply.UserID = ddlToOtherHandleUserID.SelectedValue; if (AdviceID.Trim() != "") { adviceReply.AdviceID = AdviceID; AdviceReply ar = AdviceReplyHelper.GetAdviceReplyByAdviceID(AdviceID); if (ar == null) { AdviceReplyHelper.AddAdviceReply(adviceReply); } } List <string> list = new List <string>(); list.Add(AdviceID); //发送邮件给办理人 AdviceHelper.SendMailToHandler(list, adviceReply.UserID, AdviceTypeID, txtRemark.Text, rblPriority.SelectedValue); }
/// <summary> /// 操作信息 /// </summary> /// <returns></returns> protected void OperationInfo(string adviceID) { try { AdviceReply adviceReply = new AdviceReply(); adviceReply.AdviceID = adviceID; adviceReply.Content = ReplayContent.InnerHtml; adviceReply.UserID = AccountID; adviceReply.Title = EmailTitleLabel.Text; adviceReply.MailBody = InfoRawManage.InnerText; AdviceReplyHelper.AddAdviceReply(adviceReply); AdviceHelper.UpdateAdviceType(adviceID, (int)AdviceState.Finished); Advice a = AdviceHelper.GetAdvice(adviceID); if (a.State == (int)AdviceState.Checking) { AdviceHelper.UpdateAdviceProcess(adviceID, "1", AdviceState.Checking); Processing ap = ProcessHelper.CreateAdviceProcess(adviceID, AccountID); ProcessHelper.UpdateAdviceProcess(ap, a); InsertArticleProcessHistory(adviceID); } else if (a.State == (int)AdviceState.Checking && a.ProcessState == ((int)ProcessStates.Unaudit).ToString()) { AdviceHelper.UpdateAdviceProcess(adviceID, ((int)ProcessStates.FirstAudit).ToString(), AdviceState.Checking); Processing ap = ProcessHelper.GetAdviceProcess(a); ap.CurLayerNO = "1"; ap.ProcessAccountID = AccountID; ap.ProcessDirection = "1"; ap.Remark = ReplayContent.InnerText; ProcessHelper.UpdateAdviceProcess(ap, a); InsertArticleProcessHistory(adviceID); } } catch (Exception) { Messages.ShowMessage(" :( 信息操作失败!"); } }
/// <summary> /// 操作信息 /// </summary> /// <returns></returns> protected bool OperationInfo(AdviceState state, string direction, bool saveReply) { try { AdviceType adviceType = AdviceTypeHelper.GetAdviceType(AdviceTypeID); Advice a = ThisAdvice; //处理反馈回复信息 AdviceReply adviceReply = null; if (saveReply) { adviceReply = new AdviceReply(); adviceReply.AdviceID = AdviceID; adviceReply.Content = We7Helper.ConvertPageBreakFromVisualToChar(ReplyContentTextBox.Value); adviceReply.Suggest = ToAdviceTextBox.Text; adviceReply.UserID = AccountID; adviceReply.CreateDate = DateTime.Now; adviceReply.Updated = DateTime.Now; //增加回复数 a.ReplyCount += 1; } //更新反馈信息 a.Updated = DateTime.Now; a.ToHandleTime = DateTime.Now; if (UserIDTextBox.Text.Trim() != "") { a.ToOtherHandleUserID = UserIDTextBox.Text.ToString(); } else { a.ToOtherHandleUserID = AccountID; } a.State = (int)state; //处理反馈进度 Advice oldAdvice = AdviceHelper.GetAdvice(AdviceID); Processing ap = ProcessHelper.GetAdviceProcess(oldAdvice); ap.UpdateDate = DateTime.Now; ap.ProcessAccountID = AccountID; ap.ApproveName = AccountHelper.GetAccount(AccountID, new string[] { "LastName" }).LastName; ap.ProcessDirection = direction.ToString(); ap.Remark = ToAdviceTextBox.Text; if (state == AdviceState.WaitHandle) { a.ProcessState = ((int)state).ToString(); string myText = "请 {0} 办理一下反馈“{1}”。"; string userName = AccountHelper.GetAccount(UserIDTextBox.Text, new string[] { "LastName" }).LastName; ap.Remark = string.Format(myText, userName, a.Title) + "<br>" + ap.Remark; } switch (state) { case AdviceState.All: break; case AdviceState.WaitAccept: case AdviceState.WaitHandle: case AdviceState.Finished: break; case AdviceState.Checking: int auditLevel = 0; if (We7Helper.IsNumber(a.ProcessState)) { auditLevel = int.Parse(a.ProcessState); } if (auditLevel < 0) { auditLevel = 0; } auditLevel += 1; if (auditLevel > adviceType.FlowSeries) { a.ProcessState = ((int)AdviceState.Finished).ToString(); a.State = (int)AdviceState.Finished; a.MustHandle = 0; } else { a.ProcessState = auditLevel.ToString(); } break; default: break; } ap.CurLayerNO = a.ProcessState; ap.AdviceState = (AdviceState)a.State; AdviceHelper.OperationAdviceInfo(adviceReply, oldAdvice, ap); if (state == AdviceState.WaitHandle) { AdviceHelper.UpdateAdvice(a, new string[] { "ToHandleTime", "ToOtherHandleUserID" }); } if (state == AdviceState.Finished) { AdviceEmailConfigs adviceEmailConfigs = new AdviceEmailConfigs(); AdviceEmailConfigInfo info = adviceEmailConfigs["ReplyUser"]; AdviceHelper.SendResultMailToAdvicer(a, adviceReply, adviceType, info); } return(true); } catch (Exception ex) { Messages.ShowError(" 信息操作失败!原因:" + ex.Message); return(false); } }
/// <summary> /// 操作按钮状态初始化 /// </summary> private void InitializeButtons() { bool canAccept = false; //反馈受理 bool canAdmin = false; //反馈管理 bool canHandle = false; //反馈办理 bool canRead = false; //查看 bool canCheck = false; //审核 AdviceType adviceType = AdviceTypeHelper.GetAdviceType(AdviceTypeID); //模型不为空,并且是用户登陆时验证是否具有权限 if (AdviceTypeID != null && !We7Helper.IsEmptyID(AccountID)) { List <string> contents = AccountHelper.GetPermissionContents(AccountID, AdviceTypeID); canAccept = contents.Contains("Advice.Accept"); canAdmin = contents.Contains("Advice.Admin"); canHandle = contents.Contains("Advice.Handle"); canRead = contents.Contains("Advice.Read"); //canAccept = AccountHelper.HavePermission(AccountID, AdviceTypeID, "Advice.Accept"); //canAdmin = AccountHelper.HavePermission(AccountID, AdviceTypeID, "Advice.Admin"); //canHandle = AccountHelper.HavePermission(AccountID, AdviceTypeID, "Advice.Handle"); //canRead = AccountHelper.HavePermission(AccountID, AdviceTypeID, "Advice.Read"); if (adviceType.FlowSeries > 0) { canCheck = true; } } else { canAccept = canAdmin = canCheck = canHandle = true; } canCheck = canCheck && (ThisAdvice.State == (int)AdviceState.Checking); canHandle = canHandle && (ThisAdvice.State == (int)AdviceState.WaitHandle || ThisAdvice.State == (int)AdviceState.WaitAccept && adviceType.StateText == "直接办理"); canAccept = canAccept && (ThisAdvice.State == (int)AdviceState.WaitAccept); TransactHyperLink.Visible = canHandle && (adviceType.StateText != "上报办理"); //办理 ToOtherHyperLink.Visible = (canHandle || canAccept) && (adviceType.StateText != "直接办理"); //转办 模型类别判断 trToOtherHandleUser.Visible = ToOtherHyperLink.Visible; //是否转办 trHandleRemark.Visible = ToOtherHyperLink.Visible; //转办备注 trPriority.Visible = ToOtherHyperLink.Visible; //邮件优先级 AuditReportHyperLink.Visible = canHandle && (adviceType.StateText == "上报办理"); //上报审核 ReportHyperLink.Visible = canCheck; chbSendEmail.Visible = canCheck; fontSendEmail.Visible = canCheck; ReturnHyperLink.Visible = (canHandle || canCheck) && (adviceType.StateText != "直接办理");//退回重办 办理类别 ReplyContentTextBox.Visible = canHandle || ThisAdvice.State == (int)AdviceState.Checking; AdminHandHyperLink.Visible = (canHandle || canAccept) && (ThisAdvice.State != (int)AdviceState.Finished); switch (adviceType.StateText) { case "转交办理": if (canHandle) { ToAdviceTextBox.Visible = true; toAdviceLabel.Text = "转交备注:"; } break; case "上报办理": switch (ThisAdvice.State) { case (int)AdviceState.Checking: toAdviceLabel.Text = "审核意见:"; ToAdviceTextBox.Visible = true; break; case (int)AdviceState.WaitHandle: toAdviceLabel.Visible = false; ToAdviceTextBox.Visible = false; break; case (int)AdviceState.WaitAccept: toAdviceLabel.Visible = false; ToAdviceTextBox.Visible = false; break; } break; case "直接办理": ToAdviceTextBox.Visible = false; break; default: break; } AdviceReply reply = AdviceReplyHelper.GetAdviceReplyByAdviceID(AdviceID); if (reply != null) { if (reply.Content != null && reply.Content != "") { Account accountModel = AccountHelper.GetAccount(ThisAdvice.ToOtherHandleUserID, new string[] { "LastName", "DepartmentID" }); string departmentAndUser = ""; if (accountModel != null) { Department dp = AccountHelper.GetDepartment(accountModel.DepartmentID, new string[] { "Name" }); if (dp != null && !string.IsNullOrEmpty(dp.Name)) { departmentAndUser = "******" + dp.Name + " - " + accountModel.LastName; } else { departmentAndUser = "******" + accountModel.LastName; } } if (ReplyContentTextBox.Visible) { ReplyContentTextBox.Value = We7Helper.ConvertPageBreakFromCharToVisual(reply.Content); } else { replyDiv.InnerHtml = We7Helper.ConvertPageBreakFromCharToVisual(reply.Content) + departmentAndUser; } } } }
/// <summary> /// 更新一个回复 /// </summary> /// <param name="adviceReply"></param> /// <param name="fields"></param> public void UpdateReplyByAdviceID(AdviceReply adviceReply, string[] fields) { Assistant.Update(adviceReply, fields); }
/// <summary> /// 删除一个回复 /// </summary> /// <param name="id"></param> public void DeleteAdviceReply(string id) { AdviceReply ar = GetAdviceReply(id); Assistant.Delete(ar); }
/// <summary> /// 根据回复邮件更新反馈回复 /// 此方法仅用于反射环境 /// </summary> /// <param name="subject">标题</param> /// <param name="sn">反馈信息流水号</param> /// <param name="body">回复内容</param> /// <param name="replyTime">回复时间</param> /// <returns></returns> public bool UpdateReplyByEmail(string subject, string sn, string body, string replyTime, string rawManage, string user, string stateText) { int start = sn.IndexOf("#"); HelperFactory hf = (HelperFactory)HttpContext.Current.Application[HelperFactory.ApplicationID]; Assistant = hf.Assistant; AdviceReplyHelper arh = new AdviceReplyHelper(); arh.Assistant = hf.Assistant; string adviceSN = sn.Remove(start, 1); if (adviceSN != "") { int intAdviceSN = 0; if (!int.TryParse(adviceSN, out intAdviceSN)) { return(false); } Criteria c = new Criteria(CriteriaType.Equals, "SN", adviceSN); if (Assistant.Count <Advice>(c) < 0) { return(false); } else { List <Advice> advice = Assistant.List <Advice>(c, null); for (int i = 0; i < advice.Count; i++) { if (advice != null) { //处理反馈回复信息 AdviceReply adviceReply = new AdviceReply(); adviceReply.AdviceID = advice[i].ID; adviceReply.Title = subject; adviceReply.Content = body; Account account = AccountHelper.GetAccountByEmail(user); if (account == null) { return(true); } adviceReply.UserID = account.ID; adviceReply.MailBody = rawManage; adviceReply.CreateDate = DateTime.Now; adviceReply.Updated = DateTime.Now; //更新反馈信息 advice[i].ReplyCount += 1;//增加回复数 advice[i].Updated = DateTime.Now; advice[i].ToHandleTime = Convert.ToDateTime(replyTime); advice[i].ToOtherHandleUserID = adviceReply.UserID; if (stateText == "上报办理") { advice[i].State = (int)AdviceState.Checking; advice[i].ProcessState = ((int)AdviceState.Checking).ToString(); } else { advice[i].State = (int)AdviceState.Finished; advice[i].ProcessState = ((int)ProcessStates.Finished).ToString(); } advice[i].IsRead = 1; //处理反馈进度 Processing ap = ProcessingHelper.GetAdviceProcess(advice[i]); if (ap == null) { ap = new Processing(); ap.ObjectID = advice[i].ID; ap.CurLayerNO = "1"; ap.ProcessAccountID = adviceReply.UserID; ap.ProcessDirection = "1"; ap.Remark = ""; ap.CreateDate = DateTime.Now; } ap.UpdateDate = DateTime.Now; ap.ProcessAccountID = adviceReply.UserID; ap.ProcessDirection = advice[i].ProcessDirection = "1"; #region 孟添加 AdviceType adviceType = AdviceTypeHelper.GetAdviceType(advice[i].TypeID); switch (advice[i].State) { case (int)AdviceState.All: break; case (int)AdviceState.WaitAccept: case (int)AdviceState.WaitHandle: case (int)AdviceState.Finished: break; case (int)AdviceState.Checking: int auditLevel = 0; if (We7Helper.IsNumber(advice[i].ProcessState)) { auditLevel = int.Parse(advice[i].ProcessState); } if (auditLevel < 0) { auditLevel = 0; } auditLevel += 1; if (auditLevel > adviceType.FlowSeries) { advice[i].ProcessState = ((int)AdviceState.Finished).ToString(); advice[i].State = (int)AdviceState.Finished; advice[i].MustHandle = 0; } else { advice[i].ProcessState = auditLevel.ToString(); } break; default: break; } ap.CurLayerNO = advice[i].ProcessState; #endregion OperationAdviceInfo(adviceReply, advice[i], ap); if (advice[i].State == (int)AdviceState.Finished) { AdviceEmailConfigs adviceEmailConfigs = new AdviceEmailConfigs(); AdviceEmailConfigInfo info = adviceEmailConfigs["ReplyUser"]; SendResultMailToAdvicer(advice[i], adviceReply, null, info); } if (stateText == "上报办理") { advice[i].State = (int)AdviceState.Checking; AdviceReplyHelper.UpdateReplyByAdviceID(adviceReply, null); } else { advice[i].State = (int)AdviceState.Finished; } UpdateAdvice(advice[i], new string[] { "IsRead", "State", "ProcessState" }); } } return(true); } } else { return(false); } }
/// <summary> /// 根据回复邮件更新反馈回复 /// 此方法仅用于反射环境 /// </summary> /// <param name="subject">标题</param> /// <param name="sn">反馈信息流水号</param> /// <param name="body">回复内容</param> /// <param name="replyTime">回复时间</param> /// <returns></returns> public bool UpdateReplyByEmail(string subject, string sn, string body, string replyTime, string rawManage, string user) { int start = sn.IndexOf("#"); HelperFactory hf = (HelperFactory)HttpContext.Current.Application[HelperFactory.ApplicationID]; Assistant = hf.Assistant; AdviceReplyHelper arh = new AdviceReplyHelper(); arh.Assistant = hf.Assistant; string adviceSN = sn.Remove(start, 1); if (adviceSN != "") { int intAdviceSN = 0; if (!int.TryParse(adviceSN, out intAdviceSN)) { return(false); } Criteria c = new Criteria(CriteriaType.Equals, "SN", adviceSN); if (Assistant.Count <Advice>(c) < 0) { return(false); } else { List <Advice> advice = Assistant.List <Advice>(c, null); for (int i = 0; i < advice.Count; i++) { if (advice != null) { //处理反馈回复信息 AdviceReply adviceReply = new AdviceReply(); adviceReply.AdviceID = advice[i].ID; adviceReply.Title = subject; adviceReply.Content = body; Account account = AccountHelper.GetAccountByEmail(user); if (account == null) { return(true); } adviceReply.UserID = account.ID; adviceReply.MailBody = rawManage; adviceReply.CreateDate = DateTime.Now; adviceReply.Updated = DateTime.Now; //更新反馈信息 advice[i].ReplyCount += 1;//增加回复数 advice[i].Updated = DateTime.Now; advice[i].ToHandleTime = Convert.ToDateTime(replyTime); advice[i].ToOtherHandleUserID = adviceReply.UserID; advice[i].State = (int)AdviceState.Finished; advice[i].IsRead = 1; //处理反馈进度 Processing ap = ProcessingHelper.GetAdviceProcess(advice[i]); if (ap == null) { ap = new Processing(); ap.ObjectID = advice[i].ID; ap.CurLayerNO = "1"; ap.ProcessAccountID = adviceReply.UserID; ap.ProcessDirection = "1"; ap.Remark = ""; ap.CreateDate = DateTime.Now; } ap.UpdateDate = DateTime.Now; ap.ProcessAccountID = adviceReply.UserID; //ap.Remark = adviceReply.Content; ap.ProcessDirection = advice[i].ProcessDirection = "1"; advice[i].ProcessState = ((int)ProcessStates.Finished).ToString(); ap.CurLayerNO = advice[i].ProcessState; OperationAdviceInfo(adviceReply, advice[i], ap); if (advice[i].State == (int)AdviceState.Finished) { AdviceEmailConfigs adviceEmailConfigs = new AdviceEmailConfigs(); AdviceEmailConfigInfo info = adviceEmailConfigs["ReplyUser"]; SendResultMailToAdvicer(advice[i], adviceReply, null, info); } UpdateAdvice(advice[i], new string[] { "IsRead" }); } } return(true); } } else { return(false); } }