/// <summary> /// 取得带拨打电话列表 /// </summary> /// <returns></returns> //public static List<ViewMemberLeadToCall> GetMemberToCallList(this Member item, DateTime? startdate = null, DateTime? enddate = null) //{ // var lcs = CH.GetAllData<LeadCall>(lc =>lc.Member.Name==item.Name && lc.CompanyRelationship.ProjectID == item.ProjectID && lc.CallBackDate != null); // startdate = startdate == null ? new DateTime(1, 1, 1) : startdate; // enddate = enddate == null ? new DateTime(9999, 1, 1) : enddate.Value.AddDays(+1); // lcs = lcs.FindAll(l => l.CallBackDate >= startdate && l.CallBackDate <= enddate); // var list = new List<ViewMemberLeadToCall>(); // lcs.ForEach(l => // { // var nd = new ViewMemberLeadToCall() { LeadCall = l }; // list.Add(nd); // }); // return list; //} /// <summary> /// 员工业绩统计 /// </summary> /// <returns></returns> public static ViewMemberProgressAmount GetMemberProgress(this Member item, DateTime?startdate = null, DateTime?enddate = null) { startdate = startdate == null ? new DateTime(1, 1, 1) : startdate; enddate = enddate == null ? new DateTime(9999, 1, 1) : enddate.Value.AddDays(+1); decimal totaldeal = 0; decimal totalcheckin = 0; decimal dealin = 0; decimal checkin = 0; decimal dealtarget = 0; decimal checkintarget = 0; decimal nextdealtarget = 0; decimal nextcheckintarget = 0; var deals = CH.GetAllData <Deal>(d => d.Sales == item.Name && d.CompanyRelationship.ProjectID == item.ProjectID); deals.ForEach(d => { totalcheckin += d.Income; totaldeal += d.Payment; if (d.SignDate >= startdate && d.SignDate <= enddate) { checkin += d.Income; dealin += d.Payment; } }); var ts = CH.GetAllData <TargetOfWeek>(t => t.Member == item.Name && t.ProjectID == item.ProjectID).FindAll(t => (t.StartDate > startdate && t.StartDate < enddate) | (t.EndDate > startdate && t.EndDate < enddate)); dealtarget += ts.Sum(t => t.Deal); checkintarget += ts.Sum(t => t.CheckIn); var nextweekend = enddate.Value.AddDays(7); var nextts = CH.GetAllData <TargetOfWeek>(t => t.Member == item.Name && t.ProjectID == item.ProjectID).FindAll(t => (t.StartDate > enddate && t.EndDate < nextweekend)); nextdealtarget += ts.Sum(t => t.Deal); nextcheckintarget += ts.Sum(t => t.CheckIn); var result = new ViewMemberProgressAmount() { TotalCheckIn = totalcheckin, TotalDealIn = totaldeal, CheckIn = checkin, DealIn = dealin, CheckInTarget = checkintarget, Member = item, DealInTarget = dealtarget, NextCheckInTarget = nextcheckintarget, NextDealInTarget = nextdealtarget, CheckInPercentage = checkintarget == 0 ? 100 : (int)(checkin * 100 / checkintarget), DealInPercentage = dealtarget == 0 ? 100 : (int)(dealin * 100 / dealtarget) }; return(result); }
public static List <ViewProjectMemberProgressAmount> GetMemberProgressList(List <int> selectedprojects, bool?isActivated, DateTime?startdate, DateTime?enddate) { startdate = startdate == null ? new DateTime(1, 1, 1) : startdate; enddate = enddate == null ? new DateTime(9999, 1, 1) : startdate; if (selectedprojects == null) { selectedprojects = BLL.CRM_Logical.GetUserInvolveProject().Select(p => p.ID).ToList(); } var list = new List <ViewProjectMemberProgressAmount>(); var totaldeals = from d in CH.DB.Deals where selectedprojects.Any(sp => sp == d.ProjectID) select d; var deals = from d in totaldeals where d.SignDate >= startdate && d.SignDate <= enddate select d; var totaltargetofmonths = from t in CH.DB.TargetOfMonthForMembers where selectedprojects.Any(sp => sp == t.ProjectID) select t; var targetofmonths = from t in totaltargetofmonths where (t.StartDate >= startdate && t.StartDate <= enddate) || (t.StartDate >= startdate && t.StartDate <= enddate) select t; var projects = from p in CH.DB.Projects where selectedprojects.Any(sp => sp == p.ID) && p.EndDate >= startdate && p.EndDate <= enddate select p; foreach (var p in projects.ToList()) { ViewProjectMemberProgressAmount pm = new ViewProjectMemberProgressAmount(); pm.Project = p; var tms = from m in p.Members where p.IsActived == true select m; var memlist = new List <ViewMemberProgressAmount>(); foreach (var m in tms) { ViewMemberProgressAmount v = new ViewMemberProgressAmount(); v.Member = m; var projectdeals = from d in deals where d.Sales == m.Name && d.ProjectID == p.ID select d; var projecttargets = from t in targetofmonths where t.MemberID == m.ID && t.ProjectID == p.ID select t; var projecttotaldeals = from d in totaldeals where d.Sales == m.Name && d.ProjectID == p.ID select d; var projecttotaltargets = from t in totaltargetofmonths where t.MemberID == m.ID && t.ProjectID == p.ID select t; if (projectdeals.Count() > 0) { v.CheckIn = projectdeals.Sum(d => d.Income); v.DealIn = projectdeals.Sum(d => d.Payment); } if (projecttargets.Count() > 0) { v.CheckInTarget = projecttargets.Sum(t => t.CheckIn); v.DealInTarget = projecttargets.Sum(t => t.Deal); } if (projecttotaldeals.Count() > 0) { v.TotalCheckIn = projecttotaldeals.Sum(d => d.Income); v.TotalDealIn = projecttotaldeals.Sum(d => d.Payment); } if (projecttotaltargets.Count() > 0) { v.TotalDealinTarget = projecttotaltargets.Sum(t => t.Deal); } memlist.Add(v); } pm.ViewMemberProgressAmounts = memlist; list.Add(pm); } return(list); }