using Ninject;
using System;
using System.Collections.Generic;
using WX.CRM.IBLL.Wx;
using WX.CRM.WebHelper.UtilityModel;
namespace WX.CRM.WebHelper.DoItems
{
///
/// 违规通知,组管收
///
public class WxIlleGalerCodeZGNotice : IPopupMessage
{
private string url = @"../WeiXin/MyIllegalRecord/LookNotice?type=2&stime={0}&etime={1}";
private IWX_MyIllegalRecord _allocateRes;
#region 单例
private static volatile WxIlleGalerCodeZGNotice instance = null;
private WxIlleGalerCodeZGNotice()
{
_allocateRes = Infrastructure.NinjectControllerFactory.ninjectKernel.Get();
}
// Lock对象,线程安全所用
private static object locked = new Object();
public static WxIlleGalerCodeZGNotice Instance
{
get
{
if (instance == null)
{
lock (locked)
{
if (instance == null)
instance = new WxIlleGalerCodeZGNotice();
}
}
return instance;
}
}
#endregion
public string GetUrl()
{
return url;// 分配资源提醒
}
private Boolean NeedRefresh = true;
private DateTime LastLoadTime = DateTime.Now;
Dictionary UserRes = new Dictionary();
public void SetNeedRefresh()
{
NeedRefresh = true;
}
public string GetMessage(decimal UserId)
{
if (((TimeSpan)(DateTime.Now - LastLoadTime)).TotalMinutes >= 1)
SetNeedRefresh();
if (NeedRefresh)
LoadResource(UserId);
string messag = string.Empty;
if (!UserRes.ContainsKey(UserId))
return string.Empty;
WxIllegMsg ResInfo = UserRes[UserId];
url = string.Format(url, ResInfo.ctime.ToShortDateString(), DateTime.Now.ToShortDateString());
return string.Format(ResInfo.message);
}
private void LoadResource(decimal UserId)
{
lock (this)
{
if (!NeedRefresh)
return;
//重新加载未查看分配资源到UserRes
UserRes.Clear();
//查数据库
var lists = _allocateRes.GetNotice(2);
foreach (var model in lists)
{
WxIllegMsg resinfo = new WxIllegMsg();
resinfo.userid = model.inneruserid;
resinfo.message = model.content;
resinfo.ctime = model.ctime;
if (!UserRes.ContainsKey(model.inneruserid))
{
UserRes.Add(model.inneruserid, resinfo);
}
}
//把NeedRefresh置为false
NeedRefresh = false;
LastLoadTime = DateTime.Now;
}
}
}
}