public void GetCostOfAttendance_NoItems_ReturnsNull() { CostOfAttendanceEstimator estimator = new CostOfAttendanceEstimator(new Dictionary <CostOfAttendanceKey, CostOfAttendance>()); CostOfAttendance coa = estimator.GetCostOfAttendance(EducationLevel.Graduate, HousingOption.OffCampus); Assert.IsNull(coa); }
public void Total_Items_Calculated() { CostOfAttendance coa = new CostOfAttendance(); coa.Items.Add(new CostOfAttendanceItem { Value = 100 }); coa.Items.Add(new CostOfAttendanceItem { Value = 300 }); Assert.AreEqual(400, coa.Total); }
public void GetCostOfAttendance_HasItems_ReturnsItem() { CostOfAttendanceEstimator estimator = new CostOfAttendanceEstimator(new Dictionary <CostOfAttendanceKey, CostOfAttendance> { { new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.OffCampus), new CostOfAttendance ( new CostOfAttendanceItem { Value = 100 } ) } }); CostOfAttendance coa = estimator.GetCostOfAttendance(EducationLevel.Graduate, HousingOption.OffCampus); Assert.AreEqual(100, coa.Items[0].Value); }
public void Total_NoItems_EqualsZero() { CostOfAttendance coa = new CostOfAttendance(); Assert.AreEqual(0, coa.Total); }
public IActionResult Estimate(int NumberInHousehold, int NumberInCollege, string StateOfResidency, string Housing, int StudentAge, string MaritalStatus, bool StudentWorking, decimal StudentWorkIncome, bool StudentTaxFiler, decimal StudentAgi, bool StudentDependents, decimal StudentIncomeTax, decimal StudentUntaxedIncomeAndBenefits, decimal StudentAdditionalFinancialInfo, decimal StudentCashSavingsChecking, decimal StudentInvestmentNetWorth, decimal StudentBusinessFarmNetWorth, bool SpouseWorking, decimal SpouseWorkIncome) { ViewData["Title"] = "Independent Estimate "; ViewData["EstimateHeaderText"] = "PLACEHOLDER Estimate Header Text"; // Collect user input RawIndependentEfcCalculatorArguments rawArgs = new RawIndependentEfcCalculatorArguments(); rawArgs.StudentAge = StudentAge.ToString(); rawArgs.MaritalStatus = MaritalStatus; rawArgs.StateOfResidency = StateOfResidency; rawArgs.IsStudentWorking = StudentWorking.ToString(); rawArgs.StudentWorkIncome = StudentWorkIncome.ToString(); rawArgs.StudentAgi = StudentAgi.ToString(); rawArgs.IsStudentTaxFiler = StudentTaxFiler.ToString(); rawArgs.StudentIncomeTax = StudentIncomeTax.ToString(); rawArgs.StudentUntaxedIncomeAndBenefits = StudentUntaxedIncomeAndBenefits.ToString(); rawArgs.StudentAdditionalFinancialInfo = StudentAdditionalFinancialInfo.ToString(); rawArgs.StudentCashSavingsChecking = StudentCashSavingsChecking.ToString(); rawArgs.StudentInvestmentNetWorth = StudentInvestmentNetWorth.ToString(); rawArgs.StudentBusinessFarmNetWorth = StudentBusinessFarmNetWorth.ToString(); rawArgs.NumberInHousehold = NumberInHousehold.ToString(); rawArgs.NumberInCollege = NumberInCollege.ToString(); rawArgs.IsSpouseWorking = SpouseWorking.ToString(); rawArgs.SpouseWorkIncome = SpouseWorkIncome.ToString(); rawArgs.HasDependents = StudentDependents.ToString(); rawArgs.MonthsOfEnrollment = "9"; rawArgs.IsQualifiedForSimplified = "false"; // Validate user input AidEstimationValidator validator = new AidEstimationValidator(); IndependentEfcCalculatorArguments args = validator.ValidateIndependentEfcCalculatorArguments(rawArgs); // If validation fails, display errors if (validator.Errors.Any()) { string errors = "Errors found: <ul>"; foreach (ValidationError err in validator.Errors) { errors += "<li>" + err.Message + "</li>"; } errors += "</ul>"; ViewData["Errors"] = errors; ViewData["HeaderText"] = "PLACEHOLDER Header Text"; Dictionary <string, string> FormValues = GetModelDictionary(NumberInHousehold, NumberInCollege, StateOfResidency, Housing, StudentAge, MaritalStatus, StudentWorking, StudentWorkIncome, StudentTaxFiler, StudentAgi, StudentDependents, StudentIncomeTax, StudentUntaxedIncomeAndBenefits, StudentAdditionalFinancialInfo, StudentCashSavingsChecking, StudentInvestmentNetWorth, StudentBusinessFarmNetWorth, SpouseWorking, SpouseWorkIncome); return(View("Index", FormValues)); } else { ViewData["Errors"] = ""; EfcCalculator calculator = EfcCalculatorConfigurationManager.GetEfcCalculator("1920", AppSettings.EfcCalculationConstants); EfcProfile profile = calculator.GetIndependentEfcProfile(args); CostOfAttendanceEstimator coaEstimator = CostOfAttendanceEstimatorConfigurationManager.GetCostOfAttendanceEstimator("1920", AppSettings.AidEstimationConstants); HousingOption ho = (HousingOption)Enum.Parse(typeof(HousingOption), Housing.ToString()); CostOfAttendance coa = coaEstimator.GetCostOfAttendance(EducationLevel.Undergraduate, ho); double grantAward = 0; double selfHelp = Math.Max(0, AppSettings.SelfHelpConstant - profile.ExpectedFamilyContribution); double maxCosts = profile.ExpectedFamilyContribution + selfHelp + AppSettings.MaxLoanAmount; double subCosts = Math.Min(maxCosts, coa.Total); string AY = AppSettings.AidYear; if (StateOfResidency == "California") { grantAward = coa.Total - subCosts; ViewData["ShowOutOfState"] = false; } else { grantAward = GetGrantAmount(AY, profile.ExpectedFamilyContribution, coa.Total + coa.OutOfStateFees); ViewData["ShowOutOfState"] = true; } double parentLoan = Math.Max(0, coa.Total - grantAward - selfHelp); double netCosts = coa.Total - grantAward; double totalCOA = coa.Total; if (StateOfResidency != "California") { parentLoan += coa.OutOfStateFees; netCosts += coa.OutOfStateFees; totalCOA += coa.OutOfStateFees; } Dictionary <string, string> EstimatedAwards = new Dictionary <string, string>(); EstimatedAwards.Add("GrantAwards", grantAward.ToString("C0")); EstimatedAwards.Add("SelfHelp", selfHelp.ToString("C0")); EstimatedAwards.Add("ParentLoans", parentLoan.ToString("C0")); EstimatedAwards.Add("GrantAwardsPct", AppSettings.PercentageGrantIndependant); EstimatedAwards.Add("NetCost", Math.Max(0, netCosts).ToString("C0")); EstimatedAwards.Add("OutOfStateFee", coa.OutOfStateFees.ToString("C0")); EstimatedAwards.Add("TotalCOA", totalCOA.ToString("C0")); ViewData["EstimatedAwards"] = EstimatedAwards; var tuple = (EfcProfile : profile, CostOfAttendance : coa); return(View(tuple)); } }
public CostOfAttendanceEstimator GetCostOfAttendanceEstimator() { Dictionary <CostOfAttendanceKey, CostOfAttendance> coaList = new Dictionary <CostOfAttendanceKey, CostOfAttendance>(); // It's possible that some of these budgets will not be specified. Instead of displaying an error in these cases, // skip past the particular budget // Undergrad Off-Campus try { CostOfAttendanceKey undergradOffCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Undergraduate, HousingOption.OffCampus); CostOfAttendanceItem[] undergradOffCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaUndergraduateOffCampus"); CostOfAttendance undergradOffCampusCoa = new CostOfAttendance(undergradOffCampusCoaItems); coaList.Add(undergradOffCampusCoaKey, undergradOffCampusCoa); } catch (Exception) { } // Undergrad On-Campus try { CostOfAttendanceKey undergradOnCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Undergraduate, HousingOption.OnCampus); CostOfAttendanceItem[] undergradOnCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaUndergraduateOnCampus"); CostOfAttendance undergradOnCampusCoa = new CostOfAttendance(undergradOnCampusCoaItems); coaList.Add(undergradOnCampusCoaKey, undergradOnCampusCoa); } catch (Exception) { } // Undergrad Commuter try { CostOfAttendanceKey undergradCommuterCoaKey = new CostOfAttendanceKey(EducationLevel.Undergraduate, HousingOption.Commuter); CostOfAttendanceItem[] undergradCommuterCoaItems = _source.GetCostOfAttendanceItemArray("CoaUndergraduateCommuter"); CostOfAttendance undergradCommuterCoa = new CostOfAttendance(undergradCommuterCoaItems); coaList.Add(undergradCommuterCoaKey, undergradCommuterCoa); } catch (Exception) { } // Grad Off-Campus try { CostOfAttendanceKey gradOffCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.OffCampus); CostOfAttendanceItem[] gradOffCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaGraduateOffCampus"); CostOfAttendance gradOffCampusCoa = new CostOfAttendance(gradOffCampusCoaItems); coaList.Add(gradOffCampusCoaKey, gradOffCampusCoa); } catch (Exception) { } // Grad On-Campus try { CostOfAttendanceKey gradOnCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.OnCampus); CostOfAttendanceItem[] gradOnCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaGraduateOnCampus"); CostOfAttendance gradOnCampusCoa = new CostOfAttendance(gradOnCampusCoaItems); coaList.Add(gradOnCampusCoaKey, gradOnCampusCoa); } catch (Exception) { } // Grad Commuter try { CostOfAttendanceKey gradCommuterCoaKey = new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.Commuter); CostOfAttendanceItem[] gradCommuterCoaItems = _source.GetCostOfAttendanceItemArray("CoaGraduateCommuter"); CostOfAttendance gradCommuterCoa = new CostOfAttendance(gradCommuterCoaItems); coaList.Add(gradCommuterCoaKey, gradCommuterCoa); } catch (Exception) { } // Out of State Fees try { double outOfStateFees = _source.GetValue <double>("OutOfStateFees"); foreach (CostOfAttendance coa in coaList.Values) { coa.OutOfStateFees = outOfStateFees; } } catch (Exception) { } return(new CostOfAttendanceEstimator(coaList)); }
public CostOfAttendanceEstimator GetCostOfAttendanceEstimator() { Dictionary<CostOfAttendanceKey, CostOfAttendance> coaList = new Dictionary<CostOfAttendanceKey, CostOfAttendance>(); // It's possible that some of these budgets will not be specified. Instead of displaying an error in these cases, // skip past the particular budget // Undergrad Off-Campus try { CostOfAttendanceKey undergradOffCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Undergraduate, HousingOption.OffCampus); CostOfAttendanceItem[] undergradOffCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaUndergraduateOffCampus"); CostOfAttendance undergradOffCampusCoa = new CostOfAttendance(undergradOffCampusCoaItems); coaList.Add(undergradOffCampusCoaKey, undergradOffCampusCoa); } catch (Exception) { } // Undergrad On-Campus try { CostOfAttendanceKey undergradOnCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Undergraduate, HousingOption.OnCampus); CostOfAttendanceItem[] undergradOnCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaUndergraduateOnCampus"); CostOfAttendance undergradOnCampusCoa = new CostOfAttendance(undergradOnCampusCoaItems); coaList.Add(undergradOnCampusCoaKey, undergradOnCampusCoa); } catch (Exception) { } // Undergrad Commuter try { CostOfAttendanceKey undergradCommuterCoaKey = new CostOfAttendanceKey(EducationLevel.Undergraduate, HousingOption.Commuter); CostOfAttendanceItem[] undergradCommuterCoaItems = _source.GetCostOfAttendanceItemArray("CoaUndergraduateCommuter"); CostOfAttendance undergradCommuterCoa = new CostOfAttendance(undergradCommuterCoaItems); coaList.Add(undergradCommuterCoaKey, undergradCommuterCoa); } catch (Exception) { } // Grad Off-Campus try { CostOfAttendanceKey gradOffCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.OffCampus); CostOfAttendanceItem[] gradOffCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaGraduateOffCampus"); CostOfAttendance gradOffCampusCoa = new CostOfAttendance(gradOffCampusCoaItems); coaList.Add(gradOffCampusCoaKey, gradOffCampusCoa); } catch (Exception) { } // Grad On-Campus try { CostOfAttendanceKey gradOnCampusCoaKey = new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.OnCampus); CostOfAttendanceItem[] gradOnCampusCoaItems = _source.GetCostOfAttendanceItemArray("CoaGraduateOnCampus"); CostOfAttendance gradOnCampusCoa = new CostOfAttendance(gradOnCampusCoaItems); coaList.Add(gradOnCampusCoaKey, gradOnCampusCoa); } catch (Exception) { } // Grad Commuter try { CostOfAttendanceKey gradCommuterCoaKey = new CostOfAttendanceKey(EducationLevel.Graduate, HousingOption.Commuter); CostOfAttendanceItem[] gradCommuterCoaItems = _source.GetCostOfAttendanceItemArray("CoaGraduateCommuter"); CostOfAttendance gradCommuterCoa = new CostOfAttendance(gradCommuterCoaItems); coaList.Add(gradCommuterCoaKey, gradCommuterCoa); } catch (Exception) { } // Out of State Fees try { double outOfStateFees = _source.GetValue<double>("OutOfStateFees"); foreach (CostOfAttendance coa in coaList.Values) { coa.OutOfStateFees = outOfStateFees; } } catch (Exception) { } return new CostOfAttendanceEstimator(coaList); }
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { // Collect user input RawIndependentEfcCalculatorArguments rawArgs = new RawIndependentEfcCalculatorArguments(); rawArgs.StudentAge = inputStudentAge.Text; rawArgs.MaritalStatus = inputMaritalStatus.SelectedValue; rawArgs.StateOfResidency = inputStateOfResidency.SelectedValue; rawArgs.IsStudentWorking = inputStudentWorking.SelectedValue; rawArgs.StudentWorkIncome = inputStudentWorkIncome.Text; rawArgs.IsSpouseWorking = inputSpouseWorking.SelectedValue; rawArgs.SpouseWorkIncome = inputSpouseWorkIncome.Text; rawArgs.StudentAgi = inputStudentAgi.Text; rawArgs.IsStudentTaxFiler = inputStudentTaxFiler.SelectedValue; rawArgs.StudentIncomeTax = inputStudentIncomeTax.Text; rawArgs.StudentUntaxedIncomeAndBenefits = inputStudentUntaxedIncomeAndBenefits.Text; rawArgs.StudentAdditionalFinancialInfo = inputStudentAdditionalFinancialInfo.Text; rawArgs.StudentCashSavingsChecking = inputStudentCashSavingsChecking.Text; rawArgs.StudentInvestmentNetWorth = inputStudentInvestmentNetWorth.Text; rawArgs.StudentBusinessFarmNetWorth = inputStudentBusinessFarmNetWorth.Text; rawArgs.HasDependents = inputHasDependents.SelectedValue; rawArgs.NumberInHousehold = inputNumberInHousehold.Text; rawArgs.NumberInCollege = inputNumberInCollege.Text; rawArgs.MonthsOfEnrollment = "9"; rawArgs.IsQualifiedForSimplified = "false"; // Validate user input AidEstimationValidator validator = new AidEstimationValidator(); IndependentEfcCalculatorArguments args = validator.ValidateIndependentEfcCalculatorArguments(rawArgs); // If validation fails, display errors if (validator.Errors.Any()) { errorList.DataSource = validator.Errors; errorList.DataBind(); return; } // Calculate EfcCalculator calculator = EfcCalculatorConfigurationManager.GetEfcCalculator("2021"); EfcProfile profile = calculator.GetIndependentEfcProfile(args); // Display Results formPlaceholder.Visible = false; resultsPlaceholder.Visible = true; studentContributionOutput.Text = profile.StudentContribution.ToString("C0"); expectedFamilyContributionOutput.Text = profile.ExpectedFamilyContribution.ToString("C0"); CostOfAttendanceEstimator coaEstimator = CostOfAttendanceEstimatorConfigurationManager.GetCostOfAttendanceEstimator("2021"); CostOfAttendance coa = coaEstimator.GetCostOfAttendance(EducationLevel.Undergraduate, (HousingOption)Enum.Parse(typeof(HousingOption), inputHousing.SelectedValue)); tuitionFeesOutput.Text = coa.Items[0].Value.ToString("C0"); roomBoardOutput.Text = coa.Items[1].Value.ToString("C0"); booksSuppliesOutput.Text = coa.Items[2].Value.ToString("C0"); otherExpensesOutput.Text = coa.Items[3].Value.ToString("C0"); healthInsuranceOutput.Text = coa.Items[4].Value.ToString("C0"); totalCostOutput.Text = coa.Total.ToString("C0"); grantAwardOutput.Text = "$99,999"; // placeholder selfHelpAwardOutput.Text = "$99,999"; // placeholder familyHelpAwardOutput.Text = "$99,999"; // placeholder estimatedGrantOutput.Text = "$99,999"; // placeholder estimatedNetCostOutput.Text = "$99,999"; // placeholder percentageGrantOutput.Text = ConfigurationManager.AppSettings["PercentageGrant.Independent.1920"]; } else { //Enable client-side validators where no default value is defined inputStudentAge.Attributes.Add("onblur", "ValidatorValidate(document.getElementById('" + inputStudentAge.ClientID + "').Validators[0]);"); inputSpouseWorkIncome.Attributes.Add("onblur", "ValidatorValidate(document.getElementById('" + inputSpouseWorkIncome.ClientID + "').Validators[0]);"); inputStudentWorkIncome.Attributes.Add("onblur", "ValidatorValidate(document.getElementById('" + inputStudentWorkIncome.ClientID + "').Validators[0]);"); // enable or disable validators linked to radio button lists inputStudentWorking.Items[0].Attributes.Add("onclick", "ValidatorEnable(document.getElementById('" + inputStudentWorkIncome.ClientID + "').Validators[0], true); "); inputStudentWorking.Items[1].Attributes.Add("onclick", "ValidatorEnable(document.getElementById('" + inputStudentWorkIncome.ClientID + "').Validators[0], false); "); inputSpouseWorking.Items[0].Attributes.Add("onclick", "ValidatorEnable(document.getElementById('" + inputSpouseWorkIncome.ClientID + "').Validators[0], true); "); inputSpouseWorking.Items[1].Attributes.Add("onclick", "ValidatorEnable(document.getElementById('" + inputSpouseWorkIncome.ClientID + "').Validators[0], false); "); inputStudentTaxFiler.Items[0].Attributes.Add("onclick", "ValidatorEnable(document.getElementById('" + inputStudentAgi.ClientID + "').Validators[0], true); ValidatorEnable(document.getElementById('" + inputStudentIncomeTax.ClientID + "').Validators[0], true);"); inputStudentTaxFiler.Items[1].Attributes.Add("onclick", "ValidatorEnable(document.getElementById('" + inputStudentAgi.ClientID + "').Validators[0], false); ValidatorEnable(document.getElementById('" + inputStudentIncomeTax.ClientID + "').Validators[0], false);"); } }