Beispiel #1
0
        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));
        }
Beispiel #2
0
        public decimal GetAveragePayment(SelectCreditTypesQuery query, CreditTypeViewModel creditType)
        {
            var debt     = query.CreditSumValue / query.MonthDuration;
            var interest = (decimal)creditType.InterestRate / 12 * query.CreditSumValue;

            return(debt + interest);
        }
Beispiel #3
0
        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));
        }
Beispiel #4
0
        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));
        }
Beispiel #5
0
 public decimal MaxMonthPayment(SelectCreditTypesQuery query, CreditTypeViewModel creditType)
 {
     return(creditType.CreditConditions.Where(c => c.MaxCreditSum.Currency.Id == query.CreditSumCurrencyId)
            .Max(cond => GetMaxMonthPaymentForCondition(creditType, cond)));
 }