/*
 * Created on Nov 16, 2004
 *
 * TODO To change the template for this generated file go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
package gov.va.med.esr.ui.ee.action;

//Framework classes
import gov.va.med.fw.model.AbstractEntity;
import gov.va.med.fw.ui.struts.AbstractForm;

import java.util.*;
import java.math.BigDecimal;

import gov.va.med.esr.common.infra.ImpreciseDate;
import gov.va.med.esr.common.model.person.Person;
import gov.va.med.esr.common.model.comms.GeocodeTransmit;
import gov.va.med.esr.common.model.comms.Waittime;
import gov.va.med.esr.common.model.ee.AgentOrangeExposure;
import gov.va.med.esr.common.model.ee.IneligibilityFactor;
import gov.va.med.esr.common.model.lookup.*;
import gov.va.med.esr.common.model.party.Address;


/**
 * @author DNS   chenb
 *
 * TODO To change the template for this generated type comment go to
 * Window - Preferences - Java - Code Style - Code Templates
 */
public class EligibilityViewForm extends AbstractForm {
	private static final long serialVersionUID = 7057904584400562318L;
    
    private Person person = null;
	private Vector scDisbilities = null;
	private Vector otherEligCodes = null;
	private Vector otherEligFactors = null;
    private IneligibilityFactor ineligibilityFactor = null;
	
	//private EnrollmentDetermination enrollment = null;
    //POW
    private Indicator powIndicator = null;
    private Set powEpisodes = null;

	//Current Eligibility Module
    private Boolean veteranIndicator = null;
	private Date applicationDate = null;
	private String scPercentage = null;
	private String primaryElig = null;
	private ImpreciseDate effectiveDateCombinedRating = null;
	private Date enrollmentEffDate = null;
	private EligibilityStatus eligStatus = null;
	private BigDecimal totalCheck = null;
	private ImpreciseDate eligStatusDate = null;
	private EligibilityVerificationSource eligVerSource = null; //not mapped
	private String EligVerSourceFacility = null;
	private String eligVerMethod = null; //not mapped
	private DecorationStatus phStatus = null;
	private EligibilityStatusPendVerfiReason eligStatusPVReason=null;	
	private String eligStatusPVReasonExplain=null;

	
	//Enrollment Module
	private AACIndicator aacIndicator = null; //  Yes 
	private Boolean receivingVADisabilityCompensation = null; //  No 
	private Boolean unemployable = null; // No 
	private Boolean permanentAndTotal = null; // Yes 
	private Date permanentAndTotalEffDate = null; //  01/01/2004 
	private Boolean ratedIncompetent = null; // Yes 
	private ImpreciseDate ruledIncompetentVADate = null; // 03/02/2001 
	private ImpreciseDate ruledIncompetentCivilDate = null; //  01/01/2000 
	private String claimFolderNumber = null; //  38383 
	private Boolean eligibleForMedicaid = null; // Yes 
	private String claimFolderLocation = null; //  St. Louis 
	private Date medicaidLastUpdatedDate = null; //  12/29/2003 

	//Financial Module
	
	private String incomeTestYear = null;
	private Date incomeTestDate = null;
	private String incomeTestFacility = null;
	private String incomeTestStatus = null;
	private Date incomeTestLastEdited = null;
	
	//Health Benefit Plans
    private Integer currentNumberOfHealthBenefitPlans = null;
	
	//MSDS Module
	
	private MilitaryServiceQueryStatus msdsQueryStatus = null;
	
	
	// Veterans Choice
	private String vetChoiceStat;
	private GeocodeTransmit geocodeTransmit;
	private Waittime waittime;
	private List waittimeList;
	private String geocodeDate;
	
	private Address address;
	
	private String homePhone;
	private String workPhone;
	private String cellPhone;
	private String tempPhone;
	private String serviceConnectionAward;
	private String enrollmentDetermination;
	private String effectiveDate;
	private String combatVeteranStatus;
	private String specialAuthority;
	
	
	
