ComplianceServer/oldcode/BLL/Wx/WX_ALIVE_SERVICE_BL.cs

155 lines
6.2 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Wx;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
namespace AY.CRM.BLL.Wx
{
public class WX_ALIVE_SERVICE_BL : DbContextRepository<WX_ALIVE_SERVICE>, IWX_ALIVE_SERVICE
{
public List<string> GetVersions()
{
using (var db = new crmContext())
{
var query = db.WX_ALIVE_SERVICE.AsQueryable();
var list = query.GroupBy(m => new { m.VERSION }).Select(g => g.Key.VERSION).ToList();
return list;
}
}
public List<string> GetPhoneModes()
{
using (var db = new crmContext())
{
var query = db.WX_ALIVE_SERVICE.AsQueryable();
var list = query.GroupBy(m => new { m.PHONEMODE }).Select(g => g.Key.PHONEMODE).ToList();
return list;
}
}
public List<WX_ALIVE_SERVICE_Extend> GetList(ref Pager pager, string version, string phoneMode, string groupId, decimal? eid, string alias, decimal? zaixian)
{
using (crmContext db = new crmContext())
{
var al = db.WX_ALIVE_SERVICE.AsQueryable();
var bl = db.BAS_INNERUSERGROUP.AsQueryable();
var c1 = db.BAS_INNERUSER.AsQueryable();
if (!string.IsNullOrEmpty(version))
{
al = al.Where(m => m.VERSION == version);
}
if (!string.IsNullOrEmpty(phoneMode))
{
al = al.Where(m => m.PHONEMODE == phoneMode);
}
if (!string.IsNullOrEmpty(alias))//微信号
{
al = al.Where(m => m.ALIAS.Contains(alias));
}
if (eid.HasValue)
{
c1 = c1.Where(m => m.EID == eid);
}
if (!string.IsNullOrEmpty(groupId))
{
decimal[] iSaleGroupdIds = OperationUtil.ConvertToDecimal(groupId.Split(','));
bl = bl.Where(m => iSaleGroupdIds.Contains(m.GID.Value));
}
if (zaixian.HasValue)
{
DateTime t1 = DateTime.Now.AddMinutes(-15);//当前减去15分钟
if (zaixian.Value == 1)
{
al = al.Where(m => m.LASTTIME >= t1);
}
else
{
al = al.Where(m => m.LASTTIME < t1);
}
}
var query = (from a in al
join b in db.WX_WORKACCOUNT on a.ALIAS equals b.ALIAS
join c in bl on b.INNERUSERID equals c.INNERUSERID
join d in c1 on c.INNERUSERID equals d.PKID
join e in db.BAS_INNERGROUP on c.GID equals e.GID
select new WX_ALIVE_SERVICE_Extend
{
WX_Alive_Service = a,
InnerUserId = b.INNERUSERID,
GroupName = e.GNAME,
Eid = d.EID
});
if (pager == null)
{
query = query.OrderByDescending(m => m.WX_Alive_Service.PHONEMODE).OrderByDescending(m => m.WX_Alive_Service.VERSION).OrderByDescending(m => m.WX_Alive_Service.LASTTIME);
return query.ToList();
}
//排序
if (pager.order == "asc")
{
switch (pager.sort)
{
case "InnerUserId":
query = query.OrderBy(c => c.Eid);
break;
case "GroupName":
query = query.OrderBy(c => c.GroupName);
break;
case "LASTTIME":
query = query.OrderBy(c => c.WX_Alive_Service.LASTTIME);
break;
case "VERSION":
query = query.OrderBy(c => c.WX_Alive_Service.VERSION);
break;
case "PHONEMODE":
query = query.OrderBy(c => c.WX_Alive_Service.PHONEMODE);
break;
default:
query = query.OrderBy(c => c.WX_Alive_Service.LASTTIME);
break;
}
}
else
{
switch (pager.sort)
{
case "InnerUserId":
query = query.OrderByDescending(c => c.Eid);
break;
case "GroupName":
query = query.OrderByDescending(c => c.GroupName);
break;
case "LASTTIME":
query = query.OrderByDescending(c => c.WX_Alive_Service.LASTTIME);
break;
case "VERSION":
query = query.OrderByDescending(c => c.WX_Alive_Service.VERSION);
break;
case "PHONEMODE":
query = query.OrderByDescending(c => c.WX_Alive_Service.PHONEMODE);
break;
default:
query = query.OrderByDescending(c => c.WX_Alive_Service.LASTTIME);
break;
}
}
PagerUtil.SetPager<WX_ALIVE_SERVICE_Extend>(ref query, ref pager);//分页
//query = query.OrderByDescending(m => m.WX_Alive_Service.PHONEMODE).OrderByDescending(m => m.WX_Alive_Service.VERSION).OrderByDescending(m => m.WX_Alive_Service.LASTTIME);
return query.ToList();
}
}
}
}