@Override public void delete(@Valid Order entity) throws EntityDoesNotExistException { Integer updatedRows = 0; this.dao.begin(); updatedRows += this.dao.deleteEntityEntityById(ORDER_TABLE_NAME, entity.getId()); updatedRows += this.dao.detachChildren(entity.getId()); updatedRows += this.dao.deleteEntityAndChildrenById(entity.getId()); this.dao.commit(); if (updatedRows <= 0) { throw new EntityDoesNotExistException("No rows was updated when trying to delete order"); } }
@POST @Path("{orderId}/payment") public Object internalPayment(@PathParam("orderId") UUID orderId, MultivaluedMap<String, String> data) { try { Order order = orderStore.get().findById(orderId); Map<PaymentData, Object> paymentData = Maps.newHashMap(); paymentData.put(BasePaymentData.CURRENCY, order.getCurrency()); paymentData.put(BasePaymentData.ORDER_ID, order.getId()); paymentData.put(BasePaymentData.CUSTOMER, order.getCustomer()); if (order.getBillingAddress() != null) { paymentData.put(BasePaymentData.BILLING_ADDRESS, order.getBillingAddress()); } paymentData.put(BasePaymentData.DELIVERY_ADDRESS, order.getDeliveryAddress()); paymentData.put(BasePaymentData.ORDER, order); if (data.containsKey("cardNumber")) { paymentData.put(CreditCardPaymentData.CARD_NUMBER, data.getFirst("cardNumber")); paymentData.put(CreditCardPaymentData.HOLDER_NAME, data.getFirst("holderName")); paymentData.put(CreditCardPaymentData.EXPIRATION_MONTH, data.getFirst("expiryMonth")); paymentData.put(CreditCardPaymentData.EXPIRATION_YEAR, data.getFirst("expiryYear")); paymentData.put(CreditCardPaymentData.VERIFICATION_CODE, data.getFirst("cvv")); } PaymentRequest paymentRequest = paymentProcessor.requestPayment(order, paymentData); CheckoutResponse response = new CheckoutResponse(order, paymentRequest); return generateCheckoutResponse(response); } catch (Exception e) { return renderError(e.getMessage()); } }
@Override public synchronized InvoiceNumber getOrCreateInvoiceNumber(Order order) throws InvoicingException { this.dao.begin(); InvoiceNumber existing = this.dao.findForOrderId(order.getId()); if (existing != null) { this.dao.commit(); return existing; } DateTime dateTime = new DateTime(); int weekOfYear = dateTime.getWeekOfWeekyear(); int year = dateTime.getYearOfCentury(); String prefix = String.format("%02d%02d", year, weekOfYear); Integer previousCountForPrefix = this.dao.getCountForPrefix(prefix); String number = prefix + String.format("%03d", ++previousCountForPrefix); InvoiceNumber generated = new InvoiceNumber(order.getId(), number, new Date()); this.dao.createInvoiceNumber(generated); this.dao.commit(); return generated; }
@Override public Order create(@Valid Order order) throws EntityAlreadyExistsException, InvalidEntityException { this.dao.begin(); String slug = String.format("%08d", lastOrderNumber() + 1); order.setSlug(slug); order.setId(UUID.randomUUID()); this.dao.createEntity(order, ORDER_TABLE_NAME, getTenant()); this.dao.createOrder(order); for (OrderItem item : order.getOrderItems()) { item.setId(UUID.randomUUID()); item.setOrderId(order.getId()); } this.dao.insertOrderItems(order.getOrderItems()); this.dao.commit(); return order; }
@Override public void update(@Valid Order order) throws EntityDoesNotExistException, InvalidEntityException { this.dao.begin(); Order originalOrder = this.findBySlug(order.getSlug()); if (originalOrder == null) { this.dao.commit(); throw new EntityDoesNotExistException(); } order.setId(originalOrder.getId()); Integer updatedRows = this.dao.updateOrder(order); this.dao.commit(); if (updatedRows <= 0) { throw new StoreException("No rows was updated when updating order"); } }
bindings.put("formURL", paymentRequest.getRedirectionTarget().isPresent() ? paymentRequest.getRedirectionTarget().get() :"/checkout/" + response.getOrder().getId() + "/payment"); bindings.put("paymentData", paymentRequest.getData());