using System;
using System.Collections.Generic;
using System.Data;
using System.Data.Entity;
using System.Linq;
using WX.CRM.BLL.Base;
using WX.CRM.BLL.Util;
using WX.CRM.Common;
using WX.CRM.DAL.Soft;
using WX.CRM.IBLL.Soft;
using WX.CRM.Model.Entity;
using WX.CRM.Model.Enum;
namespace WX.CRM.BLL.Soft
{
public class SOFT_CUSTOMER_BL : ISOFT_CUSTOMER, ISOFT_CUSTOMER_Q
{
#region 获取单条信息
///
/// 获取实体
///
///
///
public WX.CRM.Model.Entity.SOFT_CUSTOMER GetModel(decimal id)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
WX.CRM.Model.Entity.SOFT_CUSTOMER entry = db.SOFT_CUSTOMER.FirstOrDefault(m => m.CUSTOMERID == id);
return entry;
}
}
#endregion
#region 获取分页数据列表
///
/// 获取软件客户列表
///
///
/// 用户名
///
/// 客户ID
/// 用户状态
/// 权限开通日期1
/// 权限开通日期2
/// 权限截止日期1
/// 权限截止日期2
/// 组别
/// 员工
///
public List GetList(ref Pager pager, string softName, decimal? saleId, string resId, decimal userStatus, DateTime? optime1, DateTime? optime2, DateTime? endtime1, DateTime? endtime2, string groupId, decimal? inneruserId)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
var queryData = db.SOFT_CUSTOMER.AsQueryable();
if (!string.IsNullOrWhiteSpace(softName))
{
queryData = queryData.Where(m => m.SOFTNAME == softName);
}
if (!string.IsNullOrWhiteSpace(resId))
queryData = queryData.Where(m => m.RESID == resId);
if (userStatus != 0)
queryData = queryData.Where(m => m.USERSTATUS == userStatus);
if (optime1.HasValue)
queryData = queryData.Where(m => m.OPENDATE >= optime1.Value);
if (optime2.HasValue)
{
optime2 = optime2.Value.AddDays(1);
queryData = queryData.Where(m => m.OPENDATE < optime2);
}
if (endtime1.HasValue)
queryData = queryData.Where(m => m.ENDDATE >= endtime1.Value);
if (endtime2.HasValue)
{
endtime2 = endtime2.Value.AddDays(1);
queryData = queryData.Where(m => m.ENDDATE < endtime2);
}
if (inneruserId != null)
{
queryData = queryData.Where(m => m.SALEUSERID.Value == inneruserId);
}
else if (!string.IsNullOrEmpty(groupId))
{
decimal[] _groupIds = OperationUtil.ConvertToDecimal(groupId.Split(','));
var userids = db.BAS_INNERUSERGROUP.Where(m => _groupIds.Contains(m.GID.Value)).Select(m => m.INNERUSERID);
queryData = queryData.Where(m => userids.Contains(m.SALEUSERID.Value));
}
if (saleId > 0)
queryData = queryData.Where(m => m.SALEUSERID.Value == saleId);
IQueryable query = from a in queryData
join e in db.BAS_INNERUSERGROUP on a.SALEUSERID equals e.INNERUSERID into tempE
from e in tempE.DefaultIfEmpty()
join d in db.BAS_INNERGROUP on e.GID equals d.GID into tempD
from d in tempD.DefaultIfEmpty()
select new SOFT_CUSTOMER_Extend()
{
CUSTOMERID = a.CUSTOMERID,
SOFTNAME = a.SOFTNAME,
USERNAME = a.USERNAME,
RESID = a.RESID,
REGCAMPAINID = a.REGCAMPAINID,
USERNO = a.USERNO,
IDCARD = a.IDCARD,
SOFTTYPE = a.SOFTTYPE,
PRODUCTCODE = a.PRODUCTCODE,
USERSTATUS = a.USERSTATUS,
OPENDATE = a.OPENDATE,
ENDDATE = a.ENDDATE,
CTIME = a.CTIME,
UTIME = a.UTIME,
SALEUSERID = a.SALEUSERID,
GroupName = d.GNAME
};
//排序
if (pager.order == "desc")
{
switch (pager.sort)
{
case "SOFTNAME":
query = query.OrderByDescending(c => c.SOFTNAME);
break;
case "OPENDATE":
query = query.OrderByDescending(c => c.OPENDATE);
break;
case "ENDDATE":
query = query.OrderByDescending(c => c.ENDDATE);
break;
case "SALEUSERID":
query = query.OrderByDescending(c => c.SALEUSERID);
break;
default:
query = query.OrderByDescending(c => c.CTIME);
break;
}
}
else
{
switch (pager.sort)
{
case "SOFTNAME":
query = query.OrderBy(c => c.SOFTNAME);
break;
case "OPENDATE":
query = query.OrderBy(c => c.OPENDATE);
break;
case "ENDDATE":
query = query.OrderBy(c => c.ENDDATE);
break;
case "SALEUSERID":
query = query.OrderBy(c => c.SALEUSERID);
break;
default:
query = query.OrderBy(c => c.CTIME);
break;
}
}
PagerUtil.SetPager(ref query, ref pager);
return query.ToList();
}
}
#endregion
#region 根据软件用户名获取信息
public List GetListBySoftName(string[] softName)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
return db.SOFT_CUSTOMER.Where(m => m.SOFTTYPE == 1 && softName.Contains(m.SOFTNAME)).ToList();
}
}
#endregion
public void CleanSoftCustomer(List addList, List UpdateList)
{
using (var db = new WX.CRM.Model.Entity.crmContext())
{
SEQUENCES_BL pkid = new SEQUENCES_BL();
foreach (var addModel in addList)
{
addModel.CUSTOMERID = pkid.Seq_base_get(PKIDType.LargeTable);
db.SOFT_CUSTOMER.Add(addModel);
}
foreach (var updateModel in UpdateList)
{
db.SOFT_CUSTOMER.Attach(updateModel);
db.Entry(updateModel).State = EntityState.Modified;
}
db.SaveChanges();
}
}
public void setSoftCustomerSalerId()
{
new Soft_Customer_DAL().setSoftCustomerSalerId();
}
public void ComputeSoftCustomer(decimal impid)
{
new Soft_Customer_DAL().ComputeSoftCustomer(impid);
}
///
/// 批量修改
///
///
public bool UpdateList(ref ValidationErrors errors, List customer_lists)
{
try
{
using (WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext())
{
foreach (var model in customer_lists)
{
db.SOFT_CUSTOMER.Attach(model);
db.Entry(model).State = EntityState.Modified;
}
db.SaveChanges();
return true;
}
}
catch (Exception ex)
{
errors.Add(ex.Message);
return false;
}
}
public int SoftCustomerCount()
{
using (var db = new crmContext())
{
decimal userid_999 = db.BAS_INNERUSER.FirstOrDefault(p => p.EID == 9999).PKID;
//非退款状态总数
return db.SOFT_CUSTOMER.Where(p => p.SALEUSERID == userid_999 && p.USERSTATUS != 4).Count();
}
}
public void ListOfSoftSalerCommit(decimal saleruserid, decimal opuserid, int count)
{
new Soft_Customer_DAL().ListOfSoftSalerCommit(saleruserid, opuserid, count);
}
public List getServiceMemo(string[] resid)
{
using (var db = new crmContext())
{
var serviceData = db.ORD_SERVICEMEMO.Where(p => resid.Contains(p.RESID)).Select(p => new MemoDto() { RESID = p.RESID, CTIME = p.CTIME });
return serviceData.ToList();
}
}
}
}