	public String getHomePhone() {
		return homePhone;
	}
	public void setHomePhone(String homePhone) {
		this.homePhone = homePhone;
	}
	public String getWorkPhone() {
		return workPhone;
	}
	public void setWorkPhone(String workPhone) {
		this.workPhone = workPhone;
	}
	public String getCellPhone() {
		return cellPhone;
	}
	public void setCellPhone(String cellPhone) {
		this.cellPhone = cellPhone;
	}
	public String getTempPhone() {
		return tempPhone;
	}
	public void setTempPhone(String tempPhone) {
		this.tempPhone = tempPhone;
	}
	public String getServiceConnectionAward() {
		return serviceConnectionAward;
	}
	public void setServiceConnectionAward(String serviceConnectionAward) {
		this.serviceConnectionAward = serviceConnectionAward;
	}
	public String getEnrollmentDetermination() {
		return enrollmentDetermination;
	}
	public void setEnrollmentDetermination(String enrollmentDetermination) {
		this.enrollmentDetermination = enrollmentDetermination;
	}
	public String getEffectiveDate() {
		return effectiveDate;
	}
	public void setEffectiveDate(String effectiveDate) {
		this.effectiveDate = effectiveDate;
	}
	public String getCombatVeteranStatus() {
		return combatVeteranStatus;
	}
	public void setCombatVeteranStatus(String combatVeteranStatus) {
		this.combatVeteranStatus = combatVeteranStatus;
	}
	public String getSpecialAuthority() {
		return specialAuthority;
	}
	public void setSpecialAuthority(String specialAuthority) {
		this.specialAuthority = specialAuthority;
	}
	public String getGeocodeDate() {
		return geocodeDate;
	}
	public void setGeocodeDate(String geocodeDate) {
		this.geocodeDate = geocodeDate;
	}
	public Address getAddress() {
		return address;
	}
	public void setAddress(Address address) {
		this.address = address;
	}
	public String getVetChoiceStat() {
		return vetChoiceStat;
	}
	public void setVetChoiceStat(String vetChoiceStat) {
		this.vetChoiceStat = vetChoiceStat;
	}
	public GeocodeTransmit getGeocodeTransmit() {
		return geocodeTransmit;
	}
	public void setGeocodeTransmit(GeocodeTransmit geocodeTransmit) {
		this.geocodeTransmit = geocodeTransmit;
	}
	public Waittime getWaittime() {
		return waittime;
	}
	public void setWaittime(Waittime waittime) {
		this.waittime = waittime;
	}
	public List getWaittimeList() {
		return waittimeList;
	}
	public void setWaittimeList(List waittimeList) {
		this.waittimeList = waittimeList;
	}
	/**
	 * @return Returns the person.
	 */
	public Person getPerson() {
		return person;
	}
	/**
	 * @param person The person to set.
	 */
	public void setPerson(Person person) {
		this.person = person;
	}
	
	/**
	 * @return Returns the veteranIndicator.
	 */
	public Boolean getVeteranIndicator() {
		return veteranIndicator;
	}
	/**
	 * @param veteranIndicator The veteranIndicator to set.
	 */
	public void setVeteranIndicator(Boolean veteranIndicator) {
		this.veteranIndicator = veteranIndicator;
	}
	/**
	 * @return Returns the applicationDate.
	 */
	public Date getApplicationDate() {
		return applicationDate;
	}
	/**
	 * @param applicationDate The applicationDate to set.
	 */
	public void setApplicationDate(Date applicationDate) {
		this.applicationDate = applicationDate;
	}

	/**
	 * @return Returns the enrollmentEffDate.
	 */
	public Date getEnrollmentEffDate() {
		return enrollmentEffDate;
	}
	/**
	 * @param enrollmentEffDate The enrollmentEffDate to set.
	 */
	public void setEnrollmentEffDate(Date enrollmentEffDate) {
		this.enrollmentEffDate = enrollmentEffDate;
	}
	/**
	 * @return Returns the eligStatus.
	 */
	public EligibilityStatus getEligStatus() {
		return eligStatus;
	}
	/**
	 * @param eligStatus The eligStatus to set.
	 */
	public void setEligStatus(EligibilityStatus eligStatus) {
		this.eligStatus = eligStatus;
	}
	/**
	 * @return Returns the eligStatusDate.
	 */
	public ImpreciseDate getEligStatusDate() {
		return eligStatusDate;
	}
	/**
	 * @param eligStatusDate The eligStatusDate to set.
	 */
	public void setEligStatusDate(ImpreciseDate eligStatusDate) {
		this.eligStatusDate = eligStatusDate;
	}

