Untitled
unknown
plain_text
a year ago
2.7 kB
8
Indexable
package de.evobus.on.oncommerce.search.product.rest;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.http.HttpStatus;
import org.springframework.http.ResponseEntity;
import org.springframework.security.core.annotation.AuthenticationPrincipal;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import lombok.AllArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import de.evobus.on.core.rest.OsivRestController;
import de.evobus.on.oncommerce.commerce.models.SortDirection;
import de.evobus.on.oncommerce.core.constant.ApiConstants;
import de.evobus.on.oncommerce.core.data.ProductSearchResultDTO;
import de.evobus.on.oncommerce.model.enums.CartType;
import de.evobus.on.oncommerce.search.product.service.ProductSearchService;
import de.evobus.on.portal.account.persistence.Account;
import de.evobus.on.portal.role.persistence.Role.RoleName;
import static de.evobus.on.oncommerce.core.constant.ApiConstants.DEFAULT_CART_TYPE;
import static java.lang.Boolean.TRUE;
@Slf4j
@OsivRestController
@RequestMapping(ApiConstants.PRODUCT_SEARCH_API_PATH)
@AllArgsConstructor(onConstructor = @__(@Autowired))
public class ProductSearchController {
private final ProductSearchService productSearchService;
@GetMapping
public ResponseEntity<ProductSearchResultDTO> getProductSearchResult(@AuthenticationPrincipal final Account account,
@RequestParam(defaultValue = "") final String categoryKey, @RequestParam(defaultValue = "") final String vin,
@RequestParam(defaultValue = "true") final Boolean hideEmptyCategories, @RequestParam(defaultValue = "") final String sortBy,
@RequestParam final String language, @RequestParam(defaultValue = "0") final Long pageNo,
@RequestParam(defaultValue = "9") final Long limitPerPage,
@RequestParam(value = "cartType", defaultValue = DEFAULT_CART_TYPE) final CartType cartType,
@RequestParam(defaultValue = "false") final boolean catalogueContext) {
if (account.hasRole(RoleName.ON_COMMERCE_SHOP_R)) {
final ProductSearchResultDTO productSearchResultDTO = productSearchService.searchProducts(account, categoryKey, vin,
TRUE.equals(hideEmptyCategories), SortDirection.valueOf(sortBy, SortDirection.MATERIAL_NUMBER_ASCENDING), language,
pageNo, limitPerPage, cartType, catalogueContext);
return ResponseEntity.ok(productSearchResultDTO);
}
return ResponseEntity.status(HttpStatus.FORBIDDEN).build();
}
}
Editor is loading...
Leave a Comment