package io.oasp.gastronomy.restaurant.salesmanagement.logic.impl.usecase; import io.oasp.gastronomy.restaurant.general.common.api.constants.PermissionConstants; import io.oasp.gastronomy.restaurant.general.logic.api.UseCase; 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.OrderPositionEto; import io.oasp.gastronomy.restaurant.salesmanagement.logic.api.usecase.UcFindBill; import io.oasp.gastronomy.restaurant.salesmanagement.logic.base.usecase.AbstractBillUc; import java.util.ArrayList; import java.util.List; import javax.annotation.security.RolesAllowed; import javax.inject.Inject; import javax.inject.Named; import org.slf4j.Logger; import org.slf4j.LoggerFactory; /** * Implementation of {@link UcFindBill}. * */ @Named @UseCase public class UcFindBillImpl extends AbstractBillUc implements UcFindBill { private static final Logger LOG = LoggerFactory.getLogger(UcFindBillImpl.class); private Salesmanagement salesmanagement; @Override @RolesAllowed(PermissionConstants.FIND_BILL) public BillCto findBill(long id) { LOG.debug("Get Bill with id '" + id + "' from database."); BillCto billCto = new BillCto(); BillEto bill = getBeanMapper().map(getBillDao().findOne(id), BillEto.class); if (bill == null) { return null; } billCto.setBill(bill); List<OrderPositionEto> orderPositions = new ArrayList<>(); for (Long orderPositionId : bill.getOrderPositionIds()) { OrderPositionEto position = this.salesmanagement.findOrderPosition(orderPositionId); orderPositions.add(position); } billCto.setPositions(orderPositions); return billCto; } /** * @param salesmanagement the salesmanagement to set */ @Inject public void setSalesmanagement(Salesmanagement salesmanagement) { this.salesmanagement = salesmanagement; } }