	/**
	 * @return Returns the eligVerMethod.
	 */
	public String getEligVerMethod() {
		return eligVerMethod;
	}
	/**
	 * @param eligVerMethod The eligVerMethod to set.
	 */
	public void setEligVerMethod(String eligVerMethod) {
		this.eligVerMethod = eligVerMethod;
	}
	/**
	 * @return Returns the eligVerSource.
	 */
	public EligibilityVerificationSource getEligVerSource() {
		return eligVerSource;
	}
	/**
	 * @param eligVerSource The eligVerSource to set.
	 */
	public void setEligVerSource(EligibilityVerificationSource eligVerSource) {
		this.eligVerSource = eligVerSource;
	}
	
	/**
	 * @return Returns the eligVerSourceFacility.
	 */
	public String getEligVerSourceFacility() {
		return EligVerSourceFacility;
	}
	/**
	 * @param eligVerSourceFacility The eligVerSourceFacility to set.
	 */
	public void setEligVerSourceFacility(String eligVerSourceFacility) {
		EligVerSourceFacility = eligVerSourceFacility;
	}
	/**
	 * @return Returns the phStatus.
	 */
	public DecorationStatus getPhStatus() {
		return phStatus;
	}
	/**
	 * @param phStatus The phStatus to set.
	 */
	public void setPhStatus(DecorationStatus phStatus) {
		this.phStatus = phStatus;
	}
	/**
	 * @return Returns the otherEligCodes.
	 */
	public Vector getOtherEligCodes() {
		return otherEligCodes;
	}
	/**
	 * @param otherEligCodes The otherEligCodes to set.
	 */
	public void setOtherEligCodes(Vector otherEligCodes) {
		this.otherEligCodes = otherEligCodes;
	}
	/**
	 * @return Returns the otherEligFactors.
	 */
	public Vector getOtherEligFactors() {
		return otherEligFactors;
	}
	/**
	 * @param otherEligFactors The otherEligFactors to set.
	 */
	public void setOtherEligFactors(Vector otherEligFactors) {
		this.otherEligFactors = otherEligFactors;
	}
    
    public AgentOrangeExposureLocation getAgentOrangeExposureLocation() {
        AgentOrangeExposure aoExposure = (person != null) ? (AgentOrangeExposure)person.getSpecialFactorByType(AgentOrangeExposure.class) : null;
        return (aoExposure != null) ? aoExposure.getLocation() : null;
    }
    
	/**
	 * @return Returns the primaryElig.
	 */
	public String getPrimaryElig() {
		return primaryElig;
	}
	/**
	 * @param primaryElig The primaryElig to set.
	 */
	public void setPrimaryElig(String primaryElig) {
		this.primaryElig = primaryElig;
	}
	/**
	 * @return Returns the scDisbilities.
	 */
	public Vector getScDisbilities() {
		return scDisbilities;
	}
	/**
	 * @param scDisbilities The scDisbilities to set.
	 */
	public void setScDisbilities(Vector scDisbilities) {
		this.scDisbilities = scDisbilities;
	}
	/**
	 * @return Returns the scPercentage.
	 */
	public String getScPercentage() {
		return scPercentage;
	}
	/**
	 * @param scPercentage The scPercentage to set.
	 */
	public void setScPercentage(String scPercentage) {
		this.scPercentage = scPercentage;
	}
	
	/**
	 * @return Returns the effectiveDateCombinedRating.
	 */
	public ImpreciseDate getEffectiveDateCombinedRating() {
		return effectiveDateCombinedRating;
	}
	/**
	 * @param effectiveDateCombinedRating The effectiveDateCombinedRating to set.
	 */
	public void setEffectiveDateCombinedRating(ImpreciseDate effectiveDateCombinedRating) {
		this.effectiveDateCombinedRating = effectiveDateCombinedRating;
	}
	/**
	 * @return Returns the totalCheck.
	 */
	public BigDecimal getTotalCheck() {
		return totalCheck;
	}
	/**
	 * @param totalCheck The totalCheck to set.
	 */
	public void setTotalCheck(BigDecimal totalCheck) {
		this.totalCheck = totalCheck;
	}
	
