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(); } } }