using Ninject; using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; using WX.CRM.IBLL.Csvr; using WX.CRM.WebHelper.UtilityModel; namespace WX.CRM.WebHelper.DoItems { public sealed class ToDoItemMessage : IPopupMessage { private ICSVR_TODOITEM_Q _todoItem; #region 单例 private static volatile ToDoItemMessage instance = null; private ToDoItemMessage() { _todoItem = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); } // Lock对象,线程安全所用 private static object locked = new Object(); public static ToDoItemMessage Instance { get { if (instance == null) { lock (locked) { if (instance == null) instance = new ToDoItemMessage(); } } return instance; } } #endregion #region 私有数据 //private Boolean NeedRefresh = true; //private DateTime LastLoadTime = DateTime.Now; Dictionary UserRes = new Dictionary(); private void LoadResource() { //lock (this) { //if (!NeedRefresh) // return; //重新加载未查看分配资源到UserRes UserRes.Clear(); //查数据库 var lists = _todoItem.GetToDoItemsByDateNow(); var queryList = from a in lists group a by a.RECEIVEDUSERID into g select new { g.Key, time = g.Max(p => p.STARTTIME) }; var tipUser = new List(); foreach (var item in queryList) { if (item.time.HasValue) { var spanTime = DateTime.Now - item.time.Value; if (spanTime.TotalSeconds < 31) { tipUser.Add(item.Key); } } } lists = lists.Where(p => tipUser.Contains(p.RECEIVEDUSERID)).ToList(); foreach (var list in lists) { UserResourceCount resinfo = null; if (!UserRes.ContainsKey(list.RECEIVEDUSERID)) { resinfo = new UserResourceCount(); resinfo.SalesId = list.RECEIVEDUSERID; UserRes.Add(list.RECEIVEDUSERID, resinfo); } else { resinfo = UserRes[list.RECEIVEDUSERID]; } resinfo.Add(list.PKID.ToString()); } //把NeedRefresh置为false //NeedRefresh = false; //LastLoadTime = DateTime.Now; } } #endregion public string GetUrl() { return @"../Csvr/ToDoItem/Index";// 个人代办事项列表 } //public void SetNeedRefresh() //{ // NeedRefresh = true; //} public void SetView(decimal UserId, string pkid) { if (!UserRes.ContainsKey(UserId)) return; var ResInfo = UserRes[UserId]; if (ResInfo == null) return; ResInfo.Remove(pkid); } public string GetMessage(decimal UserId) { //if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 10) // SetNeedRefresh(); //if (NeedRefresh) LoadResource(); if (!UserRes.ContainsKey(UserId)) return string.Empty; var ResInfo = UserRes[UserId]; if (ResInfo == null || ResInfo.Count == 0) return string.Empty; //return string.Format("查看待办事项:{0}个", ResInfo.Count); return string.Format("{0}", ResInfo.Count); } } public sealed class SoftLoginMessage : IPopupMessage { private ICSVR_TODOITEM_Q _todoItem; #region 单例 private static volatile SoftLoginMessage instance = null; private SoftLoginMessage() { _todoItem = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); } // Lock对象,线程安全所用 private static object locked = new Object(); public static SoftLoginMessage Instance { get { if (instance == null) { lock (locked) { if (instance == null) instance = new SoftLoginMessage(); } } return instance; } } #endregion #region 私有数据 //private Boolean NeedRefresh = true; //private DateTime LastLoadTime = DateTime.Now; Dictionary UserRes = new Dictionary(); private void LoadResource() { //lock (this) { //if (!NeedRefresh) // return; //重新加载未查看分配资源到UserRes UserRes.Clear(); //查数据库 var lists = _todoItem.GetToDoItemSoftLogin(); var queryList = from a in lists group a by a.RECEIVEDUSERID into g select new { g.Key, time = g.Max(p => p.STARTTIME) }; var tipUser = new List(); foreach (var item in queryList) { if (item.time.HasValue) { var spanTime = DateTime.Now - item.time.Value; if (spanTime.TotalSeconds < 31) { tipUser.Add(item.Key); } } } lists = lists.Where(p => tipUser.Contains(p.RECEIVEDUSERID)).ToList(); foreach (var list in lists) { UserResourceCount resinfo = null; if (!UserRes.ContainsKey(list.RECEIVEDUSERID)) { resinfo = new UserResourceCount { SalesId = list.RECEIVEDUSERID }; UserRes.Add(list.RECEIVEDUSERID, resinfo); } else { resinfo = UserRes[list.RECEIVEDUSERID]; } resinfo.Add(list.PKID.ToString()); } //把NeedRefresh置为false //NeedRefresh = false; //LastLoadTime = DateTime.Now; } } #endregion public string GetUrl() { return @"../Csvr/ToDoItem/Index?resourcetag=softlogin"; } public void SetNeedRefresh() { //NeedRefresh = true; } public void SetView(decimal UserId, string pkid) { if (!UserRes.ContainsKey(UserId)) return; var ResInfo = UserRes[UserId]; if (ResInfo == null) return; ResInfo.Remove(pkid); } public string GetMessage(decimal UserId) { //if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 10) // SetNeedRefresh(); //if (NeedRefresh) LoadResource(); if (!UserRes.ContainsKey(UserId)) return string.Empty; var ResInfo = UserRes[UserId]; if (ResInfo == null || ResInfo.Count == 0) return string.Empty; return string.Format("{0}", ResInfo.Count); } } public sealed class RFMMessage : IPopupMessage { private ICSVR_TODOITEM_Q _todoItem; #region 单例 private static volatile RFMMessage instance = null; private RFMMessage() { _todoItem = Infrastructure.NinjectControllerFactory.ninjectKernel.Get(); } // Lock对象,线程安全所用 private static object locked = new Object(); public static RFMMessage Instance { get { if (instance == null) { lock (locked) { if (instance == null) instance = new RFMMessage(); } } return instance; } } #endregion #region 私有数据 //private Boolean NeedRefresh = true; //private DateTime LastLoadTime = DateTime.Now; Dictionary UserRes = new Dictionary(); private void LoadResource() { //lock (this) { //if (!NeedRefresh) // return; //重新加载未查看分配资源到UserRes UserRes.Clear(); //查数据库 var lists = _todoItem.GetToDoItemRFM(); var queryList = from a in lists group a by a.RECEIVEDUSERID into g select new { g.Key, time = g.Max(p => p.STARTTIME) }; var tipUser = new List(); foreach (var item in queryList) { if (item.time.HasValue) { var spanTime = DateTime.Now - item.time.Value; if (spanTime.TotalSeconds < 31) { tipUser.Add(item.Key); } } } lists = lists.Where(p => tipUser.Contains(p.RECEIVEDUSERID)).ToList(); foreach (var list in lists) { UserResourceCount resinfo = null; if (!UserRes.ContainsKey(list.RECEIVEDUSERID)) { resinfo = new UserResourceCount { SalesId = list.RECEIVEDUSERID }; UserRes.Add(list.RECEIVEDUSERID, resinfo); } else { resinfo = UserRes[list.RECEIVEDUSERID]; } resinfo.Add(list.PKID.ToString()); } //把NeedRefresh置为false //NeedRefresh = false; //LastLoadTime = DateTime.Now; } } #endregion public string GetUrl() { return @"../Csvr/ToDoItem/Index?resourcetag=RFM"; } //public void SetNeedRefresh() //{ // NeedRefresh = true; //} public void SetView(decimal UserId, string pkid) { if (!UserRes.ContainsKey(UserId)) return; var ResInfo = UserRes[UserId]; if (ResInfo == null) return; ResInfo.Remove(pkid); } public string GetMessage(decimal UserId) { //if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 10) // SetNeedRefresh(); //if (NeedRefresh) LoadResource(); if (!UserRes.ContainsKey(UserId)) return string.Empty; var ResInfo = UserRes[UserId]; if (ResInfo == null || ResInfo.Count == 0) return string.Empty; return string.Format("{0}", ResInfo.Count); } } }