public int GetChannelCount(ChannelSearchCondition condition)
        {
            var query = _channelRepository.Table;

            try
            {
                if (condition.Status.HasValue)
                {
                    query = query.Where(q => q.Status == condition.Status.Value);
                }
                if (!string.IsNullOrEmpty(condition.Name))
                {
                    query = query.Where(q => q.Name.Contains(condition.Name));
                }
                if (condition.Ids != null && condition.Ids.Any())
                {
                    query = query.Where(q => condition.Ids.Contains(q.Id));
                }
                return(query.Count());
            }
            catch (Exception e)
            {
                _log.Error(e, "数据库操作出错");
                return(-1);
            }
        }
        public HttpResponseMessage Edit(ChannelModel model)
        {
            Regex reg = new Regex(@"^[^ %@#!*~&',;=?$\x22]+$");
            var   m   = reg.IsMatch(model.Name);

            if (!m)
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "存在非法字符!")));
            }
            else
            {
                var channel = _channelService.GetChannelById(model.Id);
                if (channel.Name == model.Name)
                {
                    var newParent = _channelService.GetChannelById(model.ParentId);
                    channel.Name    = model.Name;
                    channel.Status  = model.Status;
                    channel.UpdUser = _workContent.CurrentUser.Id;
                    channel.UpdTime = DateTime.Now;
                    channel.Parent  = newParent;
                    if (_channelService.Update(channel) != null)
                    {
                        return(PageHelper.toJson(PageHelper.ReturnValue(true, "数据更新成功!")));
                    }
                    else
                    {
                        return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据更新失败!")));
                    }
                }
                else
                {
                    var channelCon = new ChannelSearchCondition
                    {
                        Name = model.Name
                    };
                    var totalCount = _channelService.GetChannelCount(channelCon);
                    if (totalCount > 0)
                    {
                        return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据已存在!")));
                    }
                    else
                    {
                        var newParent = _channelService.GetChannelById(model.ParentId);
                        channel.Name    = model.Name;
                        channel.Status  = model.Status;
                        channel.UpdUser = _workContent.CurrentUser.Id;
                        channel.UpdTime = DateTime.Now;
                        channel.Parent  = newParent;
                        if (_channelService.Update(channel) != null)
                        {
                            return(PageHelper.toJson(PageHelper.ReturnValue(true, "数据更新成功!")));
                        }
                        else
                        {
                            return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据更新失败!")));
                        }
                    }
                }
            }
        }
        public IQueryable <ChannelEntity> GetChannelsByCondition(ChannelSearchCondition condition)
        {
            var query = _channelRepository.Table;

            try
            {
                if (condition.Status.HasValue)
                {
                    query = query.Where(q => q.Status == condition.Status.Value);
                }
                if (!string.IsNullOrEmpty(condition.Name))
                {
                    query = query.Where(q => q.Name.Contains(condition.Name));
                }
                if (condition.Ids != null && condition.Ids.Any())
                {
                    query = query.Where(q => condition.Ids.Contains(q.Id));
                }
                if (condition.OrderBy.HasValue)
                {
                    switch (condition.OrderBy.Value)
                    {
                    case EnumChannelSearchOrderBy.OrderById:
                        query = condition.IsDescending?query.OrderByDescending(q => q.Id):query.OrderBy(q => q.Id);
                        break;

                    case EnumChannelSearchOrderBy.OrderByName:
                        query = condition.IsDescending?query.OrderByDescending(q => q.Name):query.OrderBy(q => q.Name);
                        break;

                    case EnumChannelSearchOrderBy.OrderByStatus:
                        query = condition.IsDescending?query.OrderByDescending(q => q.Status):query.OrderBy(q => q.Status);
                        break;
                    }
                }
                else
                {
                    query = query.OrderBy(q => q.Id);
                }

                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 HttpResponseMessage Index(string name = null, int page = 1, int pageSize = 10)
        {
            var channelCon = new ChannelSearchCondition
            {
                Name      = name,
                Page      = page,
                PageCount = pageSize
            };
            var channelList = _channelService.GetChannelsByCondition(channelCon).Select(a => new ChannelModel
            {
                Id     = a.Id,
                Name   = a.Name,
                Status = a.Status,
            }).ToList();
            var totalCount = _channelService.GetChannelCount(channelCon);

            return(PageHelper.toJson(new{ List = channelList, Condition = channelCon, TotalCount = totalCount }));
        }
        public HttpResponseMessage Create(ChannelModel model)
        {
            Regex reg = new Regex(@"^[^ %@#!*~&',;=?$\x22]+$");
            var   m   = reg.IsMatch(model.Name);

            if (!m)
            {
                return(PageHelper.toJson(PageHelper.ReturnValue(false, "存在非法字符!")));
            }
            else
            {
                var channelCon = new ChannelSearchCondition
                {
                    Name = model.Name
                };
                var totalCount = _channelService.GetChannelCount(channelCon);
                if (totalCount > 0)
                {
                    return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据已存在!")));
                }
                else
                {
                    var newParent = model.ParentId == 0 ? null : _channelService.GetChannelById(model.ParentId);
                    var channel   = new ChannelEntity
                    {
                        Name    = model.Name,
                        Status  = model.Status,
                        Parent  = newParent,
                        Adduser = _workContent.CurrentUser.Id,
                        Addtime = DateTime.Now,
                        UpdUser = _workContent.CurrentUser.Id,
                        UpdTime = DateTime.Now
                    };
                    if (_channelService.Create(channel) != null)
                    {
                        return(PageHelper.toJson(PageHelper.ReturnValue(true, "数据添加成功!")));
                    }
                    else
                    {
                        return(PageHelper.toJson(PageHelper.ReturnValue(false, "数据添加失败!")));
                    }
                }
            }
        }
        public HttpResponseMessage GetCount(
            int page                         = 1,
            int pageCount                    = 10,
            bool isDescending                = false,
            string name                      = "",
            EnumChannelStatus?status         = null,
            EnumChannelSearchOrderBy orderBy = EnumChannelSearchOrderBy.OrderById)
        {
            var condition = new ChannelSearchCondition
            {
                IsDescending = isDescending,
                Page         = page,
                PageCount    = pageCount,
                Name         = name,
                Status       = status,
                OrderBy      = orderBy
            };
            var count = _ChannelService.GetChannelCount(condition);

            return(PageHelper.toJson(new{ TotalCount = count, Condition = condition }));
        }
        public List <ChannelModel> GetByCondition(
            int page                         = 1,
            int pageCount                    = 10,
            bool isDescending                = false,
            string name                      = "",
            EnumChannelStatus?status         = null,
            EnumChannelSearchOrderBy orderBy = EnumChannelSearchOrderBy.OrderById)
        {
            var condition = new ChannelSearchCondition
            {
                IsDescending = isDescending,
                Page         = page,
                PageCount    = pageCount,
                Name         = name,
                Status       = status,
                OrderBy      = orderBy
            };
            var model = _ChannelService.GetChannelsByCondition(condition).Select(c => new ChannelModel
            {
                Id = c.Id,

                Name = c.Name,

                Status = c.Status,

//				Parent = c.Parent,

//				Adduser = c.Adduser,
//
//				Addtime = c.Addtime,
//
//				Upduser = c.Upduser,
//
//				Updtime = c.Updtime,
            }).ToList();

            return(model);
        }