public function doDepositCalculation() { App::setLocale(Cookie::get('locale', 'ru')); $isMain = intval(Input::get('is_main')); $depositAmount = intval(trim(Input::get('deposit_amount'))); $term = intval(trim(Input::get('term'))); $monthlyInstallment = intval(trim(Input::get('monthly_installment'))); $currency = trim(Input::get('currency')); $interestPaymentType = trim(Input::get('interest_payment_type')); $interestPaymentPercent = trim(Input::get('interest_payment_percent')); if (!$depositAmount || !$term || !$currency) { return Response::json(array('status' => false)); } $calculator = new DepositCalculator(); $calculator->setDepositAmount($depositAmount); $calculator->setTerm($term); $calculator->setMonthlyInstallment($monthlyInstallment); $calculator->setCurrency($currency); $viewTemplate = 'partials.calculators.partials.deposit_table_main'; $sliderHtml = ''; if (!$isMain) { $calculator->setInterestPaymentType($interestPaymentType); $calculator->setInterestPaymentPercent($interestPaymentPercent); $calculator->setIsMain(false); $viewTemplate = 'partials.calculators.partials.deposit_table'; } $calculations = $calculator->calculate(); if (!$isMain) { $depositsIds = Tree::getDepositsCompared(); $depositsCatalog = Cache::tags('j_tree')->rememberForever('deposits_catalog_' . App::getLocale(), function () { return Tree::find(Collector::get('idDepositsCatalog')); }); $deposits = Cache::tags('j_tree')->rememberForever('deposits_products_' . App::getLocale(), function () use($depositsCatalog) { return $depositsCatalog->children()->get(); }); $deposits = Tree::filterDepositsByIds($deposits, $depositsIds); $allDeposits = Cache::tags('deposits')->rememberForever('deposits_' . App::getLocale(), function () { return Deposit::all(); }); $depositOptionsGroups = Deposit::prepareData($allDeposits); $sliderHtml = View::make('private-persons.deposits.partials.deposits_slider', compact('deposits', 'depositOptionsGroups', 'calculations'))->render(); } $html = View::make($viewTemplate, compact('result', 'currency', 'calculations'))->render(); $firstDepositData = array(); if ($calculations) { $firstDepositData = array_values($calculations)[0]; } return Response::json(array('status' => true, 'html' => $html, 'slider_html' => $sliderHtml, 'currency' => isset($calculations['currency']) ? $calculations['currency'] : '', 'result' => isset($calculations['sum']) ? $calculations['sum'] : '', 'sum' => $firstDepositData['sum'])); }
$cities = Cache::tags('cities')->rememberForever('cities_' . App::getLocale(), function () { return City::active()->get(); }); $shops = Cache::tags('shops')->rememberForever('shops_' . App::getLocale(), function () { return Shop::active()->get(); }); $products = Cache::tags('products')->rememberForever('products_' . App::getLocale(), function () { return Product::active()->get(); }); $view->with('cities', $cities)->with('shops', $shops)->with('products', $products); }); View::composer('partials.calculators.cards', function ($view) { $programs = Cache::tags('j_tree', 'cards_programs')->rememberForever('privates_cards_programs_' . App::getLocale(), function () { return CardProgram::active()->get(); }); $cards = Cache::tags('j_tree', 'cards')->rememberForever('privates_cards_' . App::getLocale(), function () { $cardsCatalog = Tree::find(Collector::get('idCardsCatalog')); return $cardsCatalog->immediateDescendants()->with('cardsPrograms')->active()->get(); }); $view->with('programs', $programs)->with('cards', $cards); }); View::composer('partials.calculators.want_multiply', function ($view) { $calculatorDeposit = new DepositCalculator(); $calculatorDeposit->setDepositAmount(Settings::get('deposit_amount_default', 100000)); $calculatorDeposit->setTerm(Settings::get('term_default', 3)); $calculatorDeposit->setMonthlyInstallment(0); $calculatorDeposit->setCurrency('uah'); $calculatorDeposit->setIsMain(true); $calculations = $calculatorDeposit->calculate(); $view->with('calculations', $calculations); });
public function showDepositsCatalog() { $page = $this->node; $tree = Collector::get('root'); $subTree = Tree::getSubTree($tree, $page); $blocks = null; $calculations = array(); if ($subTree) { $blocks = $subTree->children; $depositsContainer = $blocks->filter(function ($block) { return $block->slug == 'products'; }); if ($depositsContainer->isEmpty()) { $deposits = array(); } else { $deposits = $depositsContainer->first()->children; } $filteredDepositEntities = Cache::tags('deposits')->rememberForever('deposits_default_' . App::getLocale(), function () { return Deposit::amountFrom(3000)->terms(array(0, 3))->withoutMonthly()->currency('uah')->get(); }); $filteredDepositEntitiesIds = array(); foreach ($filteredDepositEntities as $filteredDepositEntity) { $filteredDepositEntitiesIds[] = $filteredDepositEntity->id_tb_tree; } Tree::setDepositsCompared($filteredDepositEntitiesIds); $deposits = Tree::filterDepositsByIds($deposits, $filteredDepositEntitiesIds); $maxPercents = Deposit::prepareMaxPercents($filteredDepositEntities); $depositOptionsGroups = Deposit::prepareData($filteredDepositEntities); $calculator = new DepositCalculator(); $calculator->setDepositAmount(Settings::get('deposit_amount_default', 100000)); $calculator->setTerm(Settings::get('term_default', 3)); $calculator->setMonthlyInstallment(0); $calculator->setCurrency('uah'); $calculator->setInterestPaymentType($maxPercents['max_percent_type']); $calculator->setInterestPaymentPercent($maxPercents['max_percent']); $calculator->setIsMain(false); $calculations = $calculator->calculate(); } return View::make('private-persons.deposits.catalog', compact('page', 'blocks', 'deposits', 'depositOptionsGroups', 'maxPercents', 'calculations')); }