Skip to content

Instantly share code, notes, and snippets.

@ratul0
Last active December 16, 2019 06:19
Show Gist options
  • Save ratul0/d4e84b61b0ffa4b94a952b1347dc8255 to your computer and use it in GitHub Desktop.
Save ratul0/d4e84b61b0ffa4b94a952b1347dc8255 to your computer and use it in GitHub Desktop.
package de.uniba.dsg.dsam.backend.beans;
import de.uniba.dsg.dsam.backend.entities.BeverageEntity;
import de.uniba.dsg.dsam.backend.entities.OrderEntity;
import de.uniba.dsg.dsam.backend.entities.OrderQuantity;
import de.uniba.dsg.dsam.model.OrderBeverageDTO;
import de.uniba.dsg.dsam.persistence.BeverageManagement;
import de.uniba.dsg.dsam.persistence.OrderManagement;
import javax.ejb.EJB;
import javax.ejb.Local;
import javax.ejb.Stateless;
import javax.persistence.EntityManager;
import javax.persistence.PersistenceContext;
import javax.persistence.PersistenceContextType;
import java.util.List;
import java.util.logging.Logger;
@Stateless
@Local(OrderManagement.class)
public class OrderManagementBean implements OrderManagement {
private static final Logger logger = Logger.getLogger(OrderManagementBean.class.getName());
@PersistenceContext(type = PersistenceContextType.TRANSACTION)
EntityManager em;
@EJB
BeverageManagement beverageManagement;
@Override
public long saveOrder(OrderBeverageDTO orderBeverageDTO) {
OrderEntity order = new OrderEntity();
em.persist(order);
em.flush();
orderBeverageDTO
.data
.forEach(
(OrderBeverageDTO.SingleOrder s)
-> em.persist(
new OrderQuantity(
order,
em.find(BeverageEntity.class, s.id),
s.quantity
)
)
);
updateBeverageQuantity(orderBeverageDTO);
return order.getId();
}
@Override
public int revenue() {
List<OrderQuantity> list = em.createNamedQuery("OrderQuantity.allOrder", OrderQuantity.class)
.getResultList();
int revenue = 0;
for (OrderQuantity q : list) {
revenue += q.getBeverageEntity().getPrice() * q.getQuantity();
}
return revenue;
}
public void updateBeverageQuantity(OrderBeverageDTO orderBeverageDTO) {
orderBeverageDTO.data.forEach(
(OrderBeverageDTO.SingleOrder s)
-> {
BeverageEntity beverageEntity = em.find(BeverageEntity.class, s.id);
int updatedQuantity = beverageEntity.getQuantity() - s.quantity;
beverageEntity.setQuantity(updatedQuantity);
em.flush();
}
);
}
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment