434 lines
20 KiB
C#
434 lines
20 KiB
C#
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();
|
|
/// <summary>
|
|
/// 获取数据分组
|
|
/// </summary>
|
|
/// <param name="sTime"></param>
|
|
/// <param name="eTime"></param>
|
|
/// <param name="resTypeId"></param>
|
|
/// <param name="activityId"></param>
|
|
/// <param name="hasRegisterSoftware"></param>
|
|
/// <param name="hasOpenFuturesAccount"></param>
|
|
/// <param name="hasOpenSilverAccount"></param>
|
|
/// <param name="hasMemo"></param>
|
|
/// <returns></returns>
|
|
//public IList<GroupByActivity> 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<GroupByActivity>();
|
|
//}
|
|
/// <summary>
|
|
/// 数据导出
|
|
/// </summary>
|
|
/// <param name="resTypeId"></param>
|
|
/// <param name="activityId"></param>
|
|
/// <param name="sTime"></param>
|
|
/// <param name="eTime"></param>
|
|
/// <param name="hasRegisterSoftware"></param>
|
|
/// <param name="hasOpenFuturesAccount"></param>
|
|
/// <param name="hasOpenSilverAccount"></param>
|
|
/// <param name="hasMemo"></param>
|
|
/// <returns></returns>
|
|
public IList<ActivitySourceExport> 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<ActivitySourceExport>();
|
|
}
|
|
|
|
public IList<WX.CRM.Model.Entity.RES_ACTIVITY> 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 添加
|
|
/// <summary>
|
|
/// 添加
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
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 修改
|
|
/// <summary>
|
|
/// 数据的修改
|
|
/// </summary>
|
|
/// <param name="model"></param>
|
|
/// <returns></returns>
|
|
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 删除
|
|
/// <summary>
|
|
/// 删除
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
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 获取单条信息
|
|
/// <summary>
|
|
/// 获取实体
|
|
/// </summary>
|
|
/// <param name="id"></param>
|
|
/// <returns></returns>
|
|
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<Func<RES_ACTIVITY, bool>> where)
|
|
{
|
|
using (var db = new crmContext())
|
|
{
|
|
var entry = db.RES_ACTIVITY.FirstOrDefault(where);
|
|
return entry;
|
|
}
|
|
}
|
|
#endregion
|
|
|
|
#region 获取分页数据列表
|
|
public List<WX.CRM.Model.Entity.RES_ACTIVITY_EXTEND> 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<WX.CRM.Model.Entity.RES_ACTIVITY>(ref queryData, ref pager);
|
|
List<WX.CRM.Model.Entity.RES_ACTIVITY_EXTEND> 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<ActivitySourceInfo> 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<WX.CRM.Model.Entity.RES_POOLLOG>(ref queryData, ref pager);
|
|
List<ActivitySourceInfo> 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<WX.CRM.Model.Entity.RES_ACTIVITY> 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<ActivityResListView> 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<GroupByActivity> 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<GroupByActivity>();
|
|
}
|
|
public IList<ActivitySourceExport> 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<ActivitySourceExport>();
|
|
}
|
|
public IList<ActivitySourceExport> 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<ActivitySourceExport>();
|
|
}
|
|
|
|
public IList<ActivitySourceExport> 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<ActivitySourceExport>();
|
|
}
|
|
//获取最近一个月的活动信息
|
|
public List<ActivitySourceInfo> GetMonthActivityByresid(string resid)
|
|
{
|
|
var ds = groupdByActivity.GetMonthActivityByresid(resid);
|
|
if (ds == null)
|
|
return null;
|
|
return ds.Tables[0].ToList<ActivitySourceInfo>();
|
|
|
|
}
|
|
}
|
|
}
|