package devopsdistilled.operp.client.business.sales.panes.controllers.impl;
import java.util.HashSet;
import java.util.LinkedList;
import java.util.List;
import java.util.Set;
import javax.inject.Inject;
import devopsdistilled.operp.client.abstracts.EntityOperation;
import devopsdistilled.operp.client.business.sales.panes.SaleDescRowPane;
import devopsdistilled.operp.client.business.sales.panes.controllers.SaleDescRowPaneController;
import devopsdistilled.operp.client.business.sales.panes.models.SaleDescRowPaneModel;
import devopsdistilled.operp.client.exceptions.EntityValidationException;
import devopsdistilled.operp.client.stock.models.StockModel;
import devopsdistilled.operp.server.data.entity.business.SaleDescRow;
import devopsdistilled.operp.server.data.entity.items.Item;
import devopsdistilled.operp.server.data.entity.stock.Stock;
import devopsdistilled.operp.server.data.entity.stock.Warehouse;
public class SaleDescRowPaneControllerImpl implements SaleDescRowPaneController {
@Inject
private SaleDescRowPane view;
@Inject
private SaleDescRowPaneModel model;
@Inject
private StockModel stockModel;
@Override
public void validate() throws EntityValidationException {
// TODO Auto-generated method stub
}
@Override
public SaleDescRow save() {
// TODO Auto-generated method stub
return null;
}
@Override
public SaleDescRowPaneModel getModel() {
return model;
}
@Override
public SaleDescRowPane getView() {
return view;
}
@Override
public void init(SaleDescRow saleDescRow, EntityOperation entityOperation) {
view.setController(this);
view.resetComponents();
model.registerObserver(view);
model.setEntityAndEntityOperation(saleDescRow, entityOperation);
stockModel.registerObserver(view);
}
@Override
public List<Item> getItemsInWarehouse(Warehouse selWarehouse) {
model.getEntity().setWarehouse(selWarehouse);
Set<Item> itemSet = new HashSet<>();
for (Stock stock : stockModel.getEntities())
if (stock.getWarehouse().compareTo(selWarehouse) == 0)
itemSet.add(stock.getItem());
return new LinkedList<>(itemSet);
}
@Override
public Long getQuantityOfItem(Item selItem) {
model.getEntity().setItem(selItem);
for (Stock stock : stockModel.getEntities())
if (stock.getWarehouse()
.compareTo(model.getEntity().getWarehouse()) == 0
&& stock.getItem().compareTo(selItem) == 0) {
Long quantity = stock.getQuantity();
model.getEntity().setQuantity(quantity);
return quantity;
}
return 0L;
}
}