public HttpResponseMessage GetClientInfoList(EnumBRECCType status, string clientName, int page, int pageSize, EnumBrokerRECClientSearchOrderBy orderByAll = EnumBrokerRECClientSearchOrderBy.OrderById, bool isDes = true)
        {
            var condition = new BrokerRECClientSearchCondition
            {
                OrderBy =orderByAll ,
                Page = page,
                PageCount = pageSize,
                Status = status,
                Clientname = clientName,
                IsDescending =isDes 
                //Brokername = clientName
            };

            var list = _brokerRecClientService.GetBrokerRECClientsByCondition(condition).Select(a => new
            {
                a.Id,
                a.Clientname,
                a.ClientInfo.Phone,
                a.Brokername,
                a.Uptime

            }).ToList();

            var totalCont = _brokerRecClientService.GetBrokerRECClientCount(condition);

            return PageHelper.toJson(new { list1 = list, condition1 = condition, totalCont1 = totalCont });
        }
 public HttpResponseMessage RecommendList([FromBody]BrokerRECClientModel brokerRecClientModel)
 {
     if (brokerRecClientModel == null) throw new ArgumentNullException("brokerRecClientModel");
     var condition = new BrokerRECClientSearchCondition
     {
         OrderBy = EnumBrokerRECClientSearchOrderBy.OrderById,
         Status = brokerRecClientModel.Status
     };
     return PageHelper.toJson(_brokerRecClientService.GetBrokerRECClientsByCondition(condition).ToList());
 }
        public HttpResponseMessage BrokerList(EnumBRECCType status, string brokername, int page, int pageSize, EnumBrokerRECClientSearchOrderBy orderByAll = EnumBrokerRECClientSearchOrderBy .OrderByTime, bool isDes = true)
        {

            var condition = new BrokerRECClientSearchCondition
            {
                OrderBy = orderByAll,
                Page = page,
                PageCount = pageSize,
                Status = status,
                Clientname = brokername,
                IsDescending =isDes 

            };
            var list = _brokerRecClientService.GetBrokerRECClientsByCondition(condition).Select(a => new
            {
                a.Id,
                a.Brokername,
                a.Brokerlevel,
                a.ClientInfo.Phone,
                a.Projectname,
                a.Addtime,

                a.Clientname,
                SecretaryName = a.SecretaryId.Brokername,
                a.SecretaryPhone,
                Waiter = a.WriterId.Brokername,
                a.WriterPhone,
                a.Uptime

            }).ToList().Select(b => new
            {
                b.Id,
                b.Brokername,
                b.Brokerlevel,
                b.Phone,
                b.Projectname,
                Addtime = b.Addtime.ToString("yyy-MM-dd"),

                b.Clientname,
                SecretaryName = b.Brokername,
                b.SecretaryPhone,
                Waiter = b.Brokername,
                b.WriterPhone,
                Uptime = b.Uptime.ToString("yyy-MM-dd")
            });

            var totalCont = _brokerRecClientService.GetBrokerRECClientCount(condition);

            return PageHelper.toJson(new { list1 = list, condition1 = condition, totalCont1 = totalCont });
        }
        public HttpResponseMessage GetStatusByUserId(int page)
        {
          //============================================chenda start===========================================
            var user = (UserBase)_workContext.CurrentUser;
            var broker = _brokerService.GetBrokerByUserId(user.Id);
            
            if (broker != null) 
            {
                var condition = new BrokerLeadClientSearchCondition
                {
                    OrderBy = EnumBrokerLeadClientSearchOrderBy.OrderByTime,
                    Page = page,
                    PageCount = 10,
                    Brokers = broker
                };
                var conditon2 = new BrokerRECClientSearchCondition
                {
                    OrderBy =EnumBrokerRECClientSearchOrderBy.OrderByTime,
                    Page = page,
                    PageCount = 10,
                    Brokers = broker
                };
                var model = _brokerLeadClientService.GetBrokerLeadClientsByCondition(condition).ToList();
                if (model == null)
                {
                    return PageHelper.toJson(PageHelper.ReturnValue(false, "当前经纪人没有带过客户"));
                }
                var model2 = _brokerRecClientService.GetBrokerRECClientsByCondition(conditon2).ToList();
                if (model2 == null)
                {
                    return PageHelper.toJson(PageHelper.ReturnValue(false, "当前经纪人没有推荐过客户"));
                }

                List<ReturnCustomModel> listModel = new List<ReturnCustomModel>();

                // 带客
               var  listdk= model.Select(p => new
                {
                    StrType = "带客",
                    Clientname = p.ClientInfo.Clientname,
                    Housetype = p.ClientInfo.Housetype,
                    Houses = p.ClientInfo.Houses,
                    Phone = p.Broker.Phone,
                    Status = p.Status,
                    Id = p.Id,
                }).ToList().ToList();

                foreach(var p in listdk)
                {
                    listModel.Add(new ReturnCustomModel{ Clientname=p.Clientname, Houses=p.Houses, Housetype=p.Housetype, Id=p.Id.ToString(), Phone=p.Phone, Status=p.Status.ToString(), StrType=p.StrType});
                }

                //推荐
                var  listtj= model2.Select(c => new
                {
                        StrType = "推荐",
                        Clientname = c.ClientInfo.Clientname,
                        Housetype = c.ClientInfo.Housetype,
                        Houses = c.ClientInfo.Houses,
                        Phone = c.Broker.Phone,
                        Status = c.Status,
                        Id = c.Id,
                        Uptime = c.Uptime.ToString(CultureInfo.InvariantCulture)
                }).ToList();

                foreach (var p in listtj)
                {
                    listModel.Add(new ReturnCustomModel { Clientname = p.Clientname, Houses = p.Houses, Housetype = p.Housetype, Id = p.Id.ToString(), Phone = p.Phone, Status = p.Status.ToString(), StrType = p.StrType});
                }

                int totalCount = _brokerLeadClientService.GetBrokerLeadClientCount(condition) + _brokerRecClientService.GetBrokerRECClientCount(conditon2);
                return PageHelper.toJson(new { List = listModel, totalCount = totalCount });       
            
            }
            return PageHelper.toJson(PageHelper.ReturnValue(false, "获取用户失败,请检查是否登陆"));
            //================================================================chenda end============================================================================
        }
        public HttpResponseMessage ClientInfo(int id)
        {
            var condition = new BrokerRECClientSearchCondition
            {
                Id = id
            };


            var model = _brokerRecClientService.GetBrokerRECClientsByCondition(condition).ToList();
            try
            {
                var clientModel = model.Select(p => new
                {

                    Clientname = p.ClientInfo.Clientname,
                    Phone = p.ClientInfo.Phone,
                    Housetype = p.ClientInfo.Housetype,
                    Houses = p.ClientInfo.Houses,
                    Note = p.ClientInfo.Note,
                    Uptime = p.Uptime.ToString(CultureInfo.InvariantCulture)
                });
                var brokerModel = model.Select(p => new
                {

                    Brokername = p.Brokername,
                    Brokerlevel = p.Brokerlevel,
                    Phone = p.Broker.Phone,
                    Qq = p.Broker.Qq,
                    RegTime = p.Broker.Regtime.ToString(CultureInfo.InvariantCulture),
                    Projectname = p.Projectname
                });
                return PageHelper.toJson(new { clientModel, brokerModel });
            }
            catch { }
            return PageHelper.toJson(PageHelper.ReturnValue(false, "数据验证错误!"));
        }
		public IQueryable<BrokerRECClientEntity> GetBrokerRECClientsByCondition(BrokerRECClientSearchCondition condition)
		{
			var query = _brokerrecclientRepository.Table;
			try
			{
				if (condition.AddtimeBegin.HasValue)
                {
                    query = query.Where(q => q.Addtime>= condition.AddtimeBegin.Value);
                }
                if (condition.AddtimeEnd.HasValue)
                {
                    query = query.Where(q => q.Addtime < condition.AddtimeEnd.Value);
                }
				if (condition.UptimeBegin.HasValue)
                {
                    query = query.Where(q => q.Uptime>= condition.UptimeBegin.Value);
                }
                if (condition.UptimeEnd.HasValue)
                {
                    query = query.Where(q => q.Uptime < condition.UptimeEnd.Value);
                }
                if (!string.IsNullOrEmpty(condition.Phone))
                {
                    query = query.Where(q => q.Phone.Contains(condition.Phone));
                }
                if (!string.IsNullOrEmpty(condition.Qq))
                {
                    query = query.Where(q => q.Qq.Contains(condition.Qq));
                }
				if (!string.IsNullOrEmpty(condition.Clientname))
                {
                    query = query.Where(q => q.Clientname.Contains(condition.Clientname));
                }
				if (!string.IsNullOrEmpty(condition.Brokername))
                {
                    query = query.Where(q => q.Brokername.Contains(condition.Brokername));
                }
				if (!string.IsNullOrEmpty(condition.Brokerlevel))
                {
                    query = query.Where(q => q.Brokerlevel.Contains(condition.Brokerlevel));
                }
				if (!string.IsNullOrEmpty(condition.Projectname))
                {
                    query = query.Where(q => q.Projectname.Contains(condition.Projectname));
                }
				if (!string.IsNullOrEmpty(condition.SecretaryPhone))
                {
                    query = query.Where(q => q.SecretaryPhone.Contains(condition.SecretaryPhone));
                }
				if (!string.IsNullOrEmpty(condition.WriterPhone))
                {
                    query = query.Where(q => q.WriterPhone.Contains(condition.WriterPhone));
                }
				if (condition.Ids != null && condition.Ids.Any())
                {
                    query = query.Where(q => condition.Ids.Contains(q.Id));
                }
				if (condition.Brokers != null )
                {
                    query = query.Where(q =>q.Broker.Id== condition.Brokers.Id);
                }
				if (condition.ClientInfos != null && condition.ClientInfos.Any())
                {
                    query = query.Where(q => condition.ClientInfos.Contains(q.ClientInfo));
                }
				if (condition.Addusers != null && condition.Addusers.Any())
                {
                    query = query.Where(q => condition.Addusers.Contains(q.Adduser));
                }
				if (condition.Upusers != null && condition.Upusers.Any())
                {
                    query = query.Where(q => condition.Upusers.Contains(q.Upuser));
                }
				if (condition.Projectids != null && condition.Projectids.Any())
                {
                    query = query.Where(q => condition.Projectids.Contains(q.Projectid));
                }
				if (condition.SecretaryIDs != null && condition.SecretaryIDs.Any())
                {
                    query = query.Where(q => condition.SecretaryIDs.Contains(q.SecretaryId));
                }
                if (condition.Id >0)
                {
                    query = query.Where(q => condition.Id ==q.Id);
                }
				if (condition.WriterIDs != null && condition.WriterIDs.Any())
                {
                    query = query.Where(q => condition.WriterIDs.Contains(q.WriterId));
                }
				if(condition.OrderBy.HasValue)
				{
					switch (condition.OrderBy.Value)
                    {
						case EnumBrokerRECClientSearchOrderBy.OrderById:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Id) : query.OrderBy(q => q.Id);
							break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByTime:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Uptime) : query.OrderBy(q => q.Uptime);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByBrokername :
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Brokername) : query.OrderBy(q => q.Brokername);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByBrokerlevel:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Brokerlevel) : query.OrderBy(q => q.Brokerlevel);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByClientname:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Clientname) : query.OrderBy(q => q.Clientname);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByPhone:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Phone) : query.OrderBy(q => q.Phone);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByProjectname:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Projectname) : query.OrderBy(q => q.Projectname);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByAddtime:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Addtime) : query.OrderBy(q => q.Addtime);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderBySecretaryName:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.SecretaryId.Brokername) : query.OrderBy(q => q.SecretaryId.Brokername);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByWaiter:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.WriterId.Brokername) : query.OrderBy(q => q.WriterId.Brokername);
                            break;
                        case EnumBrokerRECClientSearchOrderBy.OrderByUptime:
                            query = condition.IsDescending ? query.OrderByDescending(q => q.Uptime) : query.OrderBy(q => q.Uptime);
                            break;
                    
                      
                    }
					
				}
				else
				{
					query = query.OrderBy(q=>q.Id);
				}

                if (condition.Status.HasValue)
                {
                    query = query.Where(c => c.Status == condition.Status);
                }

                if (condition.DelFlag.HasValue)
                {
                    query = query.Where(c => c.DelFlag == condition.DelFlag);
                }

				if (condition.Page.HasValue && condition.PageCount.HasValue)
                {
                    query = query.Skip((condition.Page.Value - 1)*condition.PageCount.Value).Take(condition.PageCount.Value);
                }

				return query;
			}
			catch(Exception e)
			{
				_log.Error(e,"数据库操作出错");
                return null;
			}
		}
		public int GetBrokerRECClientCount (BrokerRECClientSearchCondition condition)
		{
			var query = _brokerrecclientRepository.Table;
			try
			{
				if (condition.AddtimeBegin.HasValue)
                {
                    query = query.Where(q => q.Addtime>= condition.AddtimeBegin.Value);
                }
                if (condition.AddtimeEnd.HasValue)
                {
                    query = query.Where(q => q.Addtime < condition.AddtimeEnd.Value);
                }
				if (condition.UptimeBegin.HasValue)
                {
                    query = query.Where(q => q.Uptime>= condition.UptimeBegin.Value);
                }
                if (condition.UptimeEnd.HasValue)
                {
                    query = query.Where(q => q.Uptime < condition.UptimeEnd.Value);
                }
                if (!string.IsNullOrEmpty(condition.Qq))
                {
                    query = query.Where(q => q.Qq.Contains(condition.Qq));
                }
				if (!string.IsNullOrEmpty(condition.Clientname))
                {
                    query = query.Where(q => q.Clientname.Contains(condition.Clientname));
                }
                if (!string.IsNullOrEmpty(condition.Phone))
                {
                    query = query.Where(q => q.Phone.Contains(condition.Phone));
                }
				if (!string.IsNullOrEmpty(condition.Brokername))
                {
                    query = query.Where(q => q.Brokername.Contains(condition.Brokername));
                }
				if (!string.IsNullOrEmpty(condition.Brokerlevel))
                {
                    query = query.Where(q => q.Brokerlevel.Contains(condition.Brokerlevel));
                }
				if (!string.IsNullOrEmpty(condition.Projectname))
                {
                    query = query.Where(q => q.Projectname.Contains(condition.Projectname));
                }
				if (!string.IsNullOrEmpty(condition.SecretaryPhone))
                {
                    query = query.Where(q => q.SecretaryPhone.Contains(condition.SecretaryPhone));
                }
				if (!string.IsNullOrEmpty(condition.WriterPhone))
                {
                    query = query.Where(q => q.WriterPhone.Contains(condition.WriterPhone));
                }
				if (condition.Ids != null && condition.Ids.Any())
                {
                    query = query.Where(q => condition.Ids.Contains(q.Id));
                }
				if (condition.Brokers != null )
                {
                    query = query.Where(q =>q.Broker.Id== condition.Brokers.Id);
                }
				if (condition.ClientInfos != null && condition.ClientInfos.Any())
                {
                    query = query.Where(q => condition.ClientInfos.Contains(q.ClientInfo));
                }
				if (condition.Addusers != null && condition.Addusers.Any())
                {
                    query = query.Where(q => condition.Addusers.Contains(q.Adduser));
                }
				if (condition.Upusers != null && condition.Upusers.Any())
                {
                    query = query.Where(q => condition.Upusers.Contains(q.Upuser));
                }
				if (condition.Projectids != null && condition.Projectids.Any())
                {
                    query = query.Where(q => condition.Projectids.Contains(q.Projectid));
                }
				if (condition.SecretaryIDs != null && condition.SecretaryIDs.Any())
                {
                    query = query.Where(q => condition.SecretaryIDs.Contains(q.SecretaryId));
                }
				if (condition.WriterIDs != null && condition.WriterIDs.Any())
                {
                    query = query.Where(q => condition.WriterIDs.Contains(q.WriterId));
                }
                if (condition.DelFlag != null)
                {
                    query = query.Where(q => q.DelFlag == condition.DelFlag);
                }
                if (condition.Status != null)
                {
                    query = query.Where(q => q.Status == condition.Status);
                }

				return query.Count();
			}
			catch(Exception e)
			{
				_log.Error(e,"数据库操作出错");
                return -1;
			}
		}