package org.msh.tb.tbunits;

import org.jboss.seam.ScopeType;
import org.jboss.seam.annotations.In;
import org.jboss.seam.annotations.Name;
import org.jboss.seam.annotations.Scope;
import org.msh.tb.MedicineUnitHome;
import org.msh.tb.RegimenUnitHome;
import org.msh.tb.entities.Tbunit;
import org.msh.tb.login.UserSession;

import javax.persistence.EntityManager;

@Name("unitSetup")
@Scope(ScopeType.CONVERSATION)
public class UnitSetup {

	@In(required=false) MedicineUnitHome medicineUnitHome;
	@In(required=false) RegimenUnitHome regimenUnitHome;
	@In(create=true) UserSession userSession;
	@In(create=true) EntityManager entityManager;
	
	private Tbunit unit;
	
	/**
	 * Get unit for editing
	 * @return
	 */
	public Tbunit getUnit() {
		if (unit == null)
			initialize();
		return unit;
	}
	
	/**
	 * Initialize unit stock setup
	 */
	public void initialize() {
		// check if it was already initialized
		if (unit != null)
			return;

		unit = entityManager.merge(userSession.getTbunit());
		userSession.setTbunit(unit);
	}


	/**
	 * Saves the information about stock unit settings
	 * @return
	 */
	public String persist() {
		entityManager.persist(unit);

		if (medicineUnitHome != null)
			medicineUnitHome.persist();
		
		if (regimenUnitHome != null)
			regimenUnitHome.persist();
		
		return "persisted";
	}
}
