using Ninject;
using System;
using System.Collections.Generic;
using WX.CRM.IBLL.Res;
using WX.CRM.WebHelper.UtilityModel;
namespace WX.CRM.WebHelper.DoItems
{
///
/// 诊股资源回收通知,总监收
///
public class ResRecycleZJNotice : IPopupMessage
{
private string url = @"../Res/Activity/LookNotice?type=1&sdate={0}";
private IRES_ResRecycleRecord _allocateRes;
#region 单例
private static volatile ResRecycleZJNotice instance = null;
private ResRecycleZJNotice()
{
_allocateRes = Infrastructure.NinjectControllerFactory.ninjectKernel.Get();
}
// Lock对象,线程安全所用
private static object locked = new Object();
public static ResRecycleZJNotice Instance
{
get
{
if (instance == null)
{
lock (locked)
{
if (instance == null)
instance = new ResRecycleZJNotice();
}
}
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;
ResRecycleMsg ResInfo = UserRes[UserId];
url = string.Format(url, ResInfo.ctime.ToShortDateString());
//Common.LogHelper.Info(ResInfo.ctime.ToString());
//Common.LogHelper.Info(url);
return string.Format(ResInfo.message);
}
private void LoadResource(decimal UserId)
{
lock (this)
{
if (!NeedRefresh)
return;
//重新加载未查看分配资源到UserRes
UserRes.Clear();
//查数据库
var lists = _allocateRes.GetNotice(1);
foreach (var model in lists)
{
ResRecycleMsg resinfo = new ResRecycleMsg();
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;
}
}
}
}