using CRM.Core.DAL.Res;
using CRM.Core.Model.Entity;
using System;
using System.Collections.Generic;
using System.Data;
using System.Linq;
using WX.CRM.Common;
namespace CRM.Core.BLL.Res
{
public class RES_CUSTOMER_BL
{
private CUSTOMER_DAL custDal = new CUSTOMER_DAL();
private RES_MOBILE_MD5_BL _mobileMD5 = new RES_MOBILE_MD5_BL();
public RES_CUSTOMER GetModel(string id)
{
using (var db = new CRM.Core.Model.Entity.zxdContext())
{
id = id.Trim();
var q = db.RES_CUSTOMER.Join(
db.RES_CUSTOMERDETAIL.Where(p => p.RESID == id)
, c => c.RESID
, d => d.RESID
, (c, d) => new { RESID = c.RESID, LASTNUM3 = c.LASTNUM3, CUSTOMERID = c.CUSTOMERID, CTIME = c.CTIME, CUSTOMERFROM = c.CUSTOMERFROM, RES_CUSTOMERDETAIL = d }
).FirstOrDefault();
return new RES_CUSTOMER() { RESID = q.RESID, LASTNUM3 = q.LASTNUM3, CUSTOMERID = q.CUSTOMERID, CTIME = q.CTIME, CUSTOMERFROM = q.CUSTOMERFROM, RES_CUSTOMERDETAIL = q.RES_CUSTOMERDETAIL };
}
}
///
/// 根据客户ID查找对应的所有客户ID
///
///
///
public List GetList_CustomerByResid(string Resid)
{
using (var db = new zxdContext())
{
var queryData = db.RES_CUSTOMER.AsQueryable();
if (!string.IsNullOrEmpty(Resid))
{
string trimResid = Resid.Trim();
queryData = queryData.Where(m => m.RESID == trimResid);
}
else
return new List();
List list = (from q in db.RES_CUSTOMER
join f in queryData on q.CUSTOMERID equals f.CUSTOMERID
// join d in db.RES_CUSTOMERDETAIL on q.RESID equals d.RESID
select new
{
RESID = q.RESID,
LASTNUM3 = q.LASTNUM3,
CUSTOMERID = q.CUSTOMERID,
// RES_CUSTOMERDETAIL = d,
CTIME = q.CTIME
}
)
.ToList().Select
(c => new RES_CUSTOMER
{
RESID = c.RESID,
CUSTOMERID = c.CUSTOMERID,
LASTNUM3 = c.LASTNUM3,
//RES_CUSTOMERDETAIL = c.RES_CUSTOMERDETAIL,
CTIME = c.CTIME
}).ToList();
return list;
}
}
public RES_CUSTOMER getResCustomerByResId(string resId)
{
//var redis = new RedisHelper();
//var customer = redis.Get("RES_CUSTOMER:" + resId);
//if (customer == null)
//{
using (var db = new zxdContext())
{
resId = resId.Trim();
RES_CUSTOMER entry = db.RES_CUSTOMER.FirstOrDefault(m => m.RESID == resId);
//var result = redis.AddToCache("RES_CUSTOMER:" + resId, entry);
//LogHelper.Info("RES_CUSTOMER:" + resId);
return entry;
}
//}
//else
//{
// LogHelper.Info("读取缓存数据customer:" + customer.RESID + "," + customer.RES_CUSTOMERDETAIL.RESID);
// return customer;
//}
}
public List GetListByResId(string resId)
{
using (var db = new CRM.Core.Model.Entity.zxdContext())
{
resId = resId.Trim();
List list = db.RES_CUSTOMER.Where(m => m.RESID == resId || m.CUSTOMERID == resId).ToList();
return list;
}
}
public int ResgisterCustomer(string CNumber, string ResId, string CustomerFrom, string customerDetailXml = null)
{
try
{
var mobile = _mobileMD5.Get(p => p.ResId == ResId);
if (mobile == null)
{
var md5 = Utility.UserMd5(CNumber);
_mobileMD5.Add(new RES_MOBILE_MD5() { ResId = ResId, Md5 = md5 });
}
}
catch (Exception ex)
{
LogHelper.Error(ex.ToString());
}
return custDal.ResgisterCustomer(CNumber, ResId, CustomerFrom, customerDetailXml);
}
public int CrossDBResgisterCustomer(string CNumber, string ResId, string CustomerFrom, string customerDetailXml = null)
{
return custDal.CrossDBResgisterCustomer(CNumber, ResId, CustomerFrom, customerDetailXml);
}
public List getResByResIds(string[] resIds)
{
using (var db = new CRM.Core.Model.Entity.zxdContext())
{
return db.RES_CUSTOMER.Where(p => resIds.Contains(p.RESID)).ToList();
}
}
public DataTable GetOpenAccountRes()
{
var dal = new CUSTOMER_DAL();
return dal.GetOpenAccountRes();
}
public void MergeCustomer(string oldResId, string newResId)
{
using (var db = new zxdContext())
{
var oldResIdArr = oldResId.Split(',');
foreach (var item in oldResIdArr)
{
var customer = db.RES_CUSTOMER.FirstOrDefault(p => p.RESID == item);
if (customer != null)
{
customer.CUSTOMERID = newResId;
db.SaveChanges();
}
}
}
}
//根据主客户ID获取所有的用户名信息
public List GetListByCustomerId(string CustomerId)
{
List res = new List();
if (string.IsNullOrWhiteSpace(CustomerId))
{
return res;
}
using (var db = new zxdContext())
{
CustomerId = CustomerId.Trim();
var customerids = db.RES_CUSTOMER.Where(b => b.CUSTOMERID == CustomerId).Select(b => b.RESID).ToList();
var entry = db.SOFT_USER.Where(m => customerids.Contains(m.RESID)).ToList();
return entry;
}
}
public RES_CUSTOMER getResCustomerByUmId(string umId)
{
using (var db = new zxdContext())
{
umId = umId.Trim();
RES_CUSTOMER entry = db.RES_CUSTOMER.FirstOrDefault(m => m.UMID == umId);
return entry;
}
}
}
}