TG.WXCRM.V4/BLL/Soft/SOFT_CUSTOMER_BL.cs

257 lines
11 KiB
C#

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
/// <summary>
/// 获取实体
/// </summary>
/// <param name="id"></param>
/// <returns></returns>
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
/// <summary>
/// 获取软件客户列表
/// </summary>
/// <param name="pager"></param>
/// <param name="softName">用户名</param>
/// <param name="saleId"></param>
/// <param name="resId">客户ID</param>
/// <param name="userStatus">用户状态</param>
/// <param name="optime1">权限开通日期1</param>
/// <param name="optime2">权限开通日期2</param>
/// <param name="endtime1">权限截止日期1</param>
/// <param name="endtime2">权限截止日期2</param>
/// <param name="groupId">组别</param>
/// <param name="inneruserId">员工</param>
/// <returns></returns>
public List<WX.CRM.Model.Entity.SOFT_CUSTOMER_Extend> 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<SOFT_CUSTOMER_Extend> 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<WX.CRM.Model.Entity.SOFT_CUSTOMER_Extend>(ref query, ref pager);
return query.ToList();
}
}
#endregion
#region
public List<WX.CRM.Model.Entity.SOFT_CUSTOMER> 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<WX.CRM.Model.Entity.SOFT_CUSTOMER> addList, List<WX.CRM.Model.Entity.SOFT_CUSTOMER> 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<WX.CRM.Model.Entity.SOFT_CUSTOMER>(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);
}
/// <summary>
/// 批量修改
/// </summary>
/// <param name="customer_lists"></param>
public bool UpdateList(ref ValidationErrors errors, List<SOFT_CUSTOMER> 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<WX.CRM.Model.Entity.SOFT_CUSTOMER>(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<MemoDto> 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();
}
}
}
}