package io.oasp.gastronomy.restaurant.salesmanagement.service.impl.rest; import java.util.List; import java.util.Objects; import javax.inject.Inject; import javax.inject.Named; import javax.ws.rs.BadRequestException; import javax.ws.rs.core.UriInfo; import io.oasp.gastronomy.restaurant.offermanagement.logic.api.to.OfferEto; import io.oasp.gastronomy.restaurant.salesmanagement.common.api.datatype.OrderPositionState; import io.oasp.gastronomy.restaurant.salesmanagement.common.api.datatype.OrderState; import io.oasp.gastronomy.restaurant.salesmanagement.common.api.datatype.PaymentStatus; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.Salesmanagement; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.BillCto; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.BillEto; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderCto; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderEto; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderPositionEto; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderPositionSearchCriteriaTo; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.OrderSearchCriteriaTo; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.to.PaymentData; import io.oasp.gastronomy.restaurant.salesmanagement.service.api.rest.SalesmanagementRestService; import io.oasp.module.jpa.common.api.to.PaginatedListTo; import io.oasp.module.jpa.common.api.to.PaginationTo; import io.oasp.module.rest.service.api.RequestParameters; /** */ @Named("SalesmanagementRestService") public class SalesmanagementRestServiceImpl implements SalesmanagementRestService { private Salesmanagement salesmanagement; @Override public OrderEto findOrder(long orderId) { return this.salesmanagement.findOrder(orderId); } @Override public PaginatedListTo<OrderCto> findOrders(UriInfo info) { RequestParameters parameters = RequestParameters.fromQuery(info); OrderSearchCriteriaTo criteria = new OrderSearchCriteriaTo(); criteria.setTableId(parameters.get("tableId", Long.class, false)); criteria.setState(parameters.get("state", OrderState.class, false)); Integer page = parameters.get("pagination[page]", Integer.class, false); if (page != null) { PaginationTo pagination = new PaginationTo(); pagination.setPage(page); pagination.setSize(parameters.get("pagination[size]", Integer.class, false)); criteria.setPagination(pagination); } return this.salesmanagement.findOrderCtos(criteria); } @Override public PaginatedListTo<OrderCto> findOrdersByPost(OrderSearchCriteriaTo searchCriteriaTo) { return this.salesmanagement.findOrderCtos(searchCriteriaTo); } @Override public List<OrderPositionEto> findOrderPositions(UriInfo info) { RequestParameters parameters = RequestParameters.fromQuery(info); OrderPositionSearchCriteriaTo criteria = new OrderPositionSearchCriteriaTo(); criteria.setOrderId(parameters.get("orderId", Long.class, false)); criteria.setCookId(parameters.get("cookId", Long.class, false)); criteria.setState(parameters.get("state", OrderPositionState.class, false)); criteria.setMealOrSideDish(parameters.get("mealOrSideDish", boolean.class, false)); return this.salesmanagement.findOrderPositions(criteria); } @Override @Deprecated public OrderCto updateOrder(OrderCto order, long orderId) { Objects.requireNonNull(order, "order"); OrderEto orderEto = order.getOrder(); Objects.requireNonNull(orderEto, "order"); Long jsonOrderId = orderEto.getId(); if (jsonOrderId == null) { orderEto.setId(orderId); } else if (!jsonOrderId.equals(orderId)) { throw new BadRequestException("Order ID of URL does not match JSON payload!"); } return this.salesmanagement.saveOrder(order); } @Override public OrderCto saveOrder(OrderCto order) { return this.salesmanagement.saveOrder(order); } @Override public OrderPositionEto findOrderPosition(long orderPositionId) { return this.salesmanagement.findOrderPosition(orderPositionId); } @Override @Deprecated public OrderPositionEto createOrderPosition(OfferEto offer, long orderId, String comment) { return this.salesmanagement.createOrderPosition(offer, findOrder(orderId), comment); } @Override public OrderPositionEto saveOrderPosition(OrderPositionEto orderPosition) { return this.salesmanagement.saveOrderPosition(orderPosition); } @Override public BillCto findBill(long billId) { return this.salesmanagement.findBill(billId); } @Override public PaymentStatus doPayment(long billId) { return this.salesmanagement.doPayment(findBill(billId).getBill()); } @Override public PaymentStatus doPayment(long billId, PaymentData paymentData) { return this.salesmanagement.doPayment(findBill(billId).getBill(), paymentData); } @Override public BillEto createBill(BillEto bill) { return this.salesmanagement.createBill(bill); } @Override public void deleteBill(long billId) { this.salesmanagement.deleteBill(billId); } @Override public void changeTable(long orderId, long newTableId) { this.salesmanagement.changeTable(orderId, newTableId); } /** * This method sets the field <tt>salesmanagement</tt>. * * @param salesmanagement the new value of the field salesmanagement */ @Inject public void setSalesmanagement(Salesmanagement salesmanagement) { this.salesmanagement = salesmanagement; } }