package us.mn.state.health.lims.inventory.action;
import java.util.ArrayList;
import java.util.List;
import us.mn.state.health.lims.common.util.DateUtil;
import us.mn.state.health.lims.inventory.dao.InventoryLocationDAO;
import us.mn.state.health.lims.inventory.dao.InventoryReceiptDAO;
import us.mn.state.health.lims.inventory.daoimpl.InventoryLocationDAOImpl;
import us.mn.state.health.lims.inventory.daoimpl.InventoryReceiptDAOImpl;
import us.mn.state.health.lims.inventory.form.InventoryKitItem;
import us.mn.state.health.lims.inventory.valueholder.InventoryItem;
import us.mn.state.health.lims.inventory.valueholder.InventoryLocation;
import us.mn.state.health.lims.inventory.valueholder.InventoryReceipt;
public class InventoryUtility {
public static final String HIV = "HIV";
public static final String SYPHILIS = "SYPHILIS";
private boolean onlyActiveInventory = false;
public List<InventoryKitItem> getExistingActiveInventory() {
onlyActiveInventory = true;
try {
return getExistingInventory();
} finally {
onlyActiveInventory = false;
}
}
public List<InventoryKitItem> getExistingInventory() {
List<InventoryKitItem> list = new ArrayList<InventoryKitItem>();
InventoryReceiptDAO receiptDAO = new InventoryReceiptDAOImpl();
InventoryLocationDAO locationDAO = new InventoryLocationDAOImpl();
List<InventoryLocation> inventoryList = locationDAO.getAllInventoryLocations();
for (InventoryLocation location : inventoryList) {
InventoryItem inventoryItem = location.getInventoryItem();
if (!onlyActiveInventory || isActive(inventoryItem)) {
InventoryReceipt receipt = receiptDAO.getInventoryReceiptByInventoryItemId(inventoryItem.getId());
InventoryKitItem item = createInventoryItem(inventoryItem, location, receipt);
list.add(item);
}
}
return list;
}
private InventoryKitItem createInventoryItem(InventoryItem item, InventoryLocation location,
InventoryReceipt receipt) {
InventoryKitItem kitItem = new InventoryKitItem();
kitItem.setType(item.getDescription());
kitItem.setKitName(item.getName());
kitItem.setReceiveDate(DateUtil.convertTimestampToStringDate(receipt.getReceivedDate()));
kitItem.setExpirationDate(DateUtil.convertTimestampToStringDate(location.getExpirationDate()));
kitItem.setLotNumber(location.getLotNumber());
kitItem.setSource(receipt.getOrganization().getOrganizationName());
kitItem.setOrganizationId(receipt.getOrganization().getId());
kitItem.setInventoryItemId(item.getId());
kitItem.setInventoryLocationId(location.getId());
kitItem.setInventoryReceiptId(receipt.getId());
kitItem.setIsActive(isActive(item));
return kitItem;
}
private boolean isActive(InventoryItem inventoryItem) {
return "Y".equals(inventoryItem.getIsActive());
}
}