using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using System.Linq.Expressions;
using WX.CRM.BLL.Base;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.DAL.Res;
using WX.CRM.IBLL.Res;
using WX.CRM.Model.Entity;
using WX.CRM.Model.QueryMap;
namespace WX.CRM.BLL.Res
{
public class RES_ACTIVITY_BL : IRES_ACTIVITY, IRES_ACTIVITY_Q
{
private GroupByActivity_DAL groupdByActivity = new GroupByActivity_DAL();
///
/// 获取数据分组
///
///
///
///
///
///
///
///
///
///
//public IList GetList_Activity(DateTime sTime, DateTime eTime, int? resTypeId = null, int? activityId = null, bool? hasRegisterSoftware = null, bool? hasOpenFuturesAccount = null, bool? hasOpenSilverAccount = null, bool? hasMemo = null, decimal? restypeCode = null)
//{
// eTime = eTime.AddDays(1);
// var ds = groupdByActivity.GetList_Activity(sTime, eTime, resTypeId, activityId, hasRegisterSoftware, hasOpenFuturesAccount, hasOpenSilverAccount, hasMemo, restypeCode);
// if (ds == null)
// return null;
// return ds.Tables[0].ToList();
//}
///
/// 数据导出
///
///
///
///
///
///
///
///
///
///
public IList GetListExport_Activity(decimal resTypeId, decimal activityId, DateTime sTime, DateTime eTime, bool? hasRegisterSoftware = null, bool? hasOpenFuturesAccount = null, bool? hasOpenSilverAccount = null, bool? hasMemo = null)
{
eTime = eTime.AddDays(1);
//return groupdByActivity.GetListExport_Activity(resTypeId, activityId, sTime, eTime, isRegisterSoftware, isOpenFuturesAccount, isOpenSilverAccount);
var ds = groupdByActivity.GetListExport_Activity(resTypeId, activityId, sTime, eTime, hasRegisterSoftware, hasOpenFuturesAccount, hasOpenSilverAccount, hasMemo);
if (ds == null)
return null;
return ds.Tables[0].ToList();
}
public IList GetList_RESID(decimal resId)
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
return db.RES_ACTIVITY.Where(obj => obj.RESTYPEID == resId).ToList();
}
}
#region 添加
///
/// 添加
///
///
///
public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.RES_ACTIVITY model)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
var entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYCODE == model.ACTIVITYCODE);
if (entry != null)
{
errors.Add("该编码已经被占用!");
return false;
}
model.ACTIVITYID = new SEQUENCES_BL().Seq_base_get();
model.CTIME = DateTime.Now;
db.RES_ACTIVITY.Add(model);
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region 修改
///
/// 数据的修改
///
///
///
public bool Update(ref ValidationErrors errors, WX.CRM.Model.Entity.RES_ACTIVITY model)
{
try
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.RES_ACTIVITY entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYID == model.ACTIVITYID);
if (entry == null)
return false;
var et = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYCODE == model.ACTIVITYCODE && m.ACTIVITYID != model.ACTIVITYID);
if (et != null)
{
errors.Add("该编码已经被占用!");
return false;
}
entry.ACTIVITYID = model.ACTIVITYID;
entry.ACTIVITYADDR = model.ACTIVITYADDR;
entry.ACTIVITYCODE = model.ACTIVITYCODE;
entry.RESOURCETAG = model.RESOURCETAG;
entry.RESTYPEID = model.RESTYPEID;
entry.MEMO = model.MEMO;
entry.UTIME = DateTime.Now;
entry.UPDATEUSER = model.UPDATEUSER;
entry.ACTIVITYNAME = model.ACTIVITYNAME;
db.SaveChanges();
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
#endregion
#region 删除
///
/// 删除
///
///
///
public bool Delete(ref ValidationErrors errors, decimal id)
{
try
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.RES_ACTIVITY entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYID == id);
if (entry == null)
{
errors.Add("数据已经被删除!");
return false;
}
db.RES_ACTIVITY.Remove(entry);
return db.SaveChanges().GetResult();
}
}
catch (Exception ex) { errors.Add(ex.Message); return false; }
}
#endregion
#region 获取单条信息
///
/// 获取实体
///
///
///
public RES_ACTIVITY GetModel(decimal id)
{
using (var db = new crmContext())
{
var entry = db.RES_ACTIVITY.FirstOrDefault(m => m.ACTIVITYID == id);
return entry;
}
}
public RES_ACTIVITY GetModel(Expression> where)
{
using (var db = new crmContext())
{
var entry = db.RES_ACTIVITY.FirstOrDefault(where);
return entry;
}
}
#endregion
#region 获取分页数据列表
public List GetList(ref Pager pager, string activityName, string activityCode, string resourceTag, string resTypeName, string stime, string etime)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var queryData = db.RES_ACTIVITY.AsQueryable();
if (!string.IsNullOrWhiteSpace(activityName))
queryData = queryData.Where(m => m.ACTIVITYNAME.Contains(activityName));
if (!string.IsNullOrWhiteSpace(activityCode))
queryData = queryData.Where(m => m.ACTIVITYCODE.Contains(activityCode));
if (!string.IsNullOrWhiteSpace(resourceTag))
queryData = queryData.Where(m => m.RESOURCETAG.Contains(resourceTag));
if (!string.IsNullOrWhiteSpace(resTypeName))
{
queryData = queryData.Where(m => (from a in db.RES_RESOURCETYPE where a.TYPENAME.Contains(resTypeName) select a.RESTYPEID).Contains(m.RESTYPEID));
}
DateTime date1;
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out date1))
queryData = queryData.Where(m => m.CTIME >= date1);
DateTime date2;
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out date2))
{
date2 = date2.AddDays(1);
queryData = queryData.Where(m => m.CTIME < date2);
}
if (pager.order == "desc")
{
switch (pager.sort)
{
case "ACTIVITYNAME":
queryData = queryData.OrderByDescending(c => c.ACTIVITYNAME);
break;
case "ACTIVITYCODE":
queryData = queryData.OrderByDescending(c => c.ACTIVITYCODE);
break;
case "RESTYPEID":
queryData = queryData.OrderByDescending(c => c.RESTYPEID);
break;
case "RESOURCETAG":
queryData = queryData.OrderByDescending(c => c.RESOURCETAG);
break;
default:
queryData = queryData.OrderByDescending(c => c.CTIME);
break;
}
}
else
{
switch (pager.sort)
{
case "ACTIVITYNAME":
queryData = queryData.OrderBy(c => c.ACTIVITYNAME);
break;
case "ACTIVITYCODE":
queryData = queryData.OrderBy(c => c.ACTIVITYCODE);
break;
case "RESTYPEID":
queryData = queryData.OrderBy(c => c.RESTYPEID);
break;
case "RESOURCETAG":
queryData = queryData.OrderBy(c => c.RESOURCETAG);
break;
default:
queryData = queryData.OrderBy(c => c.CTIME); break;
}
}
//queryData = queryData.OrderByDescending(m => m.CTIME);
PagerUtil.SetPager(ref queryData, ref pager);
List list = (from a in queryData
join x in db.RES_RESOURCETYPE on a.RESTYPEID equals x.RESTYPEID into tmp
from ax in tmp.DefaultIfEmpty()
select new WX.CRM.Model.Entity.RES_ACTIVITY_EXTEND()
{
res_ACTIVITY = a,
TYPEName = ax.TYPENAME
}).OrderByDescending(p => p.res_ACTIVITY.CTIME).ToList();
return list;
}
}
#endregion
#region 获取更多的活动信息分页数据列表
public List GetActivityInfoMoreList(ref Pager pager, string resid, string stime, string etime)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var res_customer = db.RES_CUSTOMER.Where(p => p.CUSTOMERID == resid).Select(p => p.RESID).ToList();
//string strresid = "";
//foreach (var item in res_customer)
//{
// strresid += item.RESID;
// strresid += ",";
//}
var queryData = db.RES_POOLLOG.AsQueryable();
//if (res_customer.Any())
{
queryData = queryData.Where(p => res_customer.Contains(p.RESID));
}
DateTime date1;
if (!string.IsNullOrWhiteSpace(stime) && DateTime.TryParse(stime, out date1))
queryData = queryData.Where(m => m.APPLYTIME >= date1);
DateTime date2;
if (!string.IsNullOrWhiteSpace(etime) && DateTime.TryParse(etime, out date2))
{
date2 = date2.AddDays(1);
queryData = queryData.Where(m => m.APPLYTIME < date2);
}
var data = queryData.ToList();
var data2 = db.RES_CUSTOMERDETAIL.Where(p => res_customer.Contains(p.RESID));
//queryData = queryData.OrderByDescending(p => p.APPLYTIME);
//PagerUtil.SetPager(ref queryData, ref pager);
List list = (from a in data
//join b in db.RES_CUSTOMERUSER on a.RESID equals b.RESID
join b in data2 on a.RESID equals b.RESID
join c in db.RES_ACTIVITY on a.ACTIVITYID equals c.ACTIVITYID
join d in db.RES_RESOURCETYPE on a.RESTYPEID equals d.RESTYPEID
select new ActivitySourceInfo()
{
ResId = a.RESID,
//UserName = b == null ? "" :a.USERNAME,
UserName = b.CNAME,
ActivityName = c == null ? "" : c.ACTIVITYNAME,
TypeName = d == null ? "" : d.TYPENAME,
ApplyTime = a.APPLYTIME,
DataType = a.DATATYPE,
ExtXml = string.IsNullOrEmpty(a.KWORD) ? a.EXTXML : a.KWORD
}
).ToList();
return list.OrderByDescending(p => p.ApplyTime).ToList();
}
}
public WX.CRM.Model.Entity.RES_CUSTOMERUSER GetRES_CUSTOMERUSERModel(string resid)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.RES_CUSTOMERUSER entry = db.RES_CUSTOMERUSER.FirstOrDefault(m => m.RESID == resid);
return entry;
}
}
public WX.CRM.Model.Entity.RES_RESOURCETYPE GetRES_RESOURCETYPEModel(decimal typeid)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.RES_RESOURCETYPE entry = db.RES_RESOURCETYPE.FirstOrDefault(m => m.RESTYPEID == typeid);
return entry;
}
}
#endregion
public List GetList(decimal resourctId)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
return db.RES_ACTIVITY.Where(p => p.RESTYPEID == resourctId).OrderByDescending(m => m.CTIME).ToList();
}
}
public List GetResList(decimal? resTypeId, decimal? activityId, DateTime? sTime, DateTime? eTime)
{
using (var db = new crmContext())
{
if (eTime.HasValue)
{
eTime = eTime.Value.AddDays(1);
}
var query = from p in db.RES_POOLLOG
join t in db.RES_RESOURCETYPE on p.RESTYPEID equals t.RESTYPEID
join a in db.RES_ACTIVITY on p.RESOURCETAG equals a.RESOURCETAG
where p.CTIME >= sTime.Value && p.CTIME < eTime.Value
select new ActivityResListView()
{
ResId = p.RESID,
//CTime = p.CTIME,
ResTypeId = t.RESTYPEID,
ResTypeName = t.TYPENAME,
ActivityId = a.ACTIVITYID,
ActivityName = a.ACTIVITYNAME
};
if (resTypeId.HasValue)
{
query = query.Where(p => p.ResTypeId == resTypeId.Value);
}
if (activityId.HasValue)
{
query = query.Where(p => p.ActivityId == activityId.Value);
}
return query.Distinct().ToList();
}
}
public IList GetList_Activity(DateTime sTime, DateTime eTime, int Attribute, decimal userId, int hasRole, bool hasKword = false)
{
eTime = eTime.AddDays(1);
var ds = groupdByActivity.GetList_Activity(sTime, eTime, Attribute, userId, hasRole, hasKword);
if (ds == null)
return null;
return ds.Tables[0].ToList();
}
public IList GetList_Activity_export(decimal resTypeId, decimal activityId, DateTime sTime, DateTime eTime, decimal userId, int hasRole)
{
eTime = eTime.AddDays(1);
var ds = groupdByActivity.GetList_Activity_export(resTypeId, activityId, sTime, eTime, userId, hasRole, null);
if (ds == null)
return null;
return ds.Tables[0].ToList();
}
public IList GetList_Activity_export(decimal resTypeId, decimal activityId, DateTime sTime, DateTime eTime, decimal userId, int hasRole, int count)
{
eTime = eTime.AddDays(1);
var ds = groupdByActivity.GetList_Activity_export(resTypeId, activityId, sTime, eTime, userId, hasRole, count);
if (ds == null)
return null;
return ds.Tables[0].ToList();
}
public IList GetList_DistributeActivity_export(decimal resTypeId, decimal ActivityId, DateTime? stime, DateTime? etime, string choices, DateTime? Memostime, DateTime? Memoetime, string excludeWeixinRes, string excludeOrderRes, string excludeSpecialMemo)
{
var ds = groupdByActivity.GetList_DistributeActivity_export(resTypeId, ActivityId, stime, etime, choices, Memostime, Memoetime, excludeWeixinRes, excludeOrderRes, excludeSpecialMemo);
if (ds == null)
return null;
return ds.Tables[0].ToList();
}
//获取最近一个月的活动信息
public List GetMonthActivityByresid(string resid)
{
var ds = groupdByActivity.GetMonthActivityByresid(resid);
if (ds == null)
return null;
return ds.Tables[0].ToList();
}
}
}