Skip to content
Snippets Groups Projects
ManageHospitalAssignmentsAction.java 5.19 KiB
Newer Older
  • Learn to ignore specific revisions
  • HMoss's avatar
    HMoss committed
    package edu.ncsu.csc.itrust.action;
    
    import java.util.List;
    import edu.ncsu.csc.itrust.beans.HospitalBean;
    import edu.ncsu.csc.itrust.dao.DAOFactory;
    import edu.ncsu.csc.itrust.dao.mysql.HospitalsDAO;
    import edu.ncsu.csc.itrust.dao.mysql.PersonnelDAO;
    import edu.ncsu.csc.itrust.exception.ITrustException;
    
    /**
     * Manages the assignment of HCPs to hospitals Used by hospitalAssignments.jsp
     * 
     * 
     */
    public class ManageHospitalAssignmentsAction {
    	private PersonnelDAO personnelDAO;
    	private HospitalsDAO hospitalsDAO;
    	/**
    	 * Set up defaults
    	 * 
    	 * @param factory
    	 *            The DAOFactory used to create the DAOs used in this action.
    	 * @param loggedInMID
    	 *            The MID of the user managing hospitals.
    	 */
    	public ManageHospitalAssignmentsAction(DAOFactory factory, long loggedInMID) {
    		this.personnelDAO = factory.getPersonnelDAO();
    		this.hospitalsDAO = factory.getHospitalsDAO();
    	}
    
    	/**
    	 * Returns a list of hospitals to which the given mid is not currently assigned
    	 * 
    	 * @param midString
    	 * @return list of HospitalBeans
    	 * @throws ITrustException
    	 */
    	public List<HospitalBean> getAvailableHospitals(String midString) throws ITrustException {
    		try {
    			long mid = Long.valueOf(midString);
    			List<HospitalBean> allHospitals = hospitalsDAO.getAllHospitals();
    			List<HospitalBean> ourHospitals = personnelDAO.getHospitals(mid);
    			while (!ourHospitals.isEmpty()) {
    				allHospitals.remove(ourHospitals.remove(0));
    			}
    
    			return allHospitals;
    		} catch (NumberFormatException e) {
    			throw new ITrustException("HCP's MID not a number");
    		}
    	}
    
    	/**
    	 * Returns a list of hospitals to which the given mid is currently assigned
    	 * 
    	 * @param midString
    	 * @return list of HosptialBeans
    	 * @throws ITrustException
    	 */
    	public List<HospitalBean> getAssignedHospitals(String midString) throws ITrustException {
    		try {
    			long mid = Long.valueOf(midString);
    			return personnelDAO.getHospitals(mid);
    		} catch (NumberFormatException e) {
    			throw new ITrustException("HCP's MID not a number");
    		}
    	}
    
    	/**
    	 * Assigns the mid to the hospital
    	 * 
    	 * @param midString
    	 *            The MID of the person assigned to the hospital as a String.
    	 * @param hospitalID
    	 *            The ID of the hospital.
    	 * @return message indicating the status of the assignment
    	 * @throws ITrustException
    	 */
    	public String assignHCPToHospital(String midString, String hospitalID) throws ITrustException {
    		try {
    			long hcpID = Long.valueOf(midString);
    			boolean confirm = hospitalsDAO.assignHospital(hcpID, hospitalID);
    			if (confirm) {/*
    						 * only patient is mentioned for transaction type 0, but spec looks like personnel
    						 * should be included too...
    						 */
    				return "HCP successfully assigned.";
    			} else
    				return "Assignment did not occur";
    		} catch (NumberFormatException e) {
    			throw new ITrustException("HCP's MID not a number");
    		}
    	}
    
    	/**
    	 * Removes HCPs assignment to the designated hospital
    	 * 
    	 * @param midString
    	 *            the HCP's mid
    	 * @param hospitalID
    	 *            the hospital id to be removed
    	 * @return Status message
    	 * @throws ITrustException
    	 */
    	public String removeHCPAssignmentToHospital(String midString, String hospitalID) throws ITrustException {
    		try {
    			long hcpID = Long.valueOf(midString);
    			boolean confirm = hospitalsDAO.removeHospitalAssignment(hcpID, hospitalID);
    			if (confirm) {
    				return "HCP successfully unassigned";
    			} else
    				return "HCP not unassigned";
    		} catch (NumberFormatException e) {
    			throw new ITrustException("HCP's MID not a number");
    		}
    	}
    
    	/**
    	 * Removes all hospital assignments for the given hcp mid
    	 * 
    	 * @param midString
    	 *            HCP's mid
    	 * @return status message
    	 * @throws ITrustException
    	 */
    	public int removeAllAssignmentsFromHCP(String midString) throws ITrustException {
    		try {
    			long hcpID = Long.valueOf(midString);
    			int numAssignments = hospitalsDAO.removeAllHospitalAssignmentsFrom(hcpID);
    
    			return numAssignments;
    		} catch (NumberFormatException e) {
    			throw new ITrustException("HCP's MID not a number");
    		}
    	}
    
    	/**
    	 * Checks if the hcpID param is a HCP
    	 * 
    	 * @param hcpID
    	 *            the String to be checked
    	 * @return the mid as a long if the hcpID is a HCP's mid
    	 * @throws ITrustException
    	 */
    	public long checkHCPID(String hcpID) throws ITrustException {
    		try {
    			long pid = Long.valueOf(hcpID);
    			if (personnelDAO.checkPersonnelExists(pid))
    				return pid;
    			else
    				throw new ITrustException("HCP does not exist");
    		} catch (NumberFormatException e) {
    			throw new ITrustException("HCP ID is not a number: " + e.getMessage());
    		}
    	}
    
    	/**
    	 * Checks if the HCP is a LT if it is then check to see if a hospital is assigned to them
    	 * 
    	 * @param hcpID
    	 *            the String to be checked
    	 * @return true If the LT has an assigned hospital, false if not
    	 * @throws ITrustException
    	 */
    	public boolean checkLTHospital(String hcpID) throws ITrustException{
    		try{
    			long pid = Long.valueOf(hcpID);
    			if(personnelDAO.getPersonnel(pid).getRole().toString().equals("LT")){
    				if(hospitalsDAO.checkLTHasHospital(pid)){
    					return true;
    				}
    				return false;
    			}
    		} catch (NumberFormatException e) {
    			throw new ITrustException("LT ID is not a number: " + e.getMessage());
    		}
    		return false;
    	}
    }