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 CostOfAttendanceKey(EducationLevel educationLevel, HousingOption housingOption)
 {
     EducationLevel = educationLevel;
     HousingOption  = housingOption;
 }
Exemplo n.º 3
0
        public CostOfAttendance GetCostOfAttendance(EducationLevel educationLevel, HousingOption housingOption)
        {
            CostOfAttendanceKey key = new CostOfAttendanceKey(educationLevel, housingOption);

            return(_constants.ContainsKey(key) ? _constants[key] : null);
        }
 public CostOfAttendance GetCostOfAttendance(EducationLevel educationLevel, HousingOption housingOption)
 {
     CostOfAttendanceKey key = new CostOfAttendanceKey(educationLevel, housingOption);
     return _constants.ContainsKey(key) ? _constants[key] : null;
 }
 public CostOfAttendanceKey(EducationLevel educationLevel, HousingOption housingOption)
 {
     EducationLevel = educationLevel;
     HousingOption = housingOption;
 }