public ActionResult GetMediaList(MediaLibrary_QueryModel queryModel)
        {
            MediaServices ms    = new MediaServices();
            int           count = 0;

            try
            {
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.OK,
                    Data = new
                    {
                        rows = ms.GetMediaList(queryModel, out count),
                        total = count
                    }
                }));
            }
            catch (Exception ex)
            {
                NBCMSLoggerManager.Error(ex.Message);
                NBCMSLoggerManager.Error(ex.Source);
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.Exception,
                    Data = ex.Message
                }));
            }
        }
        public ActionResult SearchMediaLibrary(MediaLibrary_QueryModel queryModel)
        {
            var ms = new MediaServices();

            try
            {
                //List<MediaGroupBy_Model> groupByList = new List<MediaGroupBy_Model>();
                int count;
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.OK,
                    Data = new
                    {
                        list = ms.GetMediaLibraryList(queryModel, out count),
                        //groupByList = groupByList,
                        count
                    }
                }));
            }
            catch (Exception ex)
            {
                NBCMSLoggerManager.Error(ex.Message);
                NBCMSLoggerManager.Error(ex.Source);
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.Exception,
                    Data = ex.Message
                }));
            }
        }
        /// <summary>
        /// 获取图像列表,供给ProductConfigureation页面AttachSKU用...
        /// Change:新增按照图像分辨率进行分组的信息,以适应新的需求 2014年1月6日10:55:16
        /// </summary>
        /// <returns></returns>
        public ActionResult GetImageList(MediaLibrary_QueryModel model)
        {
            try
            {
                var count       = 0;
                var groupByList = new List <MediaGroupBy_Model>();
                //针对SKU页面做的单独处理,如果当前页面没有关联任何的HM#,则不要展示任何形象。
                if (model.ProductID >= 1)
                {
                    return(Json(new NBCMSResultJson
                    {
                        Status = StatusType.OK,
                        Data = new
                        {
                            List = new MediaServices().GetMediaLibraryListWithGroup(model, out count, out groupByList),
                            groupByList,
                            Count = count
                        }
                    }));
                }
                var tempL = new List <MediaLibrary_Model>();

                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.OK,
                    Data = new
                    {
                        List = tempL,
                        groupByList,
                        Count = count
                    }
                }));
            }
            catch (Exception ex)
            {
                NBCMSLoggerManager.Error(ex.Message);
                NBCMSLoggerManager.Error(ex.Source);
                NBCMSLoggerManager.Error(ex.StackTrace);
                return(Json(new NBCMSResultJson
                {
                    Status = StatusType.Exception,
                    Data = ex.Message
                }));
            }
        }
        /// <summary>
        /// 带有分组信息的图像列表。2014年4月25日10:29:26
        /// 由于发现在MediaLibrary页面返回去的分组信息带到800组,转化成JSON造成网路负担和前后台解析缓慢,所以就吧需要分组和不需要分组的反复分离开来。
        /// 实际上MediaLibrary不需要分组
        /// </summary>
        /// <param name="queryModel"></param>
        /// <param name="count"></param>
        /// <param name="groupByList"></param>
        /// <returns></returns>
        public List <MediaLibrary_Model> GetMediaLibraryListWithGroup(MediaLibrary_QueryModel queryModel, out int count, out List <MediaGroupBy_Model> groupByList)
        {
            var query = this.GetMediaList(queryModel, out count);

            //Load from memory.经过测试 ,如果不先toList(),还是会去数据库查询3次!之所以要AsEnumerable()是因为必须调用到Take()这个方法
            //但是这种预先全部preloading到memoery的方法,可能不适合MedialLibrary页面,for the performance考虑,可能要抽离出2个方法 2014年1月22日10:25:02
            var newQuery = query.AsEnumerable();

            count = newQuery.Count();                //第一次触发数据库查询(没有toList()情况下)

            groupByList = newQuery.GroupBy(gp => new //Group By in Memory
            {
                fileWidth  = gp.fileWidth,
                fileHeight = gp.fileHeight
            }).OrderBy(g => g.Key.fileWidth).Select(g => new MediaGroupBy_Model
            {
                fileWidth  = g.Key.fileWidth,
                fileHeight = g.Key.fileHeight
            }).ToList();//第二次触发查询(没有toList()情况下)

            return(newQuery.ToList());
        }
        /// <summary>
        /// 查询出所有图像,不需要分组,该方法提供给前端同步云端模块用 2014年4月14日17:45:13
        /// </summary>
        /// <param name="queryModel"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List <MediaLibrary_Model> GetMediaList(MediaLibrary_QueryModel queryModel, out int count)
        {
            using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())
            {
                var query = db.MediaLibrary.Include(m => m.SKU_Media_Relation).Where(d => d.CloudStatusID != 4);

                if (!String.IsNullOrEmpty(queryModel.HMNUM))
                {
                    query = query.Where(m => m.HMNUM.Contains(queryModel.HMNUM));
                }
                if (!string.IsNullOrEmpty(queryModel.SKUOrder))
                {
                    query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.SKU.Contains(queryModel.SKUOrder)));
                }
                if (queryModel.Format > 0)
                {
                    query = query.Where(m => m.MediaType == queryModel.Format);
                }
                if (queryModel.Status > 0)
                {
                    if (queryModel.Status == 1)//Attached to SKU
                    {
                        query = query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0));
                    }

                    if (queryModel.Status == 2)//unattach
                    {
                        query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0)));
                    }
                }

                if (queryModel.Channel > 0)
                {
                    query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.ChannelID == queryModel.Channel));
                }
                if (queryModel.Brand > 0)
                {
                    query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.BrandID == queryModel.Brand));
                }
                if (queryModel.IsExcludeSKU)
                {
                    query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.SKUID == queryModel.SKUID)));
                }
                if (queryModel.ProductID > 0)
                {
                    query = query.Where(m => m.CMS_StockKey.CMS_HMNUM.Any(r => r.ProductID == queryModel.ProductID));
                }
                if (queryModel.CloudStatusID > 0)
                {
                    query = query.Where(m => m.CloudStatusID == queryModel.CloudStatusID);
                }
                count = query.Count();

                return(query.OrderByDescending(m => m.MediaID)
                       .Skip((queryModel.page - 1) * queryModel.rows)
                       .Take(queryModel.rows).ToList().Select(c => new MediaLibrary_Model
                {
                    fileFormat = c.fileFormat,
                    fileHeight = c.fileHeight.HasValue ? c.fileHeight.Value : 0,
                    fileWidth = c.fileWidth.HasValue ? c.fileWidth.Value : 0,
                    fileSize = c.fileSize,
                    MediaID = c.MediaID,
                    Description = c.Description,
                    HMNUM = c.HMNUM,
                    ImgName = c.ImgName,
                    ProductID = c.ProductID,
                    MediaType = c.MediaType,
                    SerialNum = c.SerialNum,
                    strCreateOn = c.CreateOn.ToString("yyyy-MM-dd HH:mm:ss"),
                    CloudStatusID = c.CloudStatusID,
                    MediaCloudStatus = new MediaCloudStatus_Model {
                        CloudStatusId = c.MediaCloudStatus.CloudStatusId,
                        CloudStatusName = c.MediaCloudStatus.CloudStatusName
                    },
                    CMS_SKU = c.SKU_Media_Relation.Where(r => r.MediaID == c.MediaID)
                              .Select(s => new CMS_SKU_Model
                    {
                        ChannelName = s.CMS_SKU.Channel.ChannelName,
                        ProductName = s.CMS_SKU.ProductName,
                        SKU = s.CMS_SKU.SKU
                    }).ToList()
                }).ToList());
            }
        }
        /// <summary>
        /// Change:新增按照图像分辨率进行分组的信息,以适应新的需求 2014年1月6日10:55:16
        /// Change2:应David要求,去掉时间的筛选
        /// </summary>
        /// <param name="queryModel"></param>
        /// <param name="count"></param>
        /// <returns></returns>
        public List <MediaLibrary_Model> GetMediaLibraryList(MediaLibrary_QueryModel queryModel, out int count)
        {
            List <MediaLibrary_Model> list = new List <MediaLibrary_Model>();

            using (PermaisuriCMSEntities db = new PermaisuriCMSEntities())
            {
                var query = db.MediaLibrary.Include(m => m.SKU_Media_Relation).Where(d => d.MediaID > 0);

                if (!String.IsNullOrEmpty(queryModel.HMNUM))
                {
                    query = query.Where(m => m.HMNUM.Contains(queryModel.HMNUM));
                }
                if (!string.IsNullOrEmpty(queryModel.SKUOrder))
                {
                    query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.SKU.Contains(queryModel.SKUOrder)));
                }
                if (queryModel.Format > 0)
                {
                    query = query.Where(m => m.MediaType == queryModel.Format);
                }
                if (queryModel.Status > 0)
                {
                    if (queryModel.Status == 1)//Attached to SKU
                    {
                        query = query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0));
                    }

                    if (queryModel.Status == 2)//unattach
                    {
                        query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.MediaID > 0)));
                    }
                }

                if (queryModel.Channel > 0)
                {
                    query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.ChannelID == queryModel.Channel));
                }
                if (queryModel.Brand > 0)
                {
                    query = query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.BrandID == queryModel.Brand));
                }
                if (queryModel.IsExcludeSKU)
                {
                    //ChangeDate:2013年12月6日16:16:02 原来是根据SKUOrder来排除,但是这样子在批量复制(DupliatedProduct)情况下,一个
                    //渠道的SKUOrder选择了图片之后,会影响到其他渠道的SKUOrder的图片关联,故而应该用SKUID来关联排除。
                    //query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.CMS_SKU.SKU == queryModel.SKUOrder)));
                    query = query.Except(query.Where(m => m.SKU_Media_Relation.Any(r => r.SKUID == queryModel.SKUID)));
                }
                if (queryModel.ProductID > 0)
                {
                    //query = query.Where(m => m.ProductID == queryModel.ProductID); changed 2014年4月11日10:40:02
                    query = query.Where(m => m.CMS_StockKey.CMS_HMNUM.Any(r => r.ProductID == queryModel.ProductID));
                }
                if (queryModel.CloudStatusID > 0)
                {
                    query = query.Where(m => m.CloudStatusID == queryModel.CloudStatusID);
                }

                count = query.Count();//第一次触发数据库查询(没有toList()情况下)

                query = query.OrderByDescending(m => m.MediaID).Skip((queryModel.page - 1) * queryModel.rows).Take(queryModel.rows);

                foreach (MediaLibrary c in query)////第三次触发查询(没有toList()情况下)
                {
                    list.Add(new MediaLibrary_Model
                    {
                        fileFormat    = c.fileFormat,
                        fileHeight    = c.fileHeight.HasValue ? c.fileHeight.Value : 0,
                        fileWidth     = c.fileWidth.HasValue ? c.fileWidth.Value : 0,
                        fileSize      = c.fileSize,
                        MediaID       = c.MediaID,
                        Description   = c.Description,
                        HMNUM         = c.HMNUM,
                        ImgName       = c.ImgName,
                        ProductID     = c.ProductID,
                        MediaType     = c.MediaType,
                        SerialNum     = c.SerialNum,
                        strCreateOn   = c.CreateOn.ToString("yyyy-MM-dd HH:mm:ss"),
                        CloudStatusID = c.CloudStatusID,
                        CMS_SKU       = c.SKU_Media_Relation.Where(r => r.MediaID == c.MediaID)
                                        .Select(s => new CMS_SKU_Model
                        {
                            ChannelName = s.CMS_SKU.Channel.ChannelName,
                            ProductName = s.CMS_SKU.ProductName,
                            SKU         = s.CMS_SKU.SKU
                        }).ToList()
                    });
                }

                return(list);
            }
        }