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 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);
        }
コード例 #6
0
        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 void Total_NoItems_EqualsZero()
 {
     CostOfAttendance coa = new CostOfAttendance();
     Assert.AreEqual(0, coa.Total);
 }
        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);
        }
コード例 #10
0
        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);");
            }
        }