	/**
	 * @return Returns the aACIndicator.
	 */
	public AACIndicator getAACIndicator() {
		return aacIndicator;
	}
	/**
	 * @param indicator The aACIndicator to set.
	 */
	public void setAACIndicator(AACIndicator indicator) {
		aacIndicator = indicator;
	}
	/**
	 * @return Returns the claimFolderLocation.
	 */
	public String getClaimFolderLocation() {
		return claimFolderLocation;
	}
	/**
	 * @param claimFolderLocation The claimFolderLocation to set.
	 */
	public void setClaimFolderLocation(String claimFolderLocation) {
		this.claimFolderLocation = claimFolderLocation;
	}
	/**
	 * @return Returns the claimFolderNumber.
	 */
	public String getClaimFolderNumber() {
		return claimFolderNumber;
	}
	/**
	 * @param claimFolderNumber The claimFolderNumber to set.
	 */
	public void setClaimFolderNumber(String claimFolderNumber) {
		this.claimFolderNumber = claimFolderNumber;
	}
	/**
	 * @return Returns the eligibleForMedicaid.
	 */
	public Boolean getEligibleForMedicaid() {
		return eligibleForMedicaid;
	}
	/**
	 * @param eligibleForMedicaid The eligibleForMedicaid to set.
	 */
	public void setEligibleForMedicaid(Boolean eligibleForMedicaid) {
		this.eligibleForMedicaid = eligibleForMedicaid;
	}
	/**
	 * @return Returns the medicaidLastUpdatedDate.
	 */
	public Date getMedicaidLastUpdatedDate() {
		return medicaidLastUpdatedDate;
	}
	/**
	 * @param medicaidLastUpdatedDate The medicaidLastUpdatedDate to set.
	 */
	public void setMedicaidLastUpdatedDate(Date medicaidLastUpdatedDate) {
		this.medicaidLastUpdatedDate = medicaidLastUpdatedDate;
	}
	/**
	 * @return Returns the permanentAndTotal.
	 */
	public Boolean getPermanentAndTotal() {
		return permanentAndTotal;
	}
	/**
	 * @param permanentAndTotal The permanentAndTotal to set.
	 */
	public void setPermanentAndTotal(Boolean permanentAndTotal) {
		this.permanentAndTotal = permanentAndTotal;
	}
	/**
	 * @return Returns the permanentAndTotalEffDate.
	 */
	public Date getPermanentAndTotalEffDate() {
		return permanentAndTotalEffDate;
	}
	/**
	 * @param permanentAndTotalEffDate The permanentAndTotalEffDate to set.
	 */
	public void setPermanentAndTotalEffDate(Date permanentAndTotalEffDate) {
		this.permanentAndTotalEffDate = permanentAndTotalEffDate;
	}
	/**
	 * @return Returns the ratedIncompetent.
	 */
	public Boolean getRatedIncompetent() {
		return ratedIncompetent;
	}
	/**
	 * @param ratedIncompetent The ratedIncompetent to set.
	 */
	public void setRatedIncompetent(Boolean ratedIncompetent) {
		this.ratedIncompetent = ratedIncompetent;
	}
	/**
	 * @return Returns the receivingVADisabilityCompensation.
	 */
	public Boolean getReceivingVADisabilityCompensation() {
		return receivingVADisabilityCompensation;
	}
	/**
	 * @param receivingVADisabilityCompensation The receivingVADisabilityCompensation to set.
	 */
	public void setReceivingVADisabilityCompensation(
			Boolean receivingVADisabilityCompensation) {
		this.receivingVADisabilityCompensation = receivingVADisabilityCompensation;
	}
	/**
	 * @return Returns the ruledIncompetentCivilDate.
	 */
	public ImpreciseDate getRuledIncompetentCivilDate() {
		return ruledIncompetentCivilDate;
	}
	/**
	 * @param ruledIncompetentCivilDate The ruledIncompetentCivilDate to set.
	 */
	public void setRuledIncompetentCivilDate(ImpreciseDate ruledIncompetentCivilDate) {
		this.ruledIncompetentCivilDate = ruledIncompetentCivilDate;
	}
	/**
	 * @return Returns the ruledIncompetentVADate.
	 */
	public ImpreciseDate getRuledIncompetentVADate() {
		return ruledIncompetentVADate;
	}
	/**
	 * @param ruledIncompetentVADate The ruledIncompetentVADate to set.
	 */
	public void setRuledIncompetentVADate(ImpreciseDate ruledIncompetentVADate) {
		this.ruledIncompetentVADate = ruledIncompetentVADate;
	}
	/**
	 * @return Returns the unemployable.
	 */
	public Boolean getUnemployable() {
		return unemployable;
	}
	/**
	 * @param unemployable The unemployable to set.
	 */
	public void setUnemployable(Boolean unemployable) {
		this.unemployable = unemployable;
	}
	/**
	 * @return Returns the incomeTestDate.
	 */
	public Date getIncomeTestDate() {
		return incomeTestDate;
	}
	/**
	 * @param incomeTestDate The incomeTestDate to set.
	 */
	public void setIncomeTestDate(Date incomeTestDate) {
		this.incomeTestDate = incomeTestDate;
	}
	/**
	 * @return Returns the incomeTestFacility.
	 */
	public String getIncomeTestFacility() {
		return incomeTestFacility;
	}
	/**
	 * @param incomeTestFacility The incomeTestFacility to set.
	 */
	public void setIncomeTestFacility(String incomeTestFacility) {
		this.incomeTestFacility = incomeTestFacility;
	}
	/**
	 * @return Returns the incomeTestStatus.
	 */
	public String getIncomeTestStatus() {
		return incomeTestStatus;
	}
	/**
	 * @param incomeTestStatus The incomeTestStatus to set.
	 */
	public void setIncomeTestStatus(String incomeTestStatus) {
		this.incomeTestStatus = incomeTestStatus;
	}
	/**
	 * @return Returns the incomeTestYear.
	 */
	public String getIncomeTestYear() {
		return incomeTestYear;
	}
	/**
	 * @param incomeTestYear The incomeTestYear to set.
	 */
	public void setIncomeTestYear(String incomeTestYear) {
		this.incomeTestYear = incomeTestYear;
	}
	/**
	 * @return Returns the incomeLastEdited.
	 */
	public Date getIncomeTestLastEdited() {
		return incomeTestLastEdited;
	}
	/**
	 * @param incomeLastEdited The incomeLastEdited to set.
	 */
	public void setIncomeTestLastEdited(Date incomeTestLastEdited) {
		this.incomeTestLastEdited = incomeTestLastEdited;
	}

