TG.WXCRM.V4/BLL/Sms/SMS_MESSAGE_HIS_BL.cs

143 lines
5.7 KiB
C#

using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.IBLL.Sms;
using WX.CRM.Model.Entity;
using WX.CRM.Model.MAP;
namespace WX.CRM.BLL.Sms
{
public class SMS_MESSAGE_HIS_BL : ISMS_MESSAGE_HIS_Q, ISMS_MESSAGE_HIS
{
#region queryData
/// <summary>
/// 获取条件后的queryData
/// </summary>
/// <param name="queryData"></param>
/// <param name="db"></param>
/// <param name="parameterKey"></param>
/// <param name="stime"></param>
/// <param name="etime"></param>
/// <param name="salesId"></param>
/// <returns></returns>
private IQueryable<SMS_MESSAGE_HIS> GetQuery(IQueryable<SMS_MESSAGE_HIS> queryData, WX.CRM.Model.Entity.crmContext db, string stime, string etime, string msgtype, QueryUserComboDto userComboDto, string resid)
{
if (!string.IsNullOrEmpty(msgtype) && msgtype != "0")
{
msgtype = msgtype.Trim();
queryData = queryData.Where(m => m.TYPECODE == msgtype);
}
DateTime dt;
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out dt))
queryData = queryData.Where(a => a.CTIME >= dt);
DateTime dt2;
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out dt2))
{
//dt2 = dt2.AddDays(1);
queryData = queryData.Where(a => a.CTIME <= dt2);
}
if (!string.IsNullOrEmpty(resid))
{
string customerid = db.RES_CUSTOMER.Where(m => m.RESID == resid).FirstOrDefault().CUSTOMERID;
queryData = queryData.Where(m => db.RES_CUSTOMER.Where(q => q.CUSTOMERID == customerid).Select(t => t.RESID).Contains(m.RESID));
}
else if (userComboDto.userId.HasValue)
{
queryData = queryData.Where(m => m.CREATEUSER == userComboDto.userId.Value);
}
else if (!string.IsNullOrEmpty(userComboDto.groupIds))
{
decimal[] _groupids = OperationUtil.ConvertToDecimal(userComboDto.groupIds.Split(','));
var userIds = db.BAS_INNERUSERGROUP.Where(m => _groupids.Contains(m.GID.Value)).Select(m => m.INNERUSERID);
queryData = queryData.Where(m => userIds.Contains(m.CREATEUSER));
}
else if (!string.IsNullOrEmpty(userComboDto.deptId))
{
decimal[] _saleDeptId = OperationUtil.ConvertToDecimal(userComboDto.deptId.Split(','));
var groupIds = db.BAS_INNERGROUP.Where(m => _saleDeptId.Contains(m.SALEDEPTID.Value)).Select(p => p.GID).ToList();
var userIds = (from a in db.BAS_INNERUSERGROUP where groupIds.Contains(a.GID.Value) select a.INNERUSERID);
queryData = queryData.Where(a => userIds.Contains(a.CREATEUSER));
}
else if (userComboDto.companyId.HasValue)
{
queryData = from a in queryData
join u in db.BAS_INNERUSER on a.CREATEUSER equals u.PKID
join ug in db.BAS_INNERUSERGROUP on u.PKID equals ug.INNERUSERID
join g in db.BAS_INNERGROUP on ug.GID equals g.GID
join d in db.BAS_SALESDEPARTMENT on g.SALEDEPTID equals d.SALEDEPTID
where d.COMPANYID == userComboDto.companyId.Value
select a;
}
return queryData;
}
#endregion
#region
/// <summary>
/// 分页查询
/// </summary>
/// <param name="pager"></param>
/// <param name="Stime"></param>
/// <param name="Etime"></param>
/// <param name="msgType"></param>
/// <param name="userId"></param>
/// <returns></returns>
public List<WX.CRM.Model.Entity.SMS_MESSAGE_HIS> GetList(ref Pager pager, string Stime, string Etime, string msgType, QueryUserComboDto userComboDto, string resid)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var queryData = db.SMS_MESSAGE_HIS.AsQueryable();
queryData = GetQuery(queryData, db, Stime, Etime, msgType, userComboDto, resid);
queryData = queryData.OrderByDescending(p => p.CTIME);
PagerUtil.SetPager<WX.CRM.Model.Entity.SMS_MESSAGE_HIS>(ref queryData, ref pager);
var obj = queryData.ToList();
return obj;
}
}
#endregion
public void Add(WX.CRM.Model.Entity.SMS_MESSAGE_HIS model)
{
using (crmContext db = new crmContext())
{
model.MESSAGEID = new BLL.Base.SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable);
model.CTIME = DateTime.Now;
model.CREATEUSER = 1;
db.SMS_MESSAGE_HIS.Add(model);
db.SaveChanges();
}
}
public bool IsSendSmsThree(string resid)
{
using (var db = new crmContext())
{
DateTime stime = DateTime.Now.Date;
DateTime etime = stime.AddDays(1);
var list = db.SMS_MESSAGE_HIS.Where(p => p.CTIME >= stime && p.CTIME < etime);
list = list.Where(p => p.SUBTYPECODE == "SMS_ResetPwd" && p.RESID == resid);
var num = list.ToList();
if (num.Count < 6)
{
return true;
}
else
{
return false;
}
}
}
}
}