using System; using System.Collections.Generic; using System.Linq; using WX.CRM.BLL.Util; using WX.CRM.Common; using WX.CRM.IBLL.Quality; using WX.CRM.Model.Entity; using WX.CRM.Common; using WX.CRM.BLL.Base; using WX.CRM.BLL.Util; using WX.CRM.Model.MAP; using WX.CRM.BLL.Application.UserComBox; namespace WX.CRM.BLL.Quality { public class QC_CUSTOMERCOMPLAIN_BL : IQC_CUSTOMERCOMPLAIN, IQC_CUSTOMERCOMPLAIN_Q { public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.QC_CUSTOMERCOMPLAIN model) { try { using (crmContext db = new crmContext()) { var customerModel = db.RES_CUSTOMER.FirstOrDefault(m => m.RESID == model.map_RESID); if (customerModel == null) { errors.Add("请输入正确的客户ID!"); return false; } //if (!string.IsNullOrWhiteSpace(model.map_TRADECODE)) //{ // //var gjs_CustomerModel = db.GJS_CUSTOMER.FirstOrDefault(m => m.TRADECODE == model.TRADECODE); // //if(gjs_CustomerModel==null) // //{ // // errors.Add("请输入正确的交易商代码"); // // return false; // //} //} //model.PKID = new SEQUENCES_BL().Seq_base_get(); db.QC_CUSTOMERCOMPLAIN.Add(model); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public bool Update(ref ValidationErrors errors, QC_CUSTOMERCOMPLAIN model) { try { using (var db = new crmContext()) { QC_CUSTOMERCOMPLAIN entry = db.QC_CUSTOMERCOMPLAIN.FirstOrDefault(m => m.PKID == model.PKID); if (entry == null) { errors.Add("数据不存在!"); return false; } entry.STATUS = model.STATUS; entry.UTIME = model.UTIME; entry.COMPLAINLEVEL = model.COMPLAINLEVEL; db.SaveChanges(); return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public bool Delete(ref ValidationErrors errors, decimal id) { try { using (var db = new crmContext()) { QC_CUSTOMERCOMPLAIN entry = db.QC_CUSTOMERCOMPLAIN.FirstOrDefault(m => m.PKID == id); if (entry == null) { errors.Add("数据已经被删除!"); return false; } db.QC_CUSTOMERCOMPLAIN.Remove(entry); return db.SaveChanges().GetResult(); } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public QC_CUSTOMERCOMPLAIN GetModel_CustomerComplain(decimal id) { using (var db = new crmContext()) { return db.QC_CUSTOMERCOMPLAIN.FirstOrDefault(m => m.PKID == id); } } public QC_CUSTOMERCOMPLAIN GetModel(decimal recordId) { using (var db = new crmContext()) { return db.QC_CUSTOMERCOMPLAIN.FirstOrDefault(m => m.RECORDID == recordId); } } public bool Check(ref ValidationErrors errors, WX.CRM.Model.Entity.QC_CUSTOMERCOMPLAIN model) { try { using (var db = new crmContext()) { QC_CUSTOMERCOMPLAIN entry = db.QC_CUSTOMERCOMPLAIN.FirstOrDefault(m => m.PKID == model.PKID); if (entry == null) { errors.Add("找不到数据!"); return false; } if (entry.STATUS == 1) { errors.Add("数据已经是已审核状态!"); return false; } entry.UTIME = model.UTIME; entry.COMPLAINLEVEL = model.COMPLAINLEVEL; entry.STATUS = model.STATUS; db.SaveChanges(); return true; } } catch (Exception ex) { errors.Add(ex.Message); return false; } } public List GetList_CustomerComplain(ref Pager pg, string resid, string fromType, string level, decimal? status, DateTime? stime, DateTime? etime, QueryUserComboDto usercomboDto) { using (var db = new crmContext()) { var data = db.QC_CUSTOMERCOMPLAIN.AsQueryable(); if (!string.IsNullOrWhiteSpace(resid)) data = data.Where(m => m.RESID.Contains(resid)); if (!string.IsNullOrWhiteSpace(fromType)) data = data.Where(m => m.FROMTYPE == fromType); if (!string.IsNullOrWhiteSpace(level)) data = data.Where(m => m.COMPLAINLEVEL.Contains(level)); if (stime.HasValue) data = data.Where(m => m.CTIME >= stime); if (etime.HasValue) data = data.Where(m => m.CTIME < etime); if (status.HasValue) data = data.Where(m => m.STATUS == status); if (usercomboDto.userId.HasValue) data = data.Where(m => m.SALESID == usercomboDto.userId); else if (!string.IsNullOrEmpty(usercomboDto.deptId)) { var depts = OperationUtil.ConvertToDecimal(usercomboDto.deptId.Split(',')); List ALLdeptIDS = new List(); List ALLgidS = new List(); UserServices userservices = new UserServices(); foreach (var item in depts) { List deptIDS = new List(); List gidS = new List(); userservices.GetAllDeptIDOrGidByDeptId(item, ref deptIDS, ref gidS);//获取所有的组别和gid ALLdeptIDS.AddRange(deptIDS); ALLgidS.AddRange(gidS); } data = (from a in data 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 (usercomboDto.companyId.HasValue) { data = (from a in data join b in db.BAS_INNERUSERGROUP on a.SALESID equals b.INNERUSERID join g in db.BAS_INNERGROUP on b.GID equals g.GID join m in db.BAS_SALESDEPARTMENT on g.SALEDEPTID equals m.SALEDEPTID where m.COMPANYID == usercomboDto.companyId.Value select a); } //else if (!string.IsNullOrWhiteSpace(groupId)) //{ // decimal[] _groupIds = OperationUtil.ConvertToDecimal(groupId.Split(',')); // var userids = db.BAS_INNERUSERGROUP.Where(m => _groupIds.Contains(m.GID.Value)).Select(m => m.INNERUSERID); // data = data.Where(m => userids.Contains(m.SALESID)); //} var dataList = (from a in data join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID join d in db.QC_COMPLAINTDICT on a.COMPLAINLEVEL equals d.DICTVALUE select new QC_CUSTOMERCOMPLAIN_Extend() { customerComplain = a, CUSTOMERNAME = b.CNAME, FROMTYPENAME = a.FROMTYPE, LEVELNAME = d.DICTDESC }); #region 排序 if (pg.order == "asc") { switch (pg.sort) { case "RESID": dataList = dataList.OrderBy(m => m.customerComplain.RESID); break; case "LEVELNAME": dataList = dataList.OrderBy(m => m.customerComplain.COMPLAINLEVEL); break; case "FROMTYPENAME": dataList = dataList.OrderBy(m => m.customerComplain.RESID); break; default: dataList = dataList.OrderBy(m => m.customerComplain.CTIME); break; } } else { switch (pg.sort) { case "RESID": dataList = dataList.OrderByDescending(m => m.customerComplain.RESID); break; case "LEVELNAME": dataList = dataList.OrderByDescending(m => m.customerComplain.COMPLAINLEVEL); break; case "FROMTYPENAME": dataList = dataList.OrderByDescending(m => m.customerComplain.RESID); break; default: dataList = dataList.OrderByDescending(m => m.customerComplain.CTIME); break; } } #endregion PagerUtil.SetPager(ref dataList, ref pg); return dataList.ToList(); } } public List GetList_CustomerComplainByResIds(List resIds) { using (var db = new crmContext()) { var data = db.QC_CUSTOMERCOMPLAIN.Where(m => resIds.Contains(m.RESID)).AsQueryable(); var list = (from a in data //join b in db.BAS_SUBCOMTYPE on a.COMPLAINLEVEL equals b.SUBTYPECODE join b in db.QC_COMPLAINTDICT on a.COMPLAINLEVEL equals b.DICTVALUE select new QC_CUSTOMERCOMPLAIN_Extend() { customerComplain = a, LEVELNAME = b.DICTDESC //LEVELNAME = b.DICTCODE }); return list.OrderByDescending(m => m.customerComplain.CTIME).ToList(); } } public List GetList_CustomerComplainByCustomerId(ref Pager pg, string customerId) { using (var db = new crmContext()) { var data = db.QC_CUSTOMERCOMPLAIN.AsQueryable(); var dataList = (from a in data join e in db.RES_CUSTOMER on a.RESID equals e.RESID join b in db.RES_CUSTOMERDETAIL on a.RESID equals b.RESID join c in db.BAS_SUBCOMTYPE on a.FROMTYPE equals c.SUBTYPECODE //join d in db.BAS_SUBCOMTYPE on a.COMPLAINLEVEL equals d.SUBTYPECODE join d in db.QC_COMPLAINTDICT on a.COMPLAINLEVEL equals d.DICTVALUE where e.CUSTOMERID == customerId select new QC_CUSTOMERCOMPLAIN_Extend() { customerComplain = a, CUSTOMERNAME = b.CNAME, FROMTYPENAME = c.SUBTYPENAME, LEVELNAME = d.DICTDESC }); #region 排序 if (pg.order == "asc") { switch (pg.sort) { case "RESID": dataList = dataList.OrderBy(m => m.customerComplain.RESID); break; case "LEVELNAME": dataList = dataList.OrderBy(m => m.customerComplain.COMPLAINLEVEL); break; case "FROMTYPENAME": dataList = dataList.OrderBy(m => m.customerComplain.RESID); break; default: dataList = dataList.OrderBy(m => m.customerComplain.CTIME); break; } } else { switch (pg.sort) { case "RESID": dataList = dataList.OrderByDescending(m => m.customerComplain.RESID); break; case "LEVELNAME": dataList = dataList.OrderByDescending(m => m.customerComplain.COMPLAINLEVEL); break; case "FROMTYPENAME": dataList = dataList.OrderByDescending(m => m.customerComplain.RESID); break; default: dataList = dataList.OrderByDescending(m => m.customerComplain.CTIME); break; } } #endregion PagerUtil.SetPager(ref dataList, ref pg); return dataList.ToList(); } } } }