using Ninject;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.BLL.Base;
using WX.CRM.Common;
using WX.CRM.IBLL.Csvr;
using WX.CRM.IBLL.Util;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.WebHelper;
namespace WX.CRM.WEB.Controllers.WeiXin
{
public class ManualAddWeixinFriendController : BaseController
{
ValidationErrors errors = new ValidationErrors();
[Inject]
public IWX_MANUALADDWEIXINFRIEND wx_ManualAddWeixinFriend_BL { get; set; }
[Inject]
public IWX_RCONTACT wx_Rcontact_BL { get; set; }
[Inject]
public IWX_WORKACCOUNT wx_WorkAccount_BL { get; set; }
[Inject]
public ICSVR_CALLRECORD csvr_CallRecord_BL { get; set; }
[Inject]
public ICACHE_Q cache_BL { get; set; }
public ManualAddWeixinFriendController()
{
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_手工添加微信好友)]
public ActionResult Index()
{
var tool = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.手工添加微信好友, userRightId);
tool.AllowButton(toolbtn);
ViewBag.ToolBar = tool;
Pager gp = new Pager() { page = 1, rows = 20 };
Table tab = new Table("tablist");
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("WORKALIAS", "", "工作微信号");
tab.AddHeadCol("WORKUSERNAME", "", "工作微信用户名");
tab.AddHeadCol("WorkAccountUserId", "", "工作微信客服");
tab.AddHeadCol("USERNAME", "", "客户微信用户名");
tab.AddHeadCol("ADDTYPE", "", "添加方式");
tab.AddHeadCol("RECORDID", "", "录音ID");
tab.AddHeadRow();
ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist", "20,30,50");
return View();
}
[HttpPost]
public JsonResult GetHtmlList(Pager pg, string workAlias, string columns)
{
try
{
Table tb = new Table(columns, true) { gridPager = pg };
var list = wx_ManualAddWeixinFriend_BL.GetList(ref pg, UserId, workAlias);
foreach (var model in list)
{
var linkUrl = string.Format("{2}", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.wx_ManualAddWeiXinFriend.RESID, model.wx_ManualAddWeiXinFriend.RESID);
tb.AddCol(linkUrl);
tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKALIAS);
tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKUSERNAME);
tb.AddCol(InnerUserHelper.Instance.EidAndName(model.WorkAccountUserId));
tb.AddCol(model.wx_ManualAddWeiXinFriend.USERNAME);
tb.AddCol(getAddTypeText(model.wx_ManualAddWeiXinFriend.ADDTYPE));
tb.AddCol(model.wx_ManualAddWeiXinFriend.RECORDID);
tb.AddRow();
}
var json = new
{
totalPages = pg.totalPages,
totalRows = pg.totalRows,
rowsList = tb.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[HttpGet]
[AuthorizeRedirect(Roles = InitRights.CONST_手工添加微信好友列表)]
public ActionResult AllList()
{
var tool = new ToolBar();
string[] toolbtn = new ToolButtonView().ToolButtonRight(InitRights.手工添加微信好友列表, userRightId);
tool.AllowButton(toolbtn);
ViewBag.ToolBar = tool;
Pager gp = new Pager() { page = 1, rows = 20 };
Table tab = new Table("tablist");
tab.AddHeadCol("RESID", "", "客户ID");
tab.AddHeadCol("WORKALIAS", "", "工作微信号");
tab.AddHeadCol("WORKUSERNAME", "", "工作微信用户名");
tab.AddHeadCol("WorkAccountUserId", "", "工作微信客服");
tab.AddHeadCol("USERNAME", "", "客户微信用户名");
tab.AddHeadCol("ADDTYPE", "", "添加方式");
tab.AddHeadCol("INNERUSERID", "", "添加人");
tab.AddHeadCol("RECORDID", "", "录音ID");
tab.AddHeadRow();
ViewBag.GroupList = tab.GetTable() + Pagination.GetPage(gp, "tablist", "20,30,50");
return View();
}
[HttpPost]
public JsonResult GetAllListHtmlList(Pager pg, decimal? eid, string workAlias, string columns)
{
try
{
Table tb = new Table(columns, true) { gridPager = pg };
var innerUserId = InnerUserHelper.Instance.GetUserIdByEid(eid);
if (innerUserId <= 1)
{
innerUserId = 0;
}
var list = wx_ManualAddWeixinFriend_BL.GetList(ref pg, innerUserId, workAlias);
foreach (var model in list)
{
var linkUrl = string.Format("{2}", "客户详细", "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.wx_ManualAddWeiXinFriend.RESID, model.wx_ManualAddWeiXinFriend.RESID);
tb.AddCol(linkUrl);
tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKALIAS);
tb.AddCol(model.wx_ManualAddWeiXinFriend.WORKUSERNAME);
tb.AddCol(InnerUserHelper.Instance.EidAndName(model.WorkAccountUserId));
tb.AddCol(model.wx_ManualAddWeiXinFriend.USERNAME);
tb.AddCol(getAddTypeText(model.wx_ManualAddWeiXinFriend.ADDTYPE));
tb.AddCol(InnerUserHelper.Instance.EidAndName(model.wx_ManualAddWeiXinFriend.INNERUSERID));
tb.AddCol(model.wx_ManualAddWeiXinFriend.RECORDID);
tb.AddRow();
}
var json = new
{
totalPages = pg.totalPages,
totalRows = pg.totalRows,
rowsList = tb.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[HttpGet]
[AuthorizeToolBar(InitRights.CONST_手工添加微信好友, InitToolBar.CONST_Add)]
public ActionResult Add(string resId)
{
return View(new WX_MANUALADDWEIXINFRIEND());
}
[HttpPost]
[AuthorizeToolBar(InitRights.CONST_手工添加微信好友, InitToolBar.CONST_Add)]
public JsonResult Add(WX_MANUALADDWEIXINFRIEND model, string mobile, string cname)
{
try
{
if (!ModelState.IsValid)
{
return JsonHandler.ValidateFailMessage();
}
if (!Utility.ChekMobile(mobile))
{
errors.Add("请填写正确的手机号!");
return JsonHandler.UpdateMessage(errors, false);
}
if (string.IsNullOrWhiteSpace(model.WORKALIAS))
{
errors.Add("工作微信不能为空");
return JsonHandler.UpdateMessage(errors, false);
}
if (string.IsNullOrWhiteSpace(model.USERNAME))
{
errors.Add("客户微信用户名不能为空");
return JsonHandler.UpdateMessage(errors, false);
}
string resid = WX.CRM.Common.ResUtil.CreateResId(mobile);
var resTypeIds = cache_BL.GetValue_Parameter(Model.Enum.Parameter.WeiXin_OfflineResTypeIds);
if (string.IsNullOrEmpty(resTypeIds))
{
errors.Add("线下手机资源库为空!");
return JsonHandler.UpdateMessage(errors, false);
}
resTypeIds = resTypeIds.Trim(',');
var typeIdsArr = resTypeIds.Split(',');
var typeIdList = typeIdsArr.Select(m => Convert.ToDecimal(m)).ToList();
var customer = wx_ManualAddWeixinFriend_BL.IsOfflineRes(resid, typeIdList);
if (customer == null)
{
errors.Add("添加的用户不是线下资源库的手机号。");
return JsonHandler.UpdateMessage(errors, false);
}
var workAccount = wx_WorkAccount_BL.Get(m => m.ALIAS == model.WORKALIAS);
if (workAccount == null)
{
errors.Add("你输入的工作微信号不存在");
return JsonHandler.UpdateMessage(errors, false);
}
model.WORKUSERNAME = workAccount.USERNAME;
if (model.ADDTYPE == 1)
{
if (!model.RECORDID.HasValue)
{
errors.Add("选择电话添加微信,需要填写对于的电话记录ID");
return JsonHandler.UpdateMessage(errors, false);
}
var callRecord = csvr_CallRecord_BL.Get(m => m.RECORDID == model.RECORDID && m.SALESEID == Eid);
if (callRecord == null)
{
errors.Add("电话记录ID不正确,电话记录ID必须是本人的通话记录");
return JsonHandler.UpdateMessage(errors, false);
}
}
var item = wx_ManualAddWeixinFriend_BL.Get(m => m.RESID == resid && m.INNERUSERID == UserId && m.WORKALIAS == model.WORKALIAS && m.USERNAME == model.USERNAME);
if (item != null)
{
errors.Add("你已经添加过该微信的记录,不能重复添加");
return JsonHandler.UpdateMessage(errors, false);
}
model.RESID = resid;
model.PKID = new SEQUENCES_BL().Seq_base_get();
model.INNERUSERID = UserId;
model.CTIME = DateTime.Now;
var res = wx_ManualAddWeixinFriend_BL.Add(model);
return JsonHandler.ManageMessage(errors.Error, res == 1);
}
catch (Exception ex)
{
LogHelper.Error(ex);
return JsonHandler.ManageMessage(ex.ToString(), false);
}
}
public ActionResult RContactIndex()
{
//ToolBar
ToolBar tool = new ToolBar();
ViewBag.ToolBar = tool;
//table
Pager pager = new Pager() { page = 1, rows = 15 };
string tableId = "tablist";
Table tab = new Table(tableId);
tab.AddHeadCol("USERNAME", "", "微信用户名");
//tab.AddHeadCol("ALIAS", "", "微信号");
tab.AddHeadCol("NICKNAME", "", "昵称");
tab.AddHeadCol("CONREMARK", "", "备注");
tab.AddHeadCol("", "8%", "");
tab.AddHeadRow();
ViewBag.gridTable = tab.GetHead() + Pagination.GetPage(pager, tableId, "5,10,15,20");
ViewBag.workAlias = Request["workAlias"];
return View();
}
[HttpPost]
public JsonResult GetRcontactHtmlList(Pager pager, string alias, string nickName, string conRemark, string workAlias, string columns)
{
string isShowMobileOfContent = cache_BL.GetValue_Parameter(Model.Enum.Parameter.Sys_IsShowMobileOfContent);
List list = wx_Rcontact_BL.GetWorkAliasRcontactList(ref pager, null, alias, conRemark, nickName, workAlias);
Table table = new Table(columns, true);
table.gridPager = pager;
foreach (var model in list)
{
table.AddCol(model.USERNAME);
//table.AddCol(model.ALIAS);
if (!string.IsNullOrEmpty(isShowMobileOfContent) && isShowMobileOfContent == "1")
{
table.AddCol(model.NICKNAME);
table.AddCol(model.CONREMARK);
}
else
{
table.AddCol(Utility.ReplaceMobile(model.NICKNAME));
table.AddCol(Utility.ReplaceMobile(model.CONREMARK));
}
var payInfoUrl = string.Format("选择", model.USERNAME);
table.AddCol(payInfoUrl);
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
private string getAddTypeText(decimal? addType)
{
if (!addType.HasValue)
{
return "";
}
int i = Convert.ToInt32(addType);
switch (i)
{
case 1:
return "电话";
case 2:
return "通讯录扫码";
default:
return "";
}
}
}
}