using System; using System.Collections.Generic; using System.Linq; using WX.CRM.Common; using WX.CRM.IBLL.Base; namespace WX.CRM.BLL.Base { public class BAS_GROUPLEADER_BL : IBAS_GROUPLEADER, IBAS_GROUPLEADER_Q { private WX.CRM.Model.Entity.crmContext db = new WX.CRM.Model.Entity.crmContext(); #region 新增 /// /// 新增数据 /// /// /// public bool Create(ref ValidationErrors errors, WX.CRM.Model.Entity.BAS_GROUPLEADER model) { try { var u = db.BAS_INNERUSER.FirstOrDefault(p => p.EID == model.map_EID); if (u == null) { errors.Add("工号输入不对!"); return false; } model.INNERUSERID = u.PKID; if (model.LEADERTYPE == 10) { var entry1 = db.BAS_GROUPLEADER.FirstOrDefault(p => p.INNERGROUPID == model.INNERGROUPID && p.LEADERTYPE == 10); if (entry1 != null) { errors.Add("这组已经有第一组长了!"); return false; } } var entry = db.BAS_GROUPLEADER.FirstOrDefault(p => p.INNERGROUPID == model.INNERGROUPID && p.INNERUSERID == model.INNERUSERID); if (entry != null) { errors.Add("该员工已经是这个组的负责人!"); return false; } db.BAS_GROUPLEADER.Add(model); db.SaveChanges(); return true; } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 删除 public bool Delete(ref ValidationErrors errors, decimal inneruserId, decimal groupId) { try { db.BAS_GROUPLEADER.Remove(db.BAS_GROUPLEADER.FirstOrDefault(p => p.INNERUSERID == inneruserId && p.INNERGROUPID == groupId)); db.SaveChanges(); return true; } catch (Exception ex) { errors.Add(ex.Message); return false; } } #endregion #region 获取数据列表 public List GetList(string gName, string eID) { IQueryable query = db.BAS_GROUPLEADER; IQueryable userQuery = db.BAS_INNERUSER; IQueryable groupQuery = db.BAS_INNERGROUP; IQueryable saldeptment = db.BAS_SALESDEPARTMENT; if (!string.IsNullOrEmpty(eID)) { decimal ieID = Convert.ToDecimal(eID); userQuery = userQuery.Where(m => m.EID.Equals(ieID)); } if (!string.IsNullOrEmpty(gName)) { groupQuery = groupQuery.Where(m => m.GNAME.Contains(gName)); } List modeList = new List(); //modeList = (from m in query // join a in userQuery on m.INNERUSERID equals a.PKID // join b in groupQuery on m.INNERGROUPID equals b.GID // select new WX.CRM.Model.Entity.BAS_GROUPLEADER() //无法构造实体复杂类,待处理!?? // { // CTIME = m.CTIME, // gName = b.GNAME, // INNERGROUPID = m.INNERGROUPID, // INNERUSERID = m.INNERUSERID, // uName = a.UNAME, // EID = a.EID, // CREATEUSER = m.CREATEUSER, // UTIME = m.UTIME, // UPDATEUSER = m.UPDATEUSER // }).OrderBy(m => m.INNERGROUPID).ToList(); List modeList2 = new List(); modeList2 = ((from m in query join a in userQuery on m.INNERUSERID equals a.PKID join b in groupQuery on m.INNERGROUPID equals b.GID select new tem() { CTIME = m.CTIME, gName = b.GNAME, INNERGROUPID = m.INNERGROUPID, INNERUSERID = m.INNERUSERID, uName = a.UNAME, EID = a.EID, LEARDERTYPE = m.LEADERTYPE }).Union(from m in query join a in userQuery on m.INNERUSERID equals a.PKID join b in saldeptment on m.INNERGROUPID equals b.SALEDEPTID select new tem() { CTIME = m.CTIME, gName = b.DEPTNAME, INNERGROUPID = m.INNERGROUPID, INNERUSERID = m.INNERUSERID, uName = a.UNAME, EID = a.EID, LEARDERTYPE = m.LEADERTYPE }).Union(from m in query join a in userQuery on m.INNERUSERID equals a.PKID where m.INNERGROUPID == 0 select new tem() { CTIME = m.CTIME, gName = null, INNERGROUPID = m.INNERGROUPID, INNERUSERID = m.INNERUSERID, uName = a.UNAME, EID = a.EID, LEARDERTYPE = m.LEADERTYPE })).OrderByDescending(m => m.CTIME).ToList(); foreach (var m in modeList2) { modeList.Add(new WX.CRM.Model.Entity.BAS_GROUPLEADER() { CTIME = m.CTIME, gName = m.INNERGROUPID == 0 ? "全部" : m.gName, INNERGROUPID = m.INNERGROUPID, INNERUSERID = m.INNERUSERID, uName = m.uName, EID = m.EID, LEADERTYPE = m.LEARDERTYPE }); } return modeList; } #endregion public class tem { public DateTime? CTIME { get; set; } public string gName { get; set; } public decimal INNERGROUPID { get; set; } public decimal INNERUSERID { get; set; } public string uName { get; set; } public decimal EID { get; set; } public decimal? LEARDERTYPE { get; set; } } public List GetListGroupLeaderByUserId(decimal UserId) { return db.BAS_GROUPLEADER.Where(p => p.INNERUSERID.Equals(UserId)).ToList(); } public WX.CRM.Model.Entity.BAS_GROUPLEADER GetInfo(decimal gid, decimal userid) { return db.BAS_GROUPLEADER.FirstOrDefault(p => p.INNERGROUPID == gid && p.INNERUSERID == userid); } public List GetList() { return db.BAS_GROUPLEADER.ToList(); } } }