private ProductBagModel GetData(ProductCommandDescriptor descriptor)
        {
            IQueryable <Litium.Domain.Entities.ProductCatalog.Product> products = null;
            var bagModel = new ProductBagModel();

            if (descriptor is CategoryCommandDescriptor)
            {
                products             = GetDataByCategory(descriptor);
                bagModel.TypeRequest = RequestType.Category;
            }

            if (descriptor is ProductSetCommandDescriptor)
            {
                products = GetDataByProductSet(descriptor);
            }

            if (descriptor is SearchCommandDescriptor)
            {
                products             = GetDataByKeyWord((SearchCommandDescriptor)descriptor);
                bagModel.TypeRequest = RequestType.Search;
            }

            if (descriptor is BrandCommandDescriptor)
            {
                products             = FilterByBrand(products, (BrandCommandDescriptor)descriptor);
                bagModel.TypeRequest = RequestType.Category;
            }

            IList <ProductModel> productModels = products.ToList().ConvertAll(ConvertFrom);

            productModels = productModels.ApplyCampaigns();
            productModels = productModels.OrderByDescending(x => x.IsInCampaign).ThenBy(x => x.CampaignPrice).ToList();
            productModels = productModels.ApplyPaging(descriptor.Page, descriptor.PageSize);


            bagModel.Id       = descriptor.EnityId;
            bagModel.Products = productModels;

            if (descriptor.EnityId != Guid.Empty)
            {
                bagModel.Name = Repository.Data.Get <Category>(descriptor.EnityId).Name;
            }

            return(bagModel);
        }
        private ProductBagModel GetData(ProductCommandDescriptor descriptor)
        {
            IQueryable<Litium.Domain.Entities.ProductCatalog.Product> products = null;
            var bagModel = new ProductBagModel();

            if (descriptor is CategoryCommandDescriptor)
            {
                products = GetDataByCategory(descriptor);
                bagModel.TypeRequest = RequestType.Category;
            }

            if (descriptor is ProductSetCommandDescriptor)
                products = GetDataByProductSet(descriptor);

            if (descriptor is SearchCommandDescriptor)
            {
                products = GetDataByKeyWord((SearchCommandDescriptor)descriptor);
                bagModel.TypeRequest = RequestType.Search;
            }

            if (descriptor is BrandCommandDescriptor)
            {
                products = FilterByBrand(products, (BrandCommandDescriptor)descriptor);
                bagModel.TypeRequest = RequestType.Category;
            }

            IList<ProductModel> productModels = products.ToList().ConvertAll(ConvertFrom);
            productModels = productModels.ApplyCampaigns();
            productModels = productModels.OrderByDescending(x => x.IsInCampaign).ThenBy(x => x.CampaignPrice).ToList();
            productModels = productModels.ApplyPaging(descriptor.Page, descriptor.PageSize);

            bagModel.Id = descriptor.EnityId;
            bagModel.Products = productModels;

            if (descriptor.EnityId != Guid.Empty)
                bagModel.Name = Repository.Data.Get<Category>(descriptor.EnityId).Name;

            return bagModel;
        }