TG.WXCRM.V4/WebHelper/DoItems/ToDoItemMessage.cs

364 lines
12 KiB
C#
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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<ICSVR_TODOITEM_Q>();
}
// 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<decimal, UserResourceCount> UserRes = new Dictionary<decimal, UserResourceCount>();
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<decimal>();
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<ICSVR_TODOITEM_Q>();
}
// 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<decimal, UserResourceCount> UserRes = new Dictionary<decimal, UserResourceCount>();
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<decimal>();
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<ICSVR_TODOITEM_Q>();
}
// 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<decimal, UserResourceCount> UserRes = new Dictionary<decimal, UserResourceCount>();
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<decimal>();
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);
}
}
}