blob: d2776640a07f8cb96b99a17f85703b184d534b49 [file] [log] [blame]
/*
* Licensed to the Apache Software Foundation (ASF) under one
* or more contributor license agreements. See the NOTICE file
* distributed with this work for additional information
* regarding copyright ownership. The ASF licenses this file
* to you under the Apache License, Version 2.0 (the
* "License"); you may not use this file except in compliance
* with the License. You may obtain a copy of the License at
*
* http://www.apache.org/licenses/LICENSE-2.0
*
* Unless required by applicable law or agreed to in writing,
* software distributed under the License is distributed on an
* "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
* KIND, either express or implied. See the License for the
* specific language governing permissions and limitations
* under the License.
*/
import org.apache.ofbiz.base.util.UtilHttp
import org.apache.ofbiz.entity.util.EntityUtil
import org.apache.ofbiz.product.catalog.CatalogWorker
import org.apache.ofbiz.product.category.CategoryContentWrapper
import org.apache.ofbiz.product.category.CategoryWorker
import org.apache.ofbiz.product.product.ProductSearch
import org.apache.ofbiz.product.product.ProductSearchSession
searchCategoryId = parameters.searchCategoryId
if (!searchCategoryId) {
searchCategoryId = context.productCategoryId
}
if (searchCategoryId) {
currentSearchCategory = from("ProductCategory").where("productCategoryId", searchCategoryId).queryOne()
CategoryWorker.getRelatedCategories(request, "subCategoryList", searchCategoryId, false)
subCategoryList = request.getAttribute("subCategoryList")
CategoryContentWrapper categoryContentWrapper = new CategoryContentWrapper(currentSearchCategory, request)
context.currentSearchCategory = currentSearchCategory
context.categoryContentWrapper = categoryContentWrapper
}
productCategoryId = context.productCategoryId
if (productCategoryId) {
context.productCategory = from("ProductCategory").where("productCategoryId", productCategoryId).queryOne()
parameters.SEARCH_CATEGORY_ID = productCategoryId
}
if (!parameters.clearSearch || !"N".equals(parameters.clearSearch)) {
ProductSearchSession.searchClear(session)
}
ProductSearchSession.processSearchParameters(parameters, request)
prodCatalogId = CatalogWorker.getCurrentCatalogId(request)
result = ProductSearchSession.getProductSearchResult(request, delegator, prodCatalogId)
context.index = ProductSearchSession.getCategoryCostraintIndex(session)
searchConstraintList = ProductSearchSession.getProductSearchOptions(session).getConstraintList()
if (searchCategoryId) {
productCategoryRollups = from("ProductCategoryRollup").where("productCategoryId", searchCategoryId).filterByDate().queryList()
previousCategoryId = null
if (productCategoryRollups) {
for (categoryRollup in productCategoryRollups) {
categoryConstraint = new ProductSearch.CategoryConstraint(categoryRollup.parentProductCategoryId, true, false)
if (searchConstraintList.contains(categoryConstraint)) {
previousCategoryId = categoryRollup.parentProductCategoryId
context.previousCategoryId = previousCategoryId
}
}
}
}
context.showSubCats = true
if (subCategoryList) {
thisSubCategoryList = []
subCategoryList.each { subCategory ->
categoryCount = ProductSearchSession.getCountForProductCategory(subCategory.productCategoryId, session, delegator)
if (categoryCount > 0) {
subCategoryContentWrapper = new CategoryContentWrapper(subCategory, request)
thisSubCategoryList.add([productCategoryId: subCategory.productCategoryId, categoryName: subCategory.categoryName, count: categoryCount, categoryContentWrapper: subCategoryContentWrapper])
}
}
if (thisSubCategoryList) {
context.subCategoryList = thisSubCategoryList
} else {
context.showSubCats = false
}
} else {
context.showSubCats = false
}
context.showColors = true
colors = ProductSearchSession.listCountByFeatureForType("COLOR", session, delegator)
colorFeatureType = from("ProductFeatureType").where("productFeatureTypeId", "COLOR").queryOne()
if (colors) {
colors.each { color ->
featureConstraint = new ProductSearch.FeatureConstraint(color.productFeatureId, false)
if (searchConstraintList.contains(featureConstraint)) {
context.showColors=false
}
}
} else {
context.showColors = false
}
if (context.showColors) {
context.colors = colors
context.colorFeatureType = colorFeatureType
}
availablePriceRangeList = [[low: "0", high: "10"], [low: "10", high: "20"], [low: "20", high: "30"], [low: "30", high: "40"], [low: "40", high: "50"], [low: "50", high: "60"], [low: "60", high: "70"], [low: "70", high: "80"], [low: "80", high: "90"], [low: "90", high: "100"]]
priceRangeList = []
context.showPriceRange = true
availablePriceRangeList.each { priceRange ->
priceRangeConstraint = new ProductSearch.ListPriceRangeConstraint(new BigDecimal(priceRange.low), new BigDecimal(priceRange.high), UtilHttp.getCurrencyUom(request))
if (searchConstraintList.contains(priceRangeConstraint)) {
context.showPriceRange = false
} else {
priceRangeCount = ProductSearchSession.getCountForListPriceRange(new BigDecimal(priceRange.low), new BigDecimal(priceRange.high), session, delegator)
if (priceRangeCount != 0) {
priceRangeList.add([low: priceRange.low, high: priceRange.high, count: priceRangeCount])
}
}
}
if (!priceRangeList) {
context.showPriceRange = false
}
if (context.showPriceRange) {
context.priceRangeList = priceRangeList
}
context.productIds = result.productIds
context.viewIndex = result.viewIndex
context.viewSize = result.viewSize
context.listSize = result.listSize
context.lowIndex = result.lowIndex
context.highIndex = result.highIndex
context.paging = result.paging
context.previousViewSize = result.previousViewSize
context.searchConstraintStrings = result.searchConstraintStrings