Exemple #1
0
        public async Task <HousingBudget> Run(string clientId)
        {
            var availableBudgetTask = budgetEvaluator.CalculateAvailableMonthlyBudget(clientId);
            var loanPreferencesTask = loanPreferencesRepository.Get(clientId);
            var listingsTask        = savedListingsRepository.Get(clientId);

            var availableBudget = await availableBudgetTask;
            var loanPreferences = await loanPreferencesTask;
            var listings        = await listingsTask;

            var percentageForDownPayment = loanPreferences.PercentageForDownPayment;
            var termInMonths             = loanPreferences.TermInMonths;
            var rate = loanPreferences.Rate;

            var evaluatedListingsTasks = listings
                                         .Listings
                                         .Select(listing => Task.Run(() => listingsEvaluator.Evaluate(availableBudget, percentageForDownPayment, termInMonths, rate, listing)))
                                         .ToList();

            var evaluatedListings = await Task.WhenAll(evaluatedListingsTasks);

            var housingBudget = new HousingBudget();

            housingBudget.AvailableMonthlyBudgetForMortgage = Decimal.Round(availableBudget, 2);
            housingBudget.LoanTermInMonths  = termInMonths;
            housingBudget.LoanRate          = rate;
            housingBudget.EvaluatedListings = evaluatedListings.ToList();

            return(housingBudget);
        }
 public async Task <ActionResult <SavedListings> > Get(string clientId)
 {
     return(await savedListingsRepository.Get(clientId));
 }