using System;
using System.Collections.Generic;
using System.Linq;
using WX.CRM.BLL.Base;
using WX.CRM.BLL.Res;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.DAL.Res;
using WX.CRM.IBLL.Csvr;
using WX.CRM.DAL.Res;
using WX.CRM.BLL.Res;
using WX.CRM.Model.MAP;
using WX.CRM.BLL.Application.UserComBox;
using WX.CRM.Model.Entity;
namespace WX.CRM.BLL.Csvr
{
public class CSVR_FAVORITECUSTOMER_BL : ICSVR_FAVORITECUSTOMER, ICSVR_FAVORITECUSTOMER_Q
{
private RES_SHAREDPOOL_DAL _sharedPool_dal = new RES_SHAREDPOOL_DAL();
private RES_MYALLOCATERES_BL _resMyAllocateRes = new RES_MYALLOCATERES_BL();
private CACHE_BL _cache = new CACHE_BL();
#region 添加
public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.CSVR_FAVORITECUSTOMER model, decimal eid, decimal userId)
{
try
{
using (var db = new crmContext())
{
var isExists = db.CSVR_FAVORITECUSTOMER.Any(p => p.RESID == model.RESID);
if (isExists)
{
errors.Add("该客户已经被收藏,您不能再收藏了!");
return false;
}
//如果在高级回收池里面
//var isHS = db.RES_SENIORSHAREDPOOL.Any(p => p.RESID == model.RESID);
//if (isHS)
//{
// //共享池获取资源,写入归属
// var info = new RES_ALLCOTE_USER()
// {
// ID = new SEQUENCES_BL().Seq_base_get(),
// INNERUSERID = userId,
// EID = eid,
// NUM = 1,
// CTIME = DateTime.Now,
// PICI = new SEQUENCES_BL().Seq_base_get(),
// RESID = model.RESID,
// TYPE = 1
// };
// db.RES_ALLCOTE_USER.Add(info);
// var eid1000 = _cache.GetUserList().FirstOrDefault(p => p.EID == 10000).PKID;
// _resMyAllocateRes.ExeSeniorDistributeByResId(eid1000, info.PICI, "高级共享池获取写入", 0);
//}
//else
//{
// //是否存在归属
// var isGS = db.RES_MYALLOCATERES.Any(p => p.RESID == model.RESID && p.INNERUSERID == userId);
// if (!isGS)
// {
// errors.Add("该客户已经有归属,您不能收藏!");
// return false;
// }
// //如果分配表没有数据,说明不存在归属,写入归属,然后收藏
// var isFP = db.RES_MYALLOCATERES.Any(p => p.RESID == model.RESID);
// if (!isFP)
// {
// //共享池获取资源,写入归属
// var info = new RES_ALLCOTE_USER()
// {
// ID = new SEQUENCES_BL().Seq_base_get(),
// INNERUSERID = userId,
// EID = eid,
// NUM = 1,
// CTIME = DateTime.Now,
// PICI = new SEQUENCES_BL().Seq_base_get(),
// RESID = model.RESID,
// TYPE = 1
// };
// db.RES_ALLCOTE_USER.Add(info);
// var eid1000 = _cache.GetUserList().FirstOrDefault(p => p.EID == 10000).PKID;
// _resMyAllocateRes.ExeSeniorDistributeByResId(eid1000, info.PICI, "共享池获取写入", 0);
// }
//}
model.PKID = new SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable);
model.CTIME = DateTime.Now;
db.CSVR_FAVORITECUSTOMER.Add(model);
decimal? oldeid = null;
var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == model.RESID);
if (myRes != null)
{
oldeid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == myRes.INNERUSERID).EID;
}
if (oldeid.HasValue)
{
//多个归属,以收藏客户优先
//写入关系操作表
if (oldeid.Value != eid)
{
//eid相等说明是自己的资源,不需要更新关系
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), model.RESID, eid, 0, "update", oldeid.Value));
}
}
else
{
//oldeid 为空,回收池资源,
//写入关系操作表
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), model.RESID, eid, 0, "add", null));
}
var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == model.RESID);
var favCustomerHis = new CSVR_FAVORITECUSTOMER_HIS()
{
PKID = new SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable),
SALESID = model.SALESID,
RESID = model.RESID,
PARAKEY = model.PARAKEY,
MEMO = model.MEMO,
CTIME = model.CTIME,
REMARK = eid.ToString() + "添加收藏客户" + model.RESID,
OPERATOR = userId,
ACTION = "add",
ACTIONTIME = DateTime.Now,
NAME = customerDetial != null ? customerDetial.CNAME : string.Empty
};
db.CSVR_FAVORITECUSTOMER_HIS.Add(favCustomerHis);
//收藏客户时删除共享池资源
var sharedpool = db.RES_SHAREDPOOL.FirstOrDefault(p => p.RESID == model.RESID);
if (sharedpool != null)
{
db.RES_SHAREDPOOL.Remove(sharedpool);
}
//收藏客户时删除高级共享池资源
var seniorSharedPool = db.RES_SENIORSHAREDPOOL.FirstOrDefault(p => p.RESID == model.RESID);
if (seniorSharedPool != null)
{
db.RES_SENIORSHAREDPOOL.Remove(seniorSharedPool);
}
return db.SaveChanges().GetResult();
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
LogHelper.Error(ex.ToString());
return false;
}
}
#endregion
#region 获取条件后的queryData
///
/// 获取条件后的queryData
///
///
///
///
///
///
///
///
private IQueryable GetQuery(IQueryable queryData, crmContext db, string parameterKey, string stime, string etime, string remark, string resId, QueryUserComboDto usercomboDto)
{
if (!string.IsNullOrEmpty(parameterKey) && parameterKey != "0")
{
queryData = queryData.Where(m => m.PARAKEY == parameterKey);
}
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 (usercomboDto.userId.HasValue)
{
queryData = queryData.Where(m => m.SALESID == usercomboDto.userId.Value);
}
else if (!string.IsNullOrEmpty(usercomboDto.groupIds))
{
var _groupids = OperationUtil.ConvertToDecimal(usercomboDto.groupIds.Split(','));
queryData = (from a in queryData
join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
where _groupids.Contains(b.GID.Value)
select a);
}
else if (!string.IsNullOrEmpty(usercomboDto.deptId))
{
var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(','));
List ALLdeptIDS = new List();
List ALLgidS = new List();
foreach (var item in depts)
{
List deptIDS = new List();
List gidS = new List();
new UserServices(_cache).GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid
ALLdeptIDS.AddRange(deptIDS);
ALLgidS.AddRange(gidS);
}
queryData = (from a in queryData
join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
//join g in db.BAS_INNERGROUP on b.GID equals g.GID
where ALLdeptIDS.Contains(b.DEPTID.Value) || ALLgidS.Contains(b.GID.Value)
select a);
}
//else
//{
// if (!string.IsNullOrWhiteSpace(groupId))
// {
// var _groupids = OperationUtil.ConvertToDecimal(groupId.ToString().Split(','));
// List groupList = new List();
// if (_groupids != null)
// {
// foreach (var g in _groupids)
// {
// groupList.Add(g);
// }
// }
// if (groupList != null)
// {
// var returnData = from a in queryData
// join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID
// where groupList.Contains(b.GID)
// select a;
// queryData = returnData;
// }
// }
//}
if (!string.IsNullOrEmpty(remark))
{
queryData = queryData.Where(p => p.MEMO == remark);
}
if (!string.IsNullOrEmpty(resId))
{
queryData = queryData.Where(p => p.RESID == resId);
}
return queryData;
}
#endregion
#region 获取分页数据列表
public List GetList(ref Pager pager, string memoId, string stime, string etime, string remark, string resId, bool? hasOrder, bool? IsFx, QueryUserComboDto usercomboDto)
{
using (var db = new crmContext())
{
var lableList = from c in db.RES_CUSTOMER
join lable in db.RES_CUSTOMER_LABEL on c.RESID equals lable.RESID
where lable.RFMTYPE == 1
select c;
var residList = from c in db.RES_CUSTOMER
join lable in lableList on c.CUSTOMERID equals lable.CUSTOMERID
select c;
var queryData = db.CSVR_FAVORITECUSTOMER.AsQueryable();
queryData = GetQuery(queryData, db, memoId, stime, etime, remark, resId, usercomboDto);
//queryData = queryData.OrderByDescending(m => m.CTIME);
var obj = from a in queryData
join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID into temp
from b in temp.DefaultIfEmpty()
join o in db.WX_SZZYORDER.Where(p => p.ISOPEN == 1).Select(p => p.RESID).Distinct() on a.RESID equals o into aoTemp
from ao in aoTemp.DefaultIfEmpty()
join c in db.CACHE_RES_RESOURCE_COUNT on a.RESID equals c.RESID into acTemp
from ac in acTemp.DefaultIfEmpty()
join r in residList on a.RESID equals r.RESID into arTemp
from ar in arTemp.DefaultIfEmpty()
select new CSVR_FAVORITECUSTOMER_extend()
{
Name = b.CNAME,
CTIME = a.CTIME,
MEMO = a.MEMO,
PKID = a.PKID,
RESID = a.RESID,
PARAKEY = a.PARAKEY,
SALESID = a.SALESID,
HASORDER = string.IsNullOrEmpty(ao) ? false : true,
LASTACTIVETIME = ac.LASTACTIVETIME,
LASTCALLTIME = ac.LASTCALLTIME,
LastTime = ac.LASTACTIVETIME.HasValue && ac.LASTCALLTIME.HasValue ? (ac.LASTACTIVETIME > ac.LASTCALLTIME ? ac.LASTACTIVETIME : ac.LASTCALLTIME) : (ac.LASTACTIVETIME.HasValue ? ac.LASTACTIVETIME : (ac.LASTCALLTIME.HasValue ? ac.LASTCALLTIME : a.CTIME)),
IsFx = ar != null ? true : false
};
if (hasOrder.HasValue)
{
obj = obj.Where(p => p.HASORDER == hasOrder.Value);
}
if (IsFx.HasValue)
{
obj = obj.Where(p => p.IsFx == IsFx.Value);
}
obj = from o in obj
select new CSVR_FAVORITECUSTOMER_extend()
{
Name = o.Name,
CTIME = o.CTIME,
MEMO = o.MEMO,
PKID = o.PKID,
RESID = o.RESID,
PARAKEY = o.PARAKEY,
SALESID = o.SALESID,
HASORDER = o.HASORDER,
LASTACTIVETIME = o.LASTACTIVETIME,
LASTCALLTIME = o.LASTCALLTIME,
LastTime = o.LastTime.HasValue ? (o.LastTime > o.CTIME ? o.LastTime : o.CTIME) : null,
IsFx = o.IsFx
};
if (pager.order == "desc")
{
if (pager.sort == "recyleTime")
{
obj = obj.OrderByDescending(p => p.LastTime);
}
else
{
obj = obj.OrderByDescending(p => p.CTIME);
}
}
else if (pager.order == "asc")
{
if (pager.sort == "recyleTime")
{
obj = obj.OrderBy(p => p.LastTime);
}
else
{
obj = obj.OrderBy(p => p.CTIME);
}
}
else
obj = obj.OrderByDescending(p => p.CTIME);
PagerUtil.SetPager(ref obj, ref pager);
return obj.ToList();
}
}
#endregion
#region 获取收藏数量
public int GetCount(decimal userId, string roleCodes)
{
var count = 0;
var countOrder = 0;
var countAdv = 0;
using (var db = new crmContext())
{
//所有收藏客户
var query = from a in db.CSVR_FAVORITECUSTOMER
where a.SALESID == userId
select a;
if (roleCodes.Contains("GJSSJKF"))
{
//升级手
//收藏擒龙版升级客户
var arr = new List { 100800013, 100800014, 100800016 };
var arr2 = new List { 100912, 100913 };
var queryData = from a in db.CSVR_FAVORITECUSTOMER
join b in db.WX_SZZYORDER on a.RESID equals b.RESID
join c in db.WX_SZZYSUBPRODUCT on b.SUBPRODUCTID equals c.SUBPRODUCTID
where (arr.Contains(c.MIDPRODUCTID) || arr2.Contains(c.SUBPRODUCTID)) && a.SALESID == userId
select a;
countAdv = queryData.Count();
}
else
{
//除升级手外需要减掉成交客户数
//所有成交客户数
var queryOrde = from a in db.CSVR_FAVORITECUSTOMER
join b in db.WX_SZZYORDER on a.RESID equals b.RESID
where b.ISOPEN == 1 && a.SALESID == userId
select a;
countOrder = queryOrde.Count();
}
count = query.Count() - countOrder - countAdv;
}
return count;
}
#endregion
#region 获取单个
public CSVR_FAVORITECUSTOMER_extend GetModel_FavoriteCustomer(decimal id)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var queryData = db.CSVR_FAVORITECUSTOMER.AsQueryable();
return (from a in queryData
join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID into temp
from b in temp.DefaultIfEmpty()
select new CSVR_FAVORITECUSTOMER_extend()
{
Name = b.CNAME,
CTIME = a.CTIME,
MEMO = a.MEMO,
PKID = a.PKID,
RESID = a.RESID,
PARAKEY = a.PARAKEY,
SALESID = a.SALESID
}
).FirstOrDefault(m => m.PKID == id);
}
}
public CSVR_FAVORITECUSTOMER_extend GetModel_FavoriteCustomer(string resid, decimal? userId)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var queryData = db.CSVR_FAVORITECUSTOMER.AsQueryable();
if (!string.IsNullOrEmpty(resid))
{
queryData = queryData.Where(p => p.RESID == resid);
}
if (userId.HasValue)
{
queryData = queryData.Where(p => p.SALESID == userId.Value);
}
return (from a in queryData
join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID into temp
from b in temp.DefaultIfEmpty()
select new CSVR_FAVORITECUSTOMER_extend()
{
Name = b.CNAME,
CTIME = a.CTIME,
MEMO = a.MEMO,
PKID = a.PKID,
RESID = a.RESID,
PARAKEY = a.PARAKEY,
SALESID = a.SALESID
}).FirstOrDefault();
}
}
#endregion
#region 编辑
public bool Update(ref ValidationErrors errors, CSVR_FAVORITECUSTOMER model, decimal eid, decimal userId)
{
try
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var entry = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(m => m.PKID == model.PKID);
if (entry == null)
return false;
entry.PARAKEY = model.PARAKEY;
entry.MEMO = model.MEMO;
var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == entry.RESID);
var favCustomerHis = new CSVR_FAVORITECUSTOMER_HIS()
{
PKID = new SEQUENCES_BL().Seq_base_get(WX.CRM.Model.Enum.PKIDType.LargeTable),
SALESID = entry.SALESID,
RESID = entry.RESID,
PARAKEY = entry.PARAKEY,
MEMO = entry.MEMO,
CTIME = entry.CTIME,
REMARK = eid.ToString() + "修改收藏客户" + entry.RESID,
OPERATOR = userId,
ACTION = "update",
ACTIONTIME = DateTime.Now,
NAME = customerDetial != null ? customerDetial.CNAME : string.Empty
};
db.CSVR_FAVORITECUSTOMER_HIS.Add(favCustomerHis);
db.SaveChanges();
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
LogHelper.Error(ex.ToString());
return false;
}
}
#endregion
#region 删除
///
/// 删除数据
///
///
///
public bool Delete(ref ValidationErrors errors, decimal id, decimal eid, decimal userId)
{
try
{
using (var db = new crmContext())
{
var userInfo = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(m => m.PKID == id);
if (userInfo != null)
{
//获取收藏客户列表
var favList = db.CSVR_FAVORITECUSTOMER.Where(p => p.RESID == userInfo.RESID);
//如果收藏客户只有最后一个
//if (favList.Count() == 1)
//{
var favModel = favList.First();
var existsOrder = db.WX_SZZYORDER.Any(p => p.RESID == userInfo.RESID);
//var existsDistribute = db.RES_DISTRIBUTE_DETAIL.Any(p => p.RESID == userInfo.RESID);
var existsDistribute = db.RES_MYALLOCATERES.Any(p => p.RESID == userInfo.RESID);
if (!(existsOrder || existsDistribute))
{
//如果是订单用户则不需要写入到共享池
//写到共享池
if (!db.RES_SHAREDPOOL.Any(p => p.RESID == favModel.RESID))
{
db.RES_SHAREDPOOL.Add(new RES_SHAREDPOOL() { RESID = favModel.RESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "放弃客户时写入" });
db.RES_SHAREDPOOL_HIS.Add(new RES_SHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, SALESID = favModel.SALESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入" });
}
}
var arr = new List { 100800013, 100800015, 100800016, 100800201 };
var arr2 = new List { 100800011, 100800101 };
var hasUporder = from a in db.WX_SZZYORDER
join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID
where a.RESID == userInfo.RESID && arr.Contains(b.MIDPRODUCTID)
select a;
var hasQlOrder = from a in db.WX_SZZYORDER
join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID
where a.RESID == userInfo.RESID && arr2.Contains(b.MIDPRODUCTID) && a.ISOPEN == 1
orderby a.OTIME descending
select a;
var hasTkOrder = from a in db.WX_SZZYORDER where a.RESID == userInfo.RESID && a.ORDERSTATUS == "90" select a;
//有擒龙版订单,没有升级客户,开通时间大于3个月放入高级共享池,并去除退款客户
if (!hasUporder.Any() && hasQlOrder.Any() && !hasTkOrder.Any())
{
var qlOrde = hasQlOrder.First();
var otime = qlOrde.OTIME.Value.AddMonths(3);
if (otime < DateTime.Now)
{
db.RES_SENIORSHAREDPOOL.Add(new RES_SENIORSHAREDPOOL() { RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "放弃客户时写入", COMPANYCODE = "" });
db.RES_SENIORSHAREDPOOL_HIS.Add(new RES_SENIORSHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入", COMPANYCODE = "" });
}
}
//}
//删除共享客户
var sharedCustomerList = db.RES_SHAREDCUSTOMER.Where(p => p.RESID == userInfo.RESID);
db.RES_SHAREDCUSTOMER.RemoveRange(sharedCustomerList);
//写收藏日志
var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == userInfo.RESID);
db.CSVR_FAVORITECUSTOMER_HIS.Add(new CSVR_FAVORITECUSTOMER_HIS()
{
PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable),
SALESID = userInfo.SALESID,
RESID = userInfo.RESID,
PARAKEY = userInfo.PARAKEY,
MEMO = userInfo.MEMO,
CTIME = userInfo.CTIME,
REMARK = eid.ToString() + "放弃客户时删除收藏客户" + userInfo.RESID,
OPERATOR = userId,
ACTION = "delete",
ACTIONTIME = DateTime.Now,
NAME = customerDetial != null ? customerDetial.CNAME : string.Empty
});
//删除收藏客户
db.CSVR_FAVORITECUSTOMER.Remove(userInfo);
//如果原来分配表有分配,写回原来的关系
decimal? oldeid = null;
var myRes = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == userInfo.RESID);
if (myRes != null)
{
oldeid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == myRes.INNERUSERID).EID;
}
var faveid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == userInfo.SALESID).EID;
if (oldeid.HasValue)
{
//写入关系操作表
if (oldeid.Value != faveid)
{
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), userInfo.RESID, faveid, 0, "update", oldeid.Value));
}
}
else
{
//如果已经是订单客户,则不删除关系
if (!existsOrder)
{
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), userInfo.RESID, 0, 0, "delete", faveid));
}
}
}
return db.SaveChanges().GetResult();
}
}
catch (Exception ex) { LogHelper.Error(ex.ToString()); errors.Add(ex.Message); return false; }
}
public bool GiveUp(ref ValidationErrors errors, decimal id, decimal eid, decimal userId)
{
try
{
using (var db = new crmContext())
{
var userInfo = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(m => m.PKID == id);
if (userInfo != null)
{
//获取收藏客户列表
var favList = db.CSVR_FAVORITECUSTOMER.Where(p => p.RESID == userInfo.RESID);
//如果收藏客户只有最后一个
if (favList.Count() == 1)
{
var favModel = favList.First();
var existsOrder = db.WX_SZZYORDER.Any(p => p.RESID == userInfo.RESID);
//var existsDistribute = db.RES_DISTRIBUTE_DETAIL.Any(p => p.RESID == userInfo.RESID);
var existsDistribute = db.RES_MYALLOCATERES.Any(p => p.RESID == userInfo.RESID);
if (!(existsOrder || existsDistribute))
{
//如果是订单用户则不需要写入到共享池
//写到共享池
if (!db.RES_SHAREDPOOL.Any(p => p.RESID == favModel.RESID))
{
db.RES_SHAREDPOOL.Add(new RES_SHAREDPOOL() { RESID = favModel.RESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "放弃客户时写入" });
db.RES_SHAREDPOOL_HIS.Add(new RES_SHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, SALESID = favModel.SALESID, TYPE = 4, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入" });
}
}
var arr = new List { 100800013, 100800015, 100800016 };
var hasUporder = from a in db.WX_SZZYORDER
join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID
where a.RESID == userInfo.RESID && arr.Contains(b.MIDPRODUCTID)
select a;
var hasQlOrder = from a in db.WX_SZZYORDER
join b in db.WX_SZZYSUBPRODUCT on a.SUBPRODUCTID equals b.SUBPRODUCTID
where a.RESID == userInfo.RESID && b.MIDPRODUCTID == 100800011 && a.ISOPEN == 1
orderby a.OTIME descending
select a;
var hasTkOrder = from a in db.WX_SZZYORDER where a.RESID == userInfo.RESID && a.ORDERSTATUS == "90" select a;
//有擒龙版订单,没有升级客户,开通时间大于3个月放入高级共享池,并去除退款客户
if (!hasUporder.Any() && hasQlOrder.Any() && !hasTkOrder.Any())
{
var qlOrde = hasQlOrder.First();
var otime = qlOrde.OTIME.Value.AddMonths(3);
if (otime < DateTime.Now)
{
db.RES_SENIORSHAREDPOOL.Add(new RES_SENIORSHAREDPOOL() { RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "放弃客户时写入", COMPANYCODE = "" });
db.RES_SENIORSHAREDPOOL_HIS.Add(new RES_SENIORSHAREDPOOL_HIS() { PKID = new SEQUENCES_BL().Seq_base_get(), RESID = favModel.RESID, TYPE = 1, CTIME = DateTime.Now, REMARK = "删除收藏客户时写入", COMPANYCODE = "" });
}
}
}
//删除共享客户
var sharedCustomerList = db.RES_SHAREDCUSTOMER.Where(p => p.RESID == userInfo.RESID);
db.RES_SHAREDCUSTOMER.RemoveRange(sharedCustomerList);
//写收藏日志
var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == userInfo.RESID);
db.CSVR_FAVORITECUSTOMER_HIS.Add(new CSVR_FAVORITECUSTOMER_HIS()
{
PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable),
SALESID = userInfo.SALESID,
RESID = userInfo.RESID,
PARAKEY = userInfo.PARAKEY,
MEMO = userInfo.MEMO,
CTIME = userInfo.CTIME,
REMARK = eid.ToString() + "放弃客户时删除收藏客户" + userInfo.RESID,
OPERATOR = userId,
ACTION = "delete",
ACTIONTIME = DateTime.Now,
NAME = customerDetial != null ? customerDetial.CNAME : string.Empty
});
//删除收藏客户
db.CSVR_FAVORITECUSTOMER.Remove(userInfo);
//放弃客户时,删除归属
var resInfo = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == userInfo.RESID);
if (resInfo != null)
{
db.RES_MYALLOCATERES.Remove(resInfo);
}
//写入关系操作表
var oldeid = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == userInfo.SALESID).EID;
db.RES_MYALLOCATERES_ACT.Add(new RES_MYALLOCATERES_ACT(new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable), userInfo.RESID, 0, 0, "delete", oldeid));
}
return db.SaveChanges().GetResult();
}
}
catch (Exception ex) { LogHelper.Error(ex.ToString()); errors.Add(ex.Message); return false; }
}
#endregion
#region
public void Change(string id, decimal inneruserId, decimal eid, decimal aeid, decimal userId, string paraKey)
{
try
{
var arr = id.Split(',').Select(decimal.Parse);
var allocteUsers = new List();
var pici = new SEQUENCES_BL().Seq_base_get();
using (var db = new crmContext())
{
foreach (var item in arr)
{
var model = db.CSVR_FAVORITECUSTOMER.FirstOrDefault(p => p.PKID == item);
var oldUser = db.BAS_INNERUSER.FirstOrDefault(p => p.PKID == model.SALESID);
var resModel = db.RES_MYALLOCATERES.FirstOrDefault(p => p.RESID == model.RESID && p.INNERUSERID == model.SALESID);
model.SALESID = inneruserId;
if (!string.IsNullOrEmpty(paraKey))
{
model.PARAKEY = paraKey;
}
//写收藏日志
var customerDetial = db.RES_CUSTOMERDETAIL.FirstOrDefault(p => p.RESID == model.RESID);
db.CSVR_FAVORITECUSTOMER_HIS.Add(new CSVR_FAVORITECUSTOMER_HIS()
{
PKID = new SEQUENCES_BL().Seq_base_get(Model.Enum.PKIDType.LargeTable),
SALESID = model.SALESID,
RESID = model.RESID,
PARAKEY = model.PARAKEY,
MEMO = model.MEMO,
CTIME = model.CTIME,
REMARK = aeid.ToString() + "移动" + (oldUser != null ? oldUser.EID.ToString() : "未知") + "的收藏客户" + model.RESID + "到" + eid.ToString(),
OPERATOR = userId,
ACTION = "change",
ACTIONTIME = DateTime.Now,
NAME = customerDetial != null ? customerDetial.CNAME : string.Empty
});
var info = new RES_ALLCOTE_USER()
{
ID = new SEQUENCES_BL().Seq_base_get(),
INNERUSERID = inneruserId,
EID = eid,
NUM = 1,
CTIME = DateTime.Now,
PICI = pici,
RESID = model.RESID,
TYPE = 1
};
if (resModel != null)
{
info.SGID = resModel.SGID;
}
allocteUsers.Add(info);
}
db.RES_ALLCOTE_USER.AddRange(allocteUsers);
db.SaveChanges();
}
_resMyAllocateRes.ExeSeniorDistributeByResId(userId, pici, "移动收藏分配");
}
catch (Exception ex)
{
throw ex;
}
}
#endregion
#region 检测是否能外呼电话
///
/// 检测是否能外呼电话(收藏客户只有收藏的员工才能外呼,特定角色、共享客户除外)
/// 如果返回的结果集
///
///
///
///
public List FavCallList(string resId, decimal userId)
{
var ds = _sharedPool_dal.FavCallList(resId, userId);
var data = ds.Tables[0].ToList();
return data;
}
#endregion
///
/// 获取客户ID的收藏人 和 归属人
///
///
///
public List GetFavAndMyResList(string resid)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
List list = db.RES_CUSTOMER.Where(m => m.CUSTOMERID == resid).Select(m => new CSVR_FAVORITECUSTOMER_AndMyRes() { resid = m.RESID }).ToList();
var ds = list.Select(m => m.resid);
var myreslist = db.RES_MYALLOCATERES.Where(m => ds.Contains(m.RESID)).ToList();
var csvlist = db.CSVR_FAVORITECUSTOMER.Where(m => ds.Contains(m.RESID)).ToList();
foreach (var item in list)
{
var my = myreslist.FirstOrDefault(m => m.RESID == item.resid);
if (my != null)
{
item.myresuserid = my.INNERUSERID;
}
var fav = csvlist.Where(m => m.RESID == item.resid).ToList();
if (fav.Count > 0)
{
item.favuserid = fav.Select(m => m.SALESID).ToArray();
}
}
return list;
}
}
}
}