using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using System.Web.Mvc;
using Central.Control.Domain;
using Ant.Service.Common;
using MES.Production.Service.IService;
using Ant.Service.Common.Enums;
using ChangFa.Machinery.WebPage.Controllers;
namespace ChangFa.Machinery.WebPage.Areas.SysManage.Controllers
{
///
/// 消息控制器
/// edit huafg by 2015-11-22
///
public class MsgController : BaseController
{
#region 声明容器
///
/// 消息管理
///
IMsgManage MsgManage { get; set; }
///
///消息章附件管理
///
IMsgAttachManage MsgAttachManage { get; set; }
///
/// 接收人管理
///
IMsgRevManage MsgRevManage { get; set; }
///
/// 编码
///
ICodeManage CodeManage { get; set; }
#endregion
#region 公共变量
private string msgtype = string.Empty;
#endregion
#region 基本视图
///
/// 首页加载
///
[UserAuthorizeAttribute(ModuleAlias = "JSXX", OperaAction = "View")]
public ActionResult Index()
{
try
{
ViewBag.Search = base.keywords;
msgtype = Request["msgtype"] ?? "";
ViewData["msgtype"] = msgtype;
ViewData["msgtypelist"] = this.CodeManage.GetCode("XXLX");
return View(BindList());
}
catch(Exception e)
{
WriteLog(enumOperator.Select, "消息管理加载首页:", e);
throw e.InnerException;
}
}
///
/// 详情加载
///
[UserAuthorizeAttribute(ModuleAlias = "JSXX", OperaAction = "Detail")]
public ActionResult Detail()
{
ViewData["userid"] = Request.QueryString["userid"] ?? "";
return View(new SYS_MSG());
}
///
/// 详情展示页
///
public ActionResult Show(int? id)
{
var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
//附件信息
ViewData["Attach"] = GetAttach(entity.ID, false);
//接收人
ViewData["ReadUser"] = GetUser(id);
return View(entity);
}
///
/// 提交保存
///
[ValidateInput(false)]
public ActionResult Save(SYS_MSG entity)
{
JsonHelper json = new JsonHelper() { Status = "n", Msg = "操作成功" };
try
{
if (entity != null)
{
#region 处理Request参数
//接收人
string userid = Request["hidsendUserid"] ?? "";
if (string.IsNullOrEmpty(userid))
{
json.Msg = "请选择接收人";
return Json(json);
}
//附件集合
var attachlist = Request["attchs"] ?? "";
#endregion
#region 处理消息
entity.CREATEPER = this.CurrentUser.Id;
entity.CREATEDATE = DateTime.Now;
entity.MSGTYPE = "0";
if (this.MsgManage.Save(entity))
{
#region 处理接收人
if (this.MsgRevManage.SaveOrgPerson(entity.ID.ToString(), userid.Trim(',')))
{
#region 处理消息附件
if (!string.IsNullOrEmpty(attachlist.Trim(',')))
{
this.MsgAttachManage.SaveAttachs(entity.ID.ToString(), attachlist.Trim(','));
}
#endregion
}
#endregion
}
#endregion
json.Status = "y";
}
else
{
json.Msg = "未收到要提交的数据";
}
WriteLog(enumOperator.Add, "发送消息,结果:" + json.Msg, enumLog4net.INFO);
return Json(json);
}
catch (Exception e)
{
json.Msg = e.InnerException.Message;
WriteLog(enumOperator.Add, "发送消息:", e);
return Json(json);
}
}
#endregion
#region 接收人视图
///
/// 接收人显示页面
///
///
public ActionResult RevIndex()
{
string msg_status = Request["msg_status"] ?? "";
return View(BindRevList(msg_status));
}
///
/// 接收人弹出页
///
public ActionResult RevShow(int? id)
{
var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
if (entity.ID>0)
{
//已阅读
var entityRev = this.MsgRevManage.Get(p => p.USERID == CurrentUser.Id && p.MSGID == id);
if (entityRev != null)
{
entityRev.READSTATUS = 1;
this.MsgRevManage.Update(entityRev);
}
}
//附件信息
ViewData["Attach"] = GetAttach(entity.ID, false);
//回复人
ViewData["RevUser"] = this.UserManage.GetUserName(entity.CREATEPER);
return View(entity);
}
///
/// 转发
///
///
public ActionResult Transpond(int? id)
{
var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
//附件信息
ViewData["Attach"] = GetAttach(entity.ID, false);
return View(entity);
}
///
/// 回复详情加载
///
///
public ActionResult RevDetail(int? id)
{
var entity = this.MsgManage.Get(p => p.ID == id) ?? new SYS_MSG();
//回复人
ViewData["RevUser"] = this.UserManage.Get(p => p.ID == entity.CREATEPER) ?? new SYS_USER();
//附件信息
ViewData["Attach"] = GetAttach(entity.ID, false);
return View(entity);
}
#endregion
#region 帮助方法
///
/// 绑定列表
///
private PageInfo BindList()
{
//where
var predicate = PredicateBuilder.True().And(p => p.DELETESTATUS == 0 && p.CREATEPER == CurrentUser.Id);
if (!string.IsNullOrEmpty(base.keywords))
{
predicate = predicate.And(p => p.MSGNAME.Contains(keywords));
}
if (!string.IsNullOrEmpty(msgtype))
{
predicate = predicate.And(p => p.MSGTYPE == msgtype);
}
var query = this.MsgManage.LoadAll(predicate).OrderByDescending(p => p.CREATEDATE);
var codetype=this.CodeManage.GetCode("XXLX");
//Executed
var pageInfo = this.MsgManage.Query(query, base.page, base.pagesize);
var result = pageInfo.List.Select(p => new
{
p.ID,
p.MSGNAME,
CREATEPER = this.UserManage.GetUserName(p.CREATEPER),
READUSER = GetUser(p.ID),
p.CREATEDATE,
MSGTYPE = (codetype.Find(c => c.CODEVALUE == p.MSGTYPE) != null ? codetype.Find(c => c.CODEVALUE == p.MSGTYPE).NAMETEXT : "")
}).ToList();
return new PageInfo(pageInfo.Index, pageInfo.PageSize, pageInfo.Count, JsonConverter.JsonClass(result));
}
///
/// 接收人绑定列表
///
///
private PageInfo BindRevList(string status)
{
decimal state = 0m;
if (!string.IsNullOrEmpty(status))
{
state = decimal.Parse(status);
}
var config = this.MsgManage.Config;
var result = (from r in config.SYS_MSG
join u in config.SYS_MSGREV on r.ID equals u.MSGID into u_join
from x in u_join.DefaultIfEmpty()
join s in config.SYS_USER on r.CREATEPER equals s.ID into s_join
from v in s_join.DefaultIfEmpty()
where r.DELETESTATUS == 0 && x.USERID == CurrentUser.Id
orderby x.READSTATUS, r.CREATEDATE
select new
{
r.ID,
userid = x.USERID,
r.CREATEDATE,
r.MSGNAME,
r.MSGCONTENT,
r.CREATEPER,
READSTATUS = x.READSTATUS == 0 ? "未读" : "已读",
state = x.READSTATUS,
v.NAME
});
//where
var predicate = PredicateBuilder.True().And(p => p.DELETESTATUS == 0 && p.USERID == CurrentUser.Id);
if (!string.IsNullOrEmpty(base.keywords))
{
result = result.Where(p => p.MSGNAME.Contains(keywords));
}
//状态
if (state > 0)
{
result = result.Where(p => p.state == state);
}
result = result.OrderByDescending(p => p.CREATEDATE);
//Executed
var pageInfo = this.MsgManage.Query(result, base.page, base.pagesize);
return new PageInfo(pageInfo.Index, pageInfo.PageSize, pageInfo.Count, JsonConverter.JsonClass(result));
}
///
/// 得到用户
///
private string GetUser(int? id)
{
var config = this.MsgRevManage.Config;
var result = (from r in config.SYS_MSGREV
join u in config.SYS_USER on r.USERID equals u.ID
where r.MSGID == id && r.DELETESTATUS == 0
select new
{
r.ID,
r.USERID,
u.NAME,
r.READSTATUS
}).ToList();
return result.Aggregate(string.Empty, (current, t) => current + t.READSTATUS + "|" + t.NAME + ",").Trim(',');
}
///
/// 详情页附件信息
///
/// 消息ID
private dynamic GetAttach(int id, bool isimg)
{
var config = this.MsgManage.Config;
//var query = (from r in config.SYS_MSGATTACH
// join u in config.COM_UPLOAD
// on r.FK_UPLOADID equals u.ID
// where r.MSGID == id
// select new { r, u });
//var result = query.Select(p => new
//{
// p.r.ID,
// p.r.MSGID,
// p.u.FK_USERID,
// p.u.UPFILEPATH,
// p.u.UPFILESIZE,
// p.u.UPNEWNAME,
// p.u.UPOLDNAME,
// p.u.UPOPEATOR,
// p.u.UPFILEUNIT,
// p.u.UPTIME
//});
//return JsonConverter.JsonClass(result.ToList());
return "";
}
#endregion
#region 其他调用
#endregion
}
}