/// <summary> /// Overload version that constructs <see cref="EfcCalculator"/>s using the paths to XML files passed. /// </summary> /// <param name="key"></param> /// <param name="xmlSourcePath"></param> /// <returns></returns> public static EfcCalculator GetEfcCalculator(string key, string xmlSourcePath) { if (String.IsNullOrEmpty(key)) { throw new ArgumentException("No EFC Calculator key provided"); } if (_cache.ContainsKey(key)) { return(_cache[key]); } if (String.IsNullOrEmpty(xmlSourcePath)) { throw new ArgumentException("No source path was specified for the EFC Calculator in appSettings"); } // If a relative web path is used, resolve the application's physical path if (xmlSourcePath.StartsWith(RelativePathPlaceholder)) { xmlSourcePath = xmlSourcePath.Replace(RelativePathPlaceholder, HostingEnvironment.ApplicationPhysicalPath); } EfcCalculatorFactory factory = new EfcCalculatorFactory(xmlSourcePath); EfcCalculator calculator = factory.GetEfcCalculator(); _cache[key] = calculator; return(calculator); }
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.Count > 0) { errorList.DataSource = validator.Errors; errorList.DataBind(); return; } // Calculate EfcCalculator calculator = EfcCalculatorConfigurationManager.GetEfcCalculator("2122"); EfcProfile profile = calculator.GetIndependentEfcProfile(args); // Display Results formPlaceholder.Visible = false; resultsPlaceholder.Visible = true; studentContributionOutput.Text = profile.StudentContribution.ToString(); expectedFamilyContributionOutput.Text = profile.ExpectedFamilyContribution.ToString(); } }
protected void Page_Load(object sender, EventArgs e) { if (IsPostBack) { // Collect user input RawSimpleDependentEfcCalculatorArguments rawArgs = new RawSimpleDependentEfcCalculatorArguments(); rawArgs.MaritalStatus = inputMaritalStatus.SelectedValue; rawArgs.StateOfResidency = inputStateOfResidency.SelectedValue; rawArgs.ParentIncome = inputParentIncome.Text; rawArgs.ParentOtherIncome = inputParentOtherIncome.Text; rawArgs.ParentIncomeEarnedBy = inputParentIncomeEarnedBy.SelectedValue; rawArgs.ParentIncomeTax = inputParentIncomeTax.Text; rawArgs.ParentAssets = inputParentAssets.Text; rawArgs.StudentIncome = inputStudentIncome.Text; rawArgs.StudentOtherIncome = inputStudentOtherIncome.Text; rawArgs.StudentIncomeTax = inputStudentIncomeTax.Text; rawArgs.StudentAssets = inputStudentAssets.Text; rawArgs.NumberInCollege = inputNumberInCollege.Text; rawArgs.NumberInHousehold = inputNumberInHousehold.Text; // Validate user input AidEstimationValidator validator = new AidEstimationValidator(); DependentEfcCalculatorArguments args = validator.ValidateSimpleDependentEfcCalculatorArguments(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.GetDependentEfcProfile(args); // Display Results formPlaceholder.Visible = false; resultsPlaceholder.Visible = true; studentContributionOutput.Text = profile.StudentContribution.ToString(); parentContributionOutput.Text = profile.ParentContribution.ToString(); expectedFamilyContributionOutput.Text = profile.ExpectedFamilyContribution.ToString(); } }
public void Init() { EfcCalculatorConstants constants = TestConstantsFactory.GetEfcCalculatorConstants(); IncomeCalculator incomeCalculator = new IncomeCalculator(TestConstantsFactory.GetIncomeCalculatorConstants()); AllowanceCalculator allowanceCalculator = new AllowanceCalculator(TestConstantsFactory.GetAllowanceCalculatorConstants()); AssetContributionCalculator assetContributionCalculator = new AssetContributionCalculator(TestConstantsFactory.GetAssetContributionCalculatorConstants()); AaiContributionCalculator aaiContributionCalculator = new AaiContributionCalculator(TestConstantsFactory.GetAaiContributionCalculatorConstants()); _efcCalculator = new EfcCalculator(constants, incomeCalculator, allowanceCalculator, assetContributionCalculator, aaiContributionCalculator); }
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)); } }
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);"); } }