using System;
using System.Collections.Generic;
using System.Data;
using System.Web;
using System.Web.Mvc;
using WX.CRM.Common;
using WX.CRM.IBLL.TS;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.TS
{
///
/// 微信助手
///
public class WebChatAssistantController : BaseController
{
IWX_TSADDFRIEND wx_tsaddfriend;
IWX_WORKACCOUNT wx_workaccount;
string cookieName = string.Empty;
public WebChatAssistantController(IWX_TSADDFRIEND _wx_tsaddfriend, IWX_WORKACCOUNT _wx_workaccount)
{
this.wx_tsaddfriend = _wx_tsaddfriend;
this.wx_workaccount = _wx_workaccount;
cookieName = "WebChatAssistant_" + Eid;
}
//
// GET: /WebChatAssistant/
public ActionResult Index()
{
Table tab2 = new Table("tablis1");
tab2.isCheckbox = true;
tab2.AddHeadCol("resid", "", "客户ID");
tab2.AddHeadCol("phone", "", "手机号码");
tab2.AddHeadCol("cname", "", "客户名称");
tab2.AddHeadCol("snedcount", "", "助手申请次数");
tab2.AddHeadCol("addcount", "", "已加客服人数");
tab2.AddHeadRow();
//添加分割线
tab2.AddTHeadAndTbodySplit();
ViewBag.gridTable2 = tab2.GetTable();
ViewBag.Eid = Eid;
return View();
}
public JsonResult GetHtmlList(Pager pager, string columns)
{
string resids = string.Empty;
if (Request.Cookies[cookieName] != null)
{
resids = HttpUtility.UrlDecode(Request.Cookies[cookieName].Value);
}
DataTable resTable = wx_tsaddfriend.GetResByCookiResid(resids);
Table table = new Table(columns, true);
table.gridPager = pager;
table.isCheckbox = true;
foreach (DataRow model in resTable.Rows)
{
table.AddCol(model["resid"]);
table.AddCol(model["lastnum3"]);
table.AddCol(model["cname"]);
int count = Convert.ToInt32(model["snedcount"]);//添加人数
if (count <= 1)
{
table.AddCol(model["snedcount"]);
}
else if (count == 2)
{
table.AddCol("" + count + "");
}
else
{
table.AddCol("" + count + "");
}
table.AddCol(model["addcount"]);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
public JsonResult AddRes(string addResTxt)
{
int type = 1;
string resids = string.Empty;
if (Request.Cookies[cookieName] != null)
{
resids = HttpUtility.UrlDecode(Request.Cookies[cookieName].Value);
}
Dictionary resDic = new Dictionary();
string mobileStr = string.Empty;
mobileStr = addResTxt.Replace("\r\n", ",");
mobileStr = mobileStr.Replace("\r", ",");
mobileStr = mobileStr.Replace("\n", ",");
DataTable resTable = wx_tsaddfriend.GetCheckErroRes(mobileStr);
string[] mobiles = mobileStr.Split(',');
foreach (string item in mobiles)
{
if (string.IsNullOrEmpty(item))
continue;
string nitem = item.Trim();
if (!resDic.ContainsKey(nitem) && resids.IndexOf(nitem) == -1)//不在Cookies中的
{
resDic.Add(nitem, nitem);
}
}
string erroResid = string.Empty;
if (resTable.Rows.Count > 0)
{
type = 0;
foreach (DataRow row in resTable.Rows)
{
string nresid = row["resid"].ToString();
erroResid += nresid + "\r\n";
if (resDic.ContainsKey(nresid))//移除 不正确资源
{
resDic.Remove(nresid);
}
}
}
string okResid = string.Empty;
foreach (var item in resDic)
{
if (string.IsNullOrEmpty(okResid))
okResid += item.Key;
else
okResid += "," + item.Key;
}
if (!string.IsNullOrEmpty(resids))
{
okResid += "," + resids;
}
var json = new
{
type = type,
erroResid = erroResid,
okResid = okResid
};
return Json(json, JsonRequestBehavior.AllowGet);
}
public ActionResult SendToPhone()
{
//List wock = wx_workaccount.GetMyWorkAccountList(UserId);
DataTable table = wx_tsaddfriend.GetCanSendWorkAlias(UserId);
List lit = new List();
//foreach (WX_WORKACCOUNT item in wock)
//{
// lit.Add(new SelectListItem() { Text = item.ALIAS + "--" + item.NICKNAME, Value = item.ALIAS });
//}
foreach (DataRow item in table.Rows)
{
lit.Add(new SelectListItem() { Text = item["alias"].ToString() + "--" + item["nickname"].ToString(), Value = item["alias"].ToString() });
}
ViewBag.MyAlias = lit;
return View();
}
public JsonResult SendToPhoneSave(WX_SendResToPhone model)
{
ValidationErrors errors = new ValidationErrors();
if (!ModelState.IsValid)
{
return JsonHandler.ValidateFailMessage();
}
if (string.IsNullOrEmpty(model.Alias))
{
return JsonHandler.ManageMessage("请选择工作微信号,如果选择框没有数据,请去机房安装最新版本APP!", false);
}
string resids = string.Empty;
if (Request.Cookies[cookieName] != null)
{
resids = HttpUtility.UrlDecode(Request.Cookies[cookieName].Value);
}
string nresids = string.Empty;
int rescount = 0;
foreach (string item in resids.Split(','))
{
if (string.IsNullOrEmpty(item))
{
continue;
}
if (wx_tsaddfriend.IsCanSend(item))
{
rescount++;
if (string.IsNullOrEmpty(nresids))
nresids = item;
else
nresids += "," + item;
}
}
bool result = true;
if (string.IsNullOrEmpty(nresids))
{
errors.Add("资源数不能为零!");
result = false;
}
else if (rescount > 30)
{
errors.Add("资源数一次性不要超过30个!");
result = false;
}
else
{
result = wx_tsaddfriend.CreatePici(nresids, model.Alias, model.HolloMsg, model.timeType, model.exe_date, model.exe_time, ref errors);
}
return JsonHandler.UpdateMessage(errors, result);
}
public ActionResult WhiteResApply()
{
DataTable table = wx_tsaddfriend.GetCanSendWorkAlias(UserId);
List lit = new List();
//foreach (WX_WORKACCOUNT item in wock)
//{
// lit.Add(new SelectListItem() { Text = item.ALIAS + "--" + item.NICKNAME, Value = item.ALIAS });
//}
foreach (DataRow item in table.Rows)
{
lit.Add(new SelectListItem() { Text = item["alias"].ToString() + "--" + item["nickname"].ToString(), Value = item["alias"].ToString() });
}
ViewBag.MyAlias = lit;
return View();
}
public ActionResult WhiteResApplySave(WX_WhiteResApply model)
{
ValidationErrors errors = new ValidationErrors();
if (!ModelState.IsValid)
{
return JsonHandler.ValidateFailMessage();
}
if (string.IsNullOrEmpty(model.Alias))
{
return JsonHandler.ManageMessage("请选择工作微信号,如果选择框没有数据,请去机房安装最新版本APP!", false);
}
int dept = 1;
if (saleDeptCode == "ZJZX04")
{//如果是三部
dept = 3;
}
bool result = wx_tsaddfriend.WhiteResApply(model.Alias, model.HolloMsg, model.timeType, model.exe_date, model.exe_time, model.ResCount, Eid, dept, ref errors);
return JsonHandler.UpdateMessage(errors, result);
}
#region 加人日志列表--个人
public ActionResult TsLog()
{
//IBAS_COMPANY_Q doa = WebHelper.Infrastructure.NinjectControllerFactory.ninjectKernel.Get();
//ToolBar
//table
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("pici", "8%", "批次");
tab.AddHeadCol("alias", "8%", "微信号");
tab.AddHeadCol("validatemsg", "", "打招呼信息");
tab.AddHeadCol("rescount", "8%", "资源数");
tab.AddHeadCol("ctime", "8%", "创建时间");
tab.AddHeadCol("executetime", "8%", "设定的执行时间");
tab.AddHeadCol("snedstuts", "8%", "推送状态");
tab.AddHeadCol("starttime", "8%", "实际开始执行时间");
tab.AddHeadCol("endtime", "8%", "实际结束时间");
tab.AddHeadCol("erromsg", "", "错误信息");
tab.AddHeadCol("type", "8%", "来源");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,30");
List wock = wx_workaccount.GetMyWorkAccountList(UserId);
ViewBag.workAccount = wock;
return View();
}
[HttpPost]
///
/// 按照条件获取数据
///
///
///
///
public JsonResult TsLogGetHtmlList(Pager pager, string alias, string columns)
{
DataTable datable = wx_tsaddfriend.ResLogReport(Eid, alias, ref pager);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (DataRow row in datable.Rows)
{
table.AddCol(row["pici"]);
table.AddCol(row["alias"]);
table.AddCol(string.Format("{0}", row["validatemsg"]));
table.AddCol(row["rescount"]);
table.AddCol(row["ctime"]);
table.AddCol(row["executetime"]);
if (row["snedstuts"] != DBNull.Value)
{
table.AddCol(getSendStatus(Convert.ToInt32(row["snedstuts"])));
}
else
{
table.AddCol("其他");
}
table.AddCol(row["starttime"]);
table.AddCol(row["endtime"]);
string errMsg = string.Format("{0}", row["erromsg"]);
if (errMsg.IndexOf("\"ActionStatus\":\"OK\"") > -1)
table.AddCol("");
else
table.AddCol(string.Format("{0}", row["erromsg"]));
if (row["whiteid"] != DBNull.Value && Convert.ToInt64(row["whiteid"]) > 0)
table.AddCol("【白板资源申请】");
else
table.AddCol("【自填资源】");
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
private string getSendStatus(int sendstatus)
{
switch (sendstatus)
{
case 0: return "未推送"; break;
case 1: return "发送成功"; break;
case 2: return "发送失败"; break;
default: return "其他";
}
}
#endregion
#region 加人日志列表--个人
[AuthorizeRedirect(Roles = InitRights.CONST_微信助手日志)]
public ActionResult TsLog_Manager()
{
//IBAS_COMPANY_Q doa = WebHelper.Infrastructure.NinjectControllerFactory.ninjectKernel.Get();
//ToolBar
ToolBar tool = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.微信助手日志, userRightId);
tool.AddOtherButton("Other1", "测试推送加人", "icon-lookup", "Test_Click", true);
tool.AllowButton(toolbtn);
ViewBag.ToolBar = tool;
//table
Pager pager = new Pager() { page = 1, rows = 10 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("pici", "8%", "批次");
tab.AddHeadCol("eid", "5%", "客服");
tab.AddHeadCol("alias", "8%", "微信号");
tab.AddHeadCol("validatemsg", "", "打招呼信息");
tab.AddHeadCol("rescount", "4%", "资源数");
tab.AddHeadCol("ctime", "8%", "创建时间");
tab.AddHeadCol("executetime", "8%", "设定的执行时间");
tab.AddHeadCol("snedstuts", "8%", "推送状态");
tab.AddHeadCol("starttime", "8%", "实际开始执行时间");
tab.AddHeadCol("endtime", "8%", "实际结束时间");
tab.AddHeadCol("erromsg", "", "错误信息");
tab.AddHeadCol("type", "8%", "来源");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "10,20,30");
return View();
}
[HttpPost]
///
/// 按照条件获取数据
///
///
///
///
[AuthorizeRedirect(Roles = InitRights.CONST_微信助手日志)]
public JsonResult TsLog_ManagerGetHtmlList(Pager pager, string alias, string eid, string columns)
{
decimal veid = 0;
if (eid != null && !decimal.TryParse(eid.Trim(), out veid))
{
throw new Exception("请输入正确的工号!");
}
DataTable datable = wx_tsaddfriend.ResLogReport_Manager(veid, alias, ref pager);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (DataRow row in datable.Rows)
{
table.AddCol(row["pici"]);
decimal x_eid = Convert.ToDecimal(row["eid"]);
table.AddCol(InnerUserHelper.Instance.GetEidAndTrueName(InnerUserHelper.Instance.GetUserIdByEid(x_eid)));
table.AddCol(row["alias"]);
table.AddCol(string.Format("{0}", row["validatemsg"]));
table.AddCol(row["rescount"]);
table.AddCol(row["ctime"]);
table.AddCol(row["executetime"]);
if (row["snedstuts"] != DBNull.Value)
{
table.AddCol(getSendStatus(Convert.ToInt32(row["snedstuts"])));
}
else
{
table.AddCol("其他");
}
table.AddCol(row["starttime"]);
table.AddCol(row["endtime"]);
string errMsg = string.Format("{0}", row["erromsg"]);
if (errMsg.IndexOf("\"ActionStatus\":\"OK\"") > -1)
table.AddCol("");
else
table.AddCol(string.Format("{0}", row["erromsg"]));
if (row["whiteid"] != DBNull.Value && Convert.ToInt64(row["whiteid"]) > 0)
table.AddCol("【白板资源申请】");
else
table.AddCol("【自填资源】");
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
[AuthorizeToolBar(InitRights.CONST_微信助手日志, InitToolBar.CONST_Details)]
public ActionResult TsLog_Detial()
{
//table
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("pici", "", "批次");
tab.AddHeadCol("resid", "", "客户ID");
tab.AddHeadCol("state", "", "状态");
tab.AddHeadCol("zdtime", "", "执行时间");
tab.AddHeadCol("username", "", "客户微信用户名");
tab.AddHeadCol("snedstuts", "", "同意时间");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead();
return View();
}
[HttpPost]
///
/// 按照条件获取数据
///
///
///
///
[AuthorizeToolBar(InitRights.CONST_微信助手日志, InitToolBar.CONST_Details)]
public JsonResult TsLog_DetialGetHtmlList(Pager pager, decimal pici, string columns)
{
DataTable datable = wx_tsaddfriend.ResLogReport_Detial(pici);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (DataRow row in datable.Rows)
{
table.AddCol(row["pici"]);
table.AddCol(row["resid"]);
table.AddCol(row["state"]);
table.AddCol(row["zdtime"]);
table.AddCol(row["username"]);
table.AddCol(row["createtime"]);
table.AddRow();
}
var json = new
{
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
#endregion
#region 网管测试加人功能
[AuthorizeToolBar(InitRights.CONST_微信助手日志, InitToolBar.CONST_Other1)]
public ActionResult TestSendPhone()
{
return View();
}
[AuthorizeToolBar(InitRights.CONST_微信助手日志, InitToolBar.CONST_Other1)]
public JsonResult TestSendToPhoneSave(Wx_TestSendPhone model)
{
ValidationErrors errors = new ValidationErrors();
if (!ModelState.IsValid)
{
return JsonHandler.ValidateFailMessage();
}
if (string.IsNullOrEmpty(model.Alias))
{
return JsonHandler.ManageMessage("请选择工作微信号,如果选择框没有数据,请去机房安装最新版本APP!", false);
}
string resids = ResUtil.CreateResId(model.Phone);
bool result = wx_tsaddfriend.CreatePici(resids, model.Alias, model.HolloMsg, model.timeType, model.exe_date, model.exe_time, ref errors);
return JsonHandler.UpdateMessage(errors, result);
}
#endregion
}
}