use of com.salesmanager.shop.model.catalog.product.attribute.PersistableProductOption in project shopizer by shopizer-ecommerce.
the class ShopProductRESTController method createProductOption.
@RequestMapping(value = "/private/{store}/product/option", method = RequestMethod.POST)
@ResponseStatus(HttpStatus.CREATED)
@ResponseBody
public PersistableProductOption createProductOption(@PathVariable final String store, @Valid @RequestBody PersistableProductOption option, HttpServletRequest request, HttpServletResponse response) throws Exception {
try {
MerchantStore merchantStore = (MerchantStore) request.getAttribute(Constants.MERCHANT_STORE);
if (merchantStore != null) {
if (!merchantStore.getCode().equals(store)) {
merchantStore = null;
}
}
if (merchantStore == null) {
merchantStore = merchantStoreService.getByCode(store);
}
if (merchantStore == null) {
LOGGER.error("Merchant store is null for code " + store);
response.sendError(503, "Merchant store is null for code " + store);
return null;
}
PersistableProductOptionPopulator populator = new PersistableProductOptionPopulator();
populator.setLanguageService(languageService);
com.salesmanager.core.model.catalog.product.attribute.ProductOption opt = new com.salesmanager.core.model.catalog.product.attribute.ProductOption();
populator.populate(option, opt, merchantStore, merchantStore.getDefaultLanguage());
productOptionService.save(opt);
option.setId(opt.getId());
return option;
} catch (Exception e) {
LOGGER.error("Error while saving product option", e);
try {
response.sendError(503, "Error while saving product option" + e.getMessage());
} catch (Exception ignore) {
}
return null;
}
}
use of com.salesmanager.shop.model.catalog.product.attribute.PersistableProductOption in project shopizer by shopizer-ecommerce.
the class ProductManagementAPIIntegrationTest method createOption.
/**
* Creates a new ProductOption
*
* @throws Exception
*/
@Test
@Ignore
public void createOption() throws Exception {
final ProductOptionDescription description = new ProductOptionDescription();
description.setLanguage("en");
description.setName("Color");
final List<ProductOptionDescription> descriptions = new ArrayList<>();
descriptions.add(description);
final PersistableProductOption option = new PersistableProductOption();
option.setOrder(1);
option.setCode("color");
option.setType(ProductOptionType.Select.name());
option.setDescriptions(descriptions);
final ObjectWriter writer = new ObjectMapper().writer().withDefaultPrettyPrinter();
final String json = writer.writeValueAsString(option);
System.out.println(json);
/**
* { "descriptions" : [ { "name" : "Color", "description" : null,
* "friendlyUrl" : null, "keyWords" : null, "highlights" : null,
* "metaDescription" : null, "title" : null, "language" : "en", "id" : 0
* } ], "type" : SELECT, "order" : 1, "code" : "color", "id" : 0 }
*/
restTemplate = new RestTemplate();
final HttpEntity<String> entity = new HttpEntity<>(json, getHeader());
final ResponseEntity response = restTemplate.postForEntity("http://localhost:8080/sm-shop/services/private/DEFAULT/product/option", entity, PersistableProductOption.class);
final PersistableProductOption opt = (PersistableProductOption) response.getBody();
System.out.println("New option ID : " + opt.getId());
}
use of com.salesmanager.shop.model.catalog.product.attribute.PersistableProductOption in project shopizer by shopizer-ecommerce.
the class ProductV2ManagementAPIIntegrationTest method createProductWithCategory.
@Test
public void createProductWithCategory() throws Exception {
/**
* Create a category for product association
*/
final PersistableCategory newCategory = new PersistableCategory();
newCategory.setCode("test-catv2");
newCategory.setSortOrder(1);
newCategory.setVisible(true);
newCategory.setDepth(4);
final Category parent = new Category();
newCategory.setParent(parent);
final CategoryDescription description = new CategoryDescription();
description.setLanguage("en");
description.setName("test-catv2");
description.setFriendlyUrl("test-catv2");
description.setTitle("test-catv2");
final List<CategoryDescription> descriptions = new ArrayList<>();
descriptions.add(description);
newCategory.setDescriptions(descriptions);
final HttpEntity<PersistableCategory> categoryEntity = new HttpEntity<>(newCategory, getHeader());
final ResponseEntity<PersistableCategory> categoryResponse = testRestTemplate.postForEntity("/api/v1/private/category?store=" + Constants.DEFAULT_STORE, categoryEntity, PersistableCategory.class);
final PersistableCategory cat = categoryResponse.getBody();
assertTrue(categoryResponse.getStatusCode() == CREATED);
assertNotNull(cat.getId());
final PersistableProduct product = new PersistableProduct();
final ArrayList<Category> categories = new ArrayList<>();
categories.add(cat);
product.setCategories(categories);
ProductSpecification specifications = new ProductSpecification();
specifications.setManufacturer(com.salesmanager.core.model.catalog.product.manufacturer.Manufacturer.DEFAULT_MANUFACTURER);
product.setProductSpecifications(specifications);
product.setPrice(BigDecimal.TEN);
product.setSku("123");
final HttpEntity<PersistableProduct> entity = new HttpEntity<>(product, getHeader());
final ResponseEntity<PersistableProduct> response = testRestTemplate.postForEntity("/api/v2/private/product/definition?store=" + Constants.DEFAULT_STORE, entity, PersistableProduct.class);
assertTrue(response.getStatusCode() == CREATED);
// create options
PersistableProductOption color = new PersistableProductOption();
color.setCode("color");
ProductOptionDescription colorEn = new ProductOptionDescription();
colorEn.setName("Color");
colorEn.setLanguage("en");
color.getDescriptions().add(colorEn);
final HttpEntity<PersistableProductOption> colorEntity = new HttpEntity<>(color, getHeader());
final ResponseEntity<PersistableProductOption> colorResponse = testRestTemplate.postForEntity("/api/v1/private/product/option?store=" + Constants.DEFAULT_STORE, colorEntity, PersistableProductOption.class);
assertTrue(colorResponse.getStatusCode() == CREATED);
System.out.println(colorResponse.getBody().getId());
PersistableProductOption size = new PersistableProductOption();
size.setCode("size");
ProductOptionDescription sizeEn = new ProductOptionDescription();
sizeEn.setName("Size");
sizeEn.setLanguage("en");
size.getDescriptions().add(sizeEn);
final HttpEntity<PersistableProductOption> sizeEntity = new HttpEntity<>(size, getHeader());
final ResponseEntity<PersistableProductOption> sizeResponse = testRestTemplate.postForEntity("/api/v1/private/product/option?store=" + Constants.DEFAULT_STORE, sizeEntity, PersistableProductOption.class);
assertTrue(sizeResponse.getStatusCode() == CREATED);
System.out.println(colorResponse.getBody().getId());
// opions values
PersistableProductOptionValue white = new PersistableProductOptionValue();
white.setCode("white");
ProductOptionValueDescription whiteEn = new ProductOptionValueDescription();
whiteEn.setName("White");
whiteEn.setLanguage("en");
white.getDescriptions().add(whiteEn);
final HttpEntity<PersistableProductOptionValue> whiteEntity = new HttpEntity<>(white, getHeader());
final ResponseEntity<PersistableProductOptionValue> whiteResponse = testRestTemplate.postForEntity("/api/v1/private/product/option?store=" + Constants.DEFAULT_STORE, whiteEntity, PersistableProductOptionValue.class);
assertTrue(whiteResponse.getStatusCode() == CREATED);
System.out.println(whiteResponse.getBody().getId());
PersistableProductOptionValue medium = new PersistableProductOptionValue();
medium.setCode("medium");
ProductOptionValueDescription mediumEn = new ProductOptionValueDescription();
mediumEn.setName("Medium");
mediumEn.setLanguage("en");
white.getDescriptions().add(mediumEn);
// create variants - todo
PersistableProductVariation whiteVariant = new PersistableProductVariation();
// - todo
PersistableProductVariation mediumVariant = new PersistableProductVariation();
// toto
// create instances
}
Aggregations