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