using System;
using System.Linq;
using System.Web.Mvc;
using WX.CRM.Common;
using WX.CRM.IBLL.Base;
using WX.CRM.IBLL.Csvr;
using WX.CRM.IBLL.Res;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
using WX.CRM.WebHelper;
using WX.CRM.WebHelper.DoItems;
namespace WX.CRM.WEB.Controllers.Csvr
{
public class ToDoItemController : BaseController
{
//
// GET: /ToDoItem/
private ICSVR_TODOITEM _todoItem;
private ICSVR_TODOITEM_Q _todoItemq;
private IRES_CUSTOMER_Q _customer;
private IBAS_INNERUSER_Q _inneruserq;
private IRES_CUSTOMERDETAIL_Q _customerDetail;
ValidationErrors errors = new ValidationErrors();
public ToDoItemController(
ICSVR_TODOITEM todoItem,
ICSVR_TODOITEM_Q todoItemq,
IRES_CUSTOMER_Q customer,
IBAS_INNERUSER_Q inneruserq,
IRES_CUSTOMERDETAIL_Q customerDetail
)
{
this._todoItem = todoItem;
this._todoItemq = todoItemq;
this._customer = customer;
this._inneruserq = inneruserq;
_customerDetail = customerDetail;
}
public ActionResult Index()
{
var tool = new ToolBar();
tool.AllowButton("Create", "Edit", "Other1");
tool.AddOtherButton("Other1", "完成", "icon-flag", "Complete_Click", true);
ViewBag.ToolBar = tool;
var pager = new Pager() { page = 1, rows = 10 };
var tableId = "tablist";
var tab = new Table(tableId);
tab.isCheckbox = true;
tab.AddHiddenHeadCol("pkid", "ID");//隐藏列
tab.AddHeadCol("map_SENDEDUSERID", "10%", "发起待办事项人 ");
tab.AddHeadCol("map_RECEIVEDUSERID", "10%", "接收待办事项人 ");
tab.AddHeadCol("map_RESID", "10%", "客户ID号");
tab.AddHeadCol("CNAME", "", "姓名");
tab.AddHeadCol("map_MEMO", "10%", "待办事项");
tab.AddHeadCol("REMARK", "", "备注");
tab.AddHeadCol("map_STARTTIME", "10%", "提醒时间");
tab.AddHeadCol("map_DOSTATUS", "", "状态");
//tab.AddHeadCol("map_DOREMARK", "", "处理结果");
tab.AddHeadCol("map_DOUSERID", "", "完成人");
tab.AddHeadCol("map_DOTIME", "", "完成时间");
tab.AddHeadCol("URL", "", "");
tab.AddHeadRow();
ViewBag.List = tab.GetTable() + Pagination.GetPage(pager, tableId, "10,20,50,100,200");
ViewBag.inneruserid = UserId;
ViewBag.userGroupId = userGroupId;
ViewBag.saleDeptId = saleDeptId;
ViewBag.roleCodes = DataCacheHelper.GetCache().Get_RoleCodes(userRoleId);
return View();
}
[HttpPost]
public JsonResult GetHtmlList(Pager pager, string resid, string columns, string memo, QueryUserComboDto usercomboDto, string resourcetag)
{
try
{
DateTime? ctime = Request.Form["ctime"].GetDateTime();
DateTime? etime = Request.Form["etime"].GetDateTime();
decimal status = Request.Form["status"].GetDecimal(-1);
//string groupId = Request.Form["groupId"];
//string userId = Request.Form["userId"];
var list = _todoItemq.GetToDoItemsByParam(ref pager, resid, memo, ctime, etime, status, usercomboDto, resourcetag);
var resids = list.Select(p => p.RESID);
var customers = _customerDetail.GetList(p => resids.Contains(p.RESID));
var table = new Table(columns, true)
{
gridPager = pager
};
table.isCheckbox = true;
foreach (var model in list)
{
var customer = customers.FirstOrDefault(p => p.RESID == model.RESID);
var linkUrl = string.Format("{2}"
, "客户详细"
, "/Csvr/CustomerInfo/CustomerDetail?resid=" + model.map_RESID
, model.map_RESID);
table.AddHiddenCol(model.map_PKID);//影藏列
table.AddCol(InnerUserHelper.Instance.EidAndName(model.map_SENDEDUSERID));
table.AddCol(InnerUserHelper.Instance.EidAndName(model.map_RECEIVEDUSERID));
if (string.IsNullOrEmpty(model.URL))
{
table.AddCol(model.RESID);
}
else
{
table.AddCol(linkUrl);
}
table.AddCol(customer == null ? "" : customer.CNAME);
table.AddCol(model.map_MEMO);
table.AddCol(model.REMARK);
table.AddCol(model.map_STARTTIME);
table.AddCol(model.map_DOSTATUS == 0 ? "未完成" : "已完成");
//table.AddCol(model.map_DOREMARK);
table.AddCol(InnerUserHelper.Instance.EidAndName(model.map_DOUSERID));
table.AddCol(model.map_DOTIME);
if (model.map_DOSTATUS == 0)
{
if (string.IsNullOrEmpty(model.URL))
{
table.AddCol("");
}
else
{
table.AddCol(string.Format("{2}", model.URLTITLE, model.URL, "去完成", model.PKID));
}
}
else
table.AddCol("");
table.AddRow();
}
var json = new
{
totalPages = pager.totalPages,
totalRows = pager.totalRows,
rowsList = table.GetRows()
};
return Json(json, JsonRequestBehavior.AllowGet);
}
catch (Exception ex)
{
LogHelper.Error("ToDoItemController_GetHtmlList:" + ex.StackTrace + ";" + ex.Message);
var json = new
{
errorMessag = "系统错误:" + ex.Message
};
return Json(json, JsonRequestBehavior.AllowGet);
}
}
[HttpGet]
public ActionResult Add(string id)
{
CSVR_TODOITEM model = null;
if (id != null)
{
model = _todoItemq.GetToDoItemById(Convert.ToDecimal(id));
// var inneruser = _inneruserq.GetModel(model.map_RECEIVEDUSERID);
decimal? RECEIVEDUSERID = InnerUserHelper.Instance.GetEidByUserId(model.map_RECEIVEDUSERID);
model.map_RECEIVEDUSERID = RECEIVEDUSERID.HasValue ? RECEIVEDUSERID.Value : 0;
}
ViewBag.mySelf = UserId;
return View(model);
}
[HttpPost]
public ActionResult Add(CSVR_TODOITEM model)
{
try
{
model.map_SENDEDUSERID = UserId;
model.map_DOSTATUS = 0;
//model.RESID = model.RESID.Trim();
if (model.map_SENDEDUSERID == model.map_RECEIVEDUSERID)
{
model.map_ISPRIVATE = 1;
}
else { model.map_ISPRIVATE = 0; }
model.map_RECEIVEDUSERID = InnerUserHelper.Instance.GetUserIdByEid(model.map_RECEIVEDUSERID);
if (ModelState.IsValid)
{
if (model.PKID == 0)
{
bool result = this._todoItem.Create(ref errors, model);
return JsonHandler.InsertMessage(errors, result);
}
else
{
if (model.map_DOSTATUS == 0)
{
bool result = this._todoItem.Update(ref errors, model);
return JsonHandler.UpdateMessage(errors, result);
}
else { return JsonHandler.ManageMessage("该事项已完成", false); }
}
}
else
{
return JsonHandler.JsonResultSerialize(ModelState);
}
}
catch (Exception ex)
{
LogHelper.Error(ex.Message);
return JsonHandler.ManageMessage(ex.Message, false);
}
}
[HttpPost]
public ActionResult DoItems()
{
string msg = "";
string msginfo = "";
string url = "";
string urk = "";
try
{
foreach (var tool in WebHelper.DoItems.PopupMessageFactory.PopupMessageArray)
{
msg = tool.GetMessage(UserId);
if (msg != string.Empty)
{
url = tool.GetUrl().IndexOf("?") > -1 ? (tool.GetUrl() + "&userid=" + UserId) : (tool.GetUrl() + "?userid=" + UserId);
msginfo += msg + ",";
urk += url + ",";
}
}
if (!string.IsNullOrEmpty(msginfo))
{
string[] msglist = msginfo.Substring(0, msginfo.Length - 1).Split(',');
string[] urllist = urk.Substring(0, urk.Length - 1).Split(',');
var json = new { result = true, messages = msglist, url = urllist };//数组初始化
return Json(json, JsonRequestBehavior.AllowGet);
}
else
{
var json = new
{
result = false,
messages = "",
url = ""
};
return Json(json, JsonRequestBehavior.AllowGet);
}
}
catch (Exception ex)
{
LogHelper.Error("DoItems:" + ex.ToString());
var json = new
{
result = false,
messages = ex.Message,
url = ""
};
return Json(json, JsonRequestBehavior.AllowGet);
}
}
//public ActionResult SetNeedRefresh()
//{
// WebHelper.DoItems.PopupMessageFactory.toDoItemMessage.SetNeedRefresh();
// var json = new
// {
// result = true,
// messages = "",
// url = ""
// };
// return Json(json, JsonRequestBehavior.AllowGet);
//}
[HttpPost]
public ActionResult Complete(string allid)
{
if (string.IsNullOrEmpty(allid))
{
return JsonHandler.ManageMessage("参数有误!", false);
}
var ids = allid.Replace("][", ";").Replace("]", "").Replace("[", "");
string nojieshouren = "";
foreach (var item in ids.Split(';'))
{
var id = Convert.ToDecimal(item);
var model = _todoItemq.GetToDoItemById(id);
if (model != null)
{
if (model.DOSTATUS < 1)
{
if (model.RECEIVEDUSERID == UserId)
{
model.DOSTATUS = 1;
model.DOTIME = DateTime.Now;
model.DOUSERID = UserId;
model.DOREMARK = "完成";
bool result = this._todoItem.Update(ref errors, model);
if (!result)
{
return JsonHandler.UpdateMessage(errors, result);
}
else
{
PopupMessageFactory.toDoItemMessage.SetView(model.map_RECEIVEDUSERID, model.map_PKID.ToString());
}
}
else
{
nojieshouren += string.IsNullOrEmpty(nojieshouren) ? $"{id}" : $",{id}";
//return JsonHandler.ManageMessage("非接收人不能完成该待办事项", false);
}
}
//else
//{
// return JsonHandler.ManageMessage("该事项已完成", false);
//}
//return JsonHandler.ManageMessage("修改成功", true);
}
else
{
//return JsonHandler.ManageMessage("找不到该数据", false);
}
}
if (string.IsNullOrEmpty(nojieshouren))
return JsonHandler.ManageMessage("修改成功", true);
else
{
return JsonHandler.ManageMessage($"ID:{nojieshouren}非接收人不能完成该待办事项", false);
}
}
public FileResult ExportAll(string resid, string columns, QueryUserComboDto usercomboDto, string resourcetag)
{
Pager pager = new Pager() { page = 1, rows = int.MaxValue };
string checkedFilds = PageRequest.GetQueryString("checkedFilds");
string checkedTitles = PageRequest.GetQueryString("checkedTitles");
DateTime? ctime = Request.QueryString["ctime"].GetDateTime();
DateTime? etime = Request.QueryString["etime"].GetDateTime();
decimal status = Request.QueryString["status"].GetDecimal(-1);
var list = _todoItemq.GetToDoItemsByParamExport(ref pager, resid, ctime, etime, status, usercomboDto, resourcetag);
//List list = inneruserBiz_Q.GetList(ref pager, "", "", "", "", "", "", "", "", "", "", "", "", "", "", "", "",
return File(ExcelHelper.ExportListModelToExcel(list, "代办事项", 10000, checkedFilds, checkedTitles, DataFormart), "application/ms-excel", PageRequest.GetDlownLoadName("代办事项.xls"));
}
//用作委托传递
public string DataFormart(string key, object value)
{
string formartValue = string.Empty;
switch (key)
{
case "map_DOSTATUS":
switch (Convert.ToString(value))
{
case "0": formartValue = "未完成"; break;
default: formartValue = "已完成"; break;
}; break;
case "map_SENDEDUSERID":
formartValue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value)); break;
case "map_RECEIVEDUSERID":
formartValue = InnerUserHelper.Instance.EidAndName(Convert.ToDecimal(value)); break;
case "URL":
formartValue = ""; break;
default: formartValue = string.Format("{0}", value); break;
}
return formartValue;
}
}
}