    public IneligibilityFactor getIneligibilityFactor() {
        return ineligibilityFactor;
    }
    
    public void setIneligibilityFactor(IneligibilityFactor ineligibilityFactor) {
        this.ineligibilityFactor = ineligibilityFactor;
    }
    
    public boolean isNoOtherEligCodes()
    {
        return (getOtherEligCodes() == null || getOtherEligCodes().size() == 0);
    }
    public boolean isNoOtherEligFactors()
    {
        return (getOtherEligFactors() == null || getOtherEligFactors().size() == 0);
    }
    public boolean isNoScDisbilities()
    {
        return (getScDisbilities() == null || getScDisbilities().size() == 0);
    }
    public boolean isNoFinancialData()
    {
        return (getIncomeTestYear() == null && getIncomeTestStatus() == null && getIncomeTestDate() == null);
    }

    public Set getPowEpisodes() {
        return this.powEpisodes;
    }
    public Indicator getPowIndicator() {
        return this.powIndicator;
    }
    public void setPowEpisodes(Set powEpisodes) {
        this.powEpisodes = powEpisodes;
    }
    public void setPowIndicator(Indicator powIndicator) {
        this.powIndicator = powIndicator;
    }
    /**
	 * @return Returns the query status.
	 */
	public MilitaryServiceQueryStatus getMSDSQueryStatus() {
		return msdsQueryStatus;
	}
	/**
	 * @param MilitaryServiceQueryStatus The query status to set.
	 */
	public void setMSDSQueryStatus(MilitaryServiceQueryStatus msdsQueryStatus) {
		this.msdsQueryStatus = msdsQueryStatus;
	}
    
   /**
    * @see gov.va.med.fw.ui.struts.AbstractForm#createValueObject()
    */
   protected AbstractEntity createValueObject() {
      return new Person();
   }
   
   public void setCurrentNumberOfHealthBenefitPlans(Integer currentNumberOfHealthBenefitPlans) {
		this.currentNumberOfHealthBenefitPlans = currentNumberOfHealthBenefitPlans;
	}
   
   public Integer getCurrentNumberOfHealthBenefitPlans() {
	      return currentNumberOfHealthBenefitPlans;
	  }
public EligibilityStatusPendVerfiReason getEligStatusPVReason() {
	return eligStatusPVReason;
}
public void setEligStatusPVReason(EligibilityStatusPendVerfiReason eligStatusPVReason) {
	this.eligStatusPVReason = eligStatusPVReason;
}
public String getEligStatusPVReasonExplain() {
	return eligStatusPVReasonExplain;
}
public void setEligStatusPVReasonExplain(String eligStatusPVReasonExplain) {
	this.eligStatusPVReasonExplain = eligStatusPVReasonExplain;
}
	

}
