public ListQueryResult <CreditTypeDto> GetCreditTypesDto(SelectCreditTypesQuery query) { var creditsRes = _creditTypeService.GetAllModelDtos(new AllModelsQuery()); if (creditsRes.IsFailed) { return(new ListQueryResult <CreditTypeDto>(query, Enumerable.Empty <CreditTypeDto>(), false).From(creditsRes)); } var credits = creditsRes.Value.Where(c => { foreach (var condition in c.CreditConditions) { if (condition.MonthDurationFrom > query.MonthDuration || query.MonthDuration > condition.MonthDurationTo) { continue; } if (condition.MinCreditSum.Currency.Id != query.CreditSumCurrencyId) { continue; } if (condition.MinCreditSum.Value > query.CreditSumValue || query.CreditSumValue > condition.MaxCreditSum.Value) { continue; } return(true); } return(false); }); return(new ListQueryResult <CreditTypeDto>(query, credits, true)); }
public decimal GetAveragePayment(SelectCreditTypesQuery query, CreditTypeViewModel creditType) { var debt = query.CreditSumValue / query.MonthDuration; var interest = (decimal)creditType.InterestRate / 12 * query.CreditSumValue; return(debt + interest); }
public ActionResult ChooseCredits(SelectCreditTypesQuery query = null) { ViewBag.Currency = _currencies.Select(model => new SelectListItem { Value = model.Id.ToString(), Text = model.Name }); ViewBag.Query = query ?? new SelectCreditTypesQuery(); if (string.IsNullOrEmpty(Request.Params["MonthDuration"])) { return(View()); } var types = _clientService.GetCreditTypes(query).Value; return(View(types)); }
public async Task <ListQueryResult <CreditTypeViewModel> > GetCreditTypesAsync(SelectCreditTypesQuery query) { var creditsRes = await _creditTypeService.GetAllModelsAsync(new AllModelsQuery()); if (creditsRes.IsFailed) { return(new ListQueryResult <CreditTypeViewModel>(query, Enumerable.Empty <CreditTypeViewModel>(), false).From(creditsRes)); } var credits = creditsRes.Value.Where(c => { if (c.IsArchived) { return(false); } foreach (var condition in c.CreditConditions) { if (condition.MonthDurationFrom > query.MonthDuration || query.MonthDuration > condition.MonthDurationTo) { continue; } if (condition.MinCreditSum.Currency.Id != query.CreditSumCurrencyId) { continue; } if (condition.MinCreditSum.Value > query.CreditSumValue || query.CreditSumValue > condition.MaxCreditSum.Value) { continue; } if (query.SumReadyToPay < _creditTypeService.GetAveragePayment(query, c)) { continue; } return(true); } return(false); }); return(new ListQueryResult <CreditTypeViewModel>(query, credits, true)); }
public decimal MaxMonthPayment(SelectCreditTypesQuery query, CreditTypeViewModel creditType) { return(creditType.CreditConditions.Where(c => c.MaxCreditSum.Currency.Id == query.CreditSumCurrencyId) .Max(cond => GetMaxMonthPaymentForCondition(creditType, cond))); }