Untitled

 avatar
unknown
plain_text
9 months ago
2.7 kB
5
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