using Ninject;
using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.Common;
using WX.CRM.IBLL.Res;
using WX.CRM.WebHelper.UtilityModel;
namespace WX.CRM.WebHelper.DoItems
{
///
/// 分配资源提醒
///
public sealed class AllocateResMessage : IPopupMessage
{
private IRES_ALLOCATESTRATEGY_Q _allocateRes;
#region 单例
private static volatile AllocateResMessage instance = null;
private AllocateResMessage()
{
_allocateRes = Infrastructure.NinjectControllerFactory.ninjectKernel.Get();
}
// Lock对象,线程安全所用
private static object locked = new Object();
public static AllocateResMessage Instance
{
get
{
if (instance == null)
{
lock (locked)
{
if (instance == null)
instance = new AllocateResMessage();
}
}
return instance;
}
}
#endregion
#region 私有数据
//private Boolean NeedRefresh = true;
//private DateTime LastLoadTime = DateTime.Now;
private Dictionary UserRes = new Dictionary();
private void LoadResource(decimal UserId)
{
//lock (this)
{
//if (!NeedRefresh)
// return;
//重新加载未查看分配资源到UserRes
UserRes.Clear();
//查数据库
WX.CRM.Common.Pager pg = new WX.CRM.Common.Pager();
pg.page = 1;
pg.rows = int.MaxValue;
var lists = _allocateRes.GetMyAllocateResList(ref pg, null, UserId, null, 0, 0, 1, null, null, null);
//LogHelper.Info("lists:" + lists.Count.ToString());
var queryList = from a in lists group a by a.InneruserId into g select new { g.Key, time = g.Max(p => p.DisTime) };
var tipUser = new List();
foreach (var item in queryList)
{
var spanTime = DateTime.Now - item.time;
if (spanTime.TotalSeconds < 31)
{
tipUser.Add(item.Key);
}
}
lists = lists.Where(p => tipUser.Contains(p.InneruserId)).ToList();
foreach (var list in lists)
{
UserResourceCount resinfo = null;
if (!UserRes.ContainsKey(list.InneruserId))
{
resinfo = new UserResourceCount
{
SalesId = list.InneruserId
};
UserRes.Add(list.InneruserId, resinfo);
}
else
{
resinfo = UserRes[list.InneruserId];
}
resinfo.Add(list.ResId.ToString());
}
//把NeedRefresh置为false
//NeedRefresh = false;
//LastLoadTime = DateTime.Now;
}
}
#endregion
public string GetUrl()
{
return @"../Res/Allocate/MyAllocatedRes";// 分配资源提醒
}
//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 >= 3)
// SetNeedRefresh();
//if (NeedRefresh)
LoadResource(UserId);
if (!UserRes.ContainsKey(UserId))
return string.Empty;
var ResInfo = UserRes[UserId];
if (ResInfo == null || ResInfo.Count == 0)
return string.Empty;
// return string.Format(string.Join("#", ResInfo.PKIDS.Distinct()));
return string.Format("{0}", ResInfo.Count);
}
}
}