TG.WXCRM.V4/BLL/Base/BAS_GROUPLEADER_BL.cs

180 lines
7.9 KiB
C#

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
/// <summary>
/// 新增数据
/// </summary>
/// <param name="model"></param>
/// <returns></returns>
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<WX.CRM.Model.Entity.BAS_GROUPLEADER> GetList(string gName, string eID)
{
IQueryable<WX.CRM.Model.Entity.BAS_GROUPLEADER> query = db.BAS_GROUPLEADER;
IQueryable<WX.CRM.Model.Entity.BAS_INNERUSER> userQuery = db.BAS_INNERUSER;
IQueryable<WX.CRM.Model.Entity.BAS_INNERGROUP> groupQuery = db.BAS_INNERGROUP;
IQueryable<WX.CRM.Model.Entity.BAS_SALESDEPARTMENT> 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<WX.CRM.Model.Entity.BAS_GROUPLEADER> modeList = new List<WX.CRM.Model.Entity.BAS_GROUPLEADER>();
//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<tem> modeList2 = new List<tem>();
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<WX.CRM.Model.Entity.BAS_GROUPLEADER> 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<WX.CRM.Model.Entity.BAS_GROUPLEADER> GetList()
{
return db.BAS_GROUPLEADER.ToList();
}
}
}