@Override public void updateItemQuantity(Order order, OrderItemRequestDTO orderItemRequestDTO) throws ItemNotFoundException, PricingException { OrderItem orderItem = null; for (DiscreteOrderItem doi : order.getDiscreteOrderItems()) { if (doi.getId().equals(orderItemRequestDTO.getOrderItemId())) { orderItem = doi; } } orderItem.setQuantity(orderItemRequestDTO.getQuantity()); updateItemQuantity(order, orderItem, true); }
@Test(groups = { "createDiscreteOrderItem" }, dataProvider = "basicDiscreteOrderItem", dataProviderClass = OrderItemDataProvider.class, dependsOnGroups = { "createOrder", "createSku" }) @Rollback(false) @Transactional public void createDiscreteOrderItem(DiscreteOrderItem orderItem) { Sku si = skuDao.readFirstSku(); assert si.getId() != null; orderItem.setSku(si); assert orderItem.getId() == null; orderItem = (DiscreteOrderItem) orderItemDao.save(orderItem); assert orderItem.getId() != null; orderItemId = orderItem.getId(); }
orderDiscreteOrderItemCounts.put(item.getId(), item.getQuantity());
order = orderService.removeItem(order.getId(), item.getId(), false);
itemRequest = new OrderItemRequestDTO().setQuantity(4).setOrderItemId(doi.getId()); try { orderService.updateItemQuantity(orderId, itemRequest, true);
@Transactional @PreAuthorize("hasAnyRole('PERMISSION_ALL_ORDER', 'ROLE_USER')") @RequestMapping(value = "/{orderId}/items/{itemId}", method = RequestMethod.GET) @ApiOperation( value = "Get details of an item", notes = "Gets a description of a specified item in a given order", response = DiscreteOrderItemDto.class) @ApiResponses(value = { @ApiResponse(code = 201, message = "Successful retrieval of item details", response = DiscreteOrderItemDto.class), @ApiResponse(code = 404, message = "The specified order or item does not exist") }) public DiscreteOrderItemDto getOneItemFromOrder( @ApiIgnore @AuthenticationPrincipal UserDetails userDetails, @ApiParam(value = "ID of a specific order", required = true) @PathVariable(value = "orderId") Long orderId, @ApiParam(value = "ID of a specific item in the order", required = true) @PathVariable(value = "itemId") Long itemId, @RequestParam(value = "embed", defaultValue = "false") Boolean embed, @RequestParam(value = "link", defaultValue = "true") Boolean link ) { return orderServiceProxy.getProperCart(userDetails, orderId).orElseThrow(ResourceNotFoundException::new) .getDiscreteOrderItems().stream() .filter(x -> Objects.equals(x.getId(), itemId)).findAny() .map(discreteOrderItem -> discreteOrderItemConverter.createDto(discreteOrderItem, embed, link)) .orElseThrow(() -> new ResourceNotFoundException("Cannot find the item in card with ID: " + itemId)); }
@Transactional(rollbackFor = UpdateCartException.class) public void updateItemQuantityInOrder ( Integer quantity, UserDetails userDetails, Long orderId, Long itemId) throws UpdateCartException, RemoveFromCartException { // if (quantity <= 0) { // return new ResponseEntity<>(HttpStatus.CONFLICT); // } final Order cart = getProperCart(userDetails, orderId) .orElseThrow(ResourceNotFoundException::new); if (cart.getDiscreteOrderItems().stream().filter(x -> Objects.equals(x.getId(), itemId)).count() != 1) { throw new ResourceNotFoundException("Cannot find an item with ID: " + itemId); } final OrderItemRequestDTO orderItemRequestDto = new OrderItemRequestDTO(); orderItemRequestDto.setQuantity(quantity); orderItemRequestDto.setOrderItemId(itemId); orderService.updateItemQuantity(orderId, orderItemRequestDto, true); }
@Transactional @PreAuthorize("hasAnyRole('PERMISSION_ALL_ORDER', 'ROLE_USER')") @RequestMapping(value = "/{orderId}/items/{itemId}", method = RequestMethod.DELETE) @ApiOperation( value = "Delete an item", notes = "Removes an item from a specified order", response = Void.class) @ApiResponses(value = { @ApiResponse(code = 201, message = "Successful removal of the specified item"), @ApiResponse(code = 404, message = "The specified order does not exist") }) public void removeItemFromOrder( @ApiIgnore @AuthenticationPrincipal UserDetails userDetails, @ApiParam(value = "ID of a specific order", required = true) @PathVariable(value = "orderId") Long orderId, @ApiParam(value = "ID of a specific item in the order", required = true) @PathVariable(value = "itemId") Long itemId) { final Order cart = orderServiceProxy.getProperCart(userDetails, orderId).orElseThrow(ResourceNotFoundException::new); if (cart.getDiscreteOrderItems().stream().filter(x -> Objects.equals(x.getId(), itemId)).count() != 1) { throw new ResourceNotFoundException("Cannot find an item with ID: " + itemId); } Try.of(() -> orderService.save(orderService.removeItem(cart.getId(), itemId, true), true)) .getOrElseThrow(() -> new ResourceNotFoundException("Error while removing item with ID: " + itemId)); }
ServletUriComponentsBuilder.fromCurrentRequest() .path("/{id}") .buildAndExpand(addedDiscreteOrderItem.getId()) .toUri() ).body(discreteOrderItemConverter.createDto(addedDiscreteOrderItem, false, true));
addedItemId = newDiscreteItemsIds.get(0).getId();
orderItemDto.add(linkTo(methodOn(OrderController.class).getOneItemFromOrder(null, discreteOrderItem.getOrder().getId(), discreteOrderItem.getId(), null, null)).withSelfRel());