| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2020-06-30 19:05:35 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * IndexController.php | 
					
						
							|  |  |  |  * Copyright (c) 2020 james@firefly-iii.org | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is free software: you can redistribute it and/or modify | 
					
						
							|  |  |  |  * it under the terms of the GNU Affero General Public License as | 
					
						
							|  |  |  |  * published by the Free Software Foundation, either version 3 of the | 
					
						
							|  |  |  |  * License, or (at your option) any later version. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							|  |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							|  |  |  |  * GNU Affero General Public License for more details. | 
					
						
							|  |  |  |  * | 
					
						
							|  |  |  |  * You should have received a copy of the GNU Affero General Public License | 
					
						
							|  |  |  |  * along with this program.  If not, see <https://www.gnu.org/licenses/>. | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Http\Controllers\PiggyBank; | 
					
						
							| 
									
										
										
										
											2021-03-28 11:46:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | use Carbon\Carbon; | 
					
						
							|  |  |  | use FireflyIII\Http\Controllers\Controller; | 
					
						
							| 
									
										
										
										
											2024-11-30 15:57:11 +01:00
										 |  |  | use FireflyIII\Models\Account; | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | use FireflyIII\Models\PiggyBank; | 
					
						
							| 
									
										
										
										
											2020-06-07 16:38:15 +02:00
										 |  |  | use FireflyIII\Repositories\ObjectGroup\OrganisesObjectGroups; | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface; | 
					
						
							| 
									
										
										
										
											2025-02-18 10:26:36 +01:00
										 |  |  | use FireflyIII\Support\JsonApi\Enrichments\AccountEnrichment; | 
					
						
							| 
									
										
										
										
											2025-08-06 09:18:29 +02:00
										 |  |  | use FireflyIII\Support\JsonApi\Enrichments\PiggyBankEnrichment; | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | use FireflyIII\Transformers\AccountTransformer; | 
					
						
							|  |  |  | use FireflyIII\Transformers\PiggyBankTransformer; | 
					
						
							| 
									
										
										
										
											2025-08-06 09:18:29 +02:00
										 |  |  | use FireflyIII\User; | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | use Illuminate\Contracts\View\Factory; | 
					
						
							|  |  |  | use Illuminate\Http\JsonResponse; | 
					
						
							|  |  |  | use Illuminate\Http\Request; | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  | use Illuminate\Support\Collection; | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | use Illuminate\View\View; | 
					
						
							|  |  |  | use Symfony\Component\HttpFoundation\ParameterBag; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Class IndexController | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class IndexController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2020-06-07 16:38:15 +02:00
										 |  |  |     use OrganisesObjectGroups; | 
					
						
							| 
									
										
										
										
											2021-03-28 11:46:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  |     private PiggyBankRepositoryInterface $piggyRepos; | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * PiggyBankController constructor. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function __construct() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::__construct(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         $this->middleware( | 
					
						
							|  |  |  |             function ($request, $next) { | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |                 app('view')->share('title', (string) trans('firefly.piggyBanks')); | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  |                 app('view')->share('mainTitleIcon', 'fa-bullseye'); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 $this->piggyRepos = app(PiggyBankRepositoryInterface::class); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |                 return $next($request); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Show overview of all piggy banks. | 
					
						
							| 
									
										
										
										
											2022-10-30 11:43:17 +01:00
										 |  |  |      * | 
					
						
							|  |  |  |      * TODO very complicated function. | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  |      * | 
					
						
							|  |  |  |      * @return Factory|View | 
					
						
							| 
									
										
										
										
											2023-12-22 20:12:38 +01:00
										 |  |  |      */ | 
					
						
							| 
									
										
										
										
											2023-11-29 06:30:35 +01:00
										 |  |  |     public function index() | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  |     { | 
					
						
							| 
									
										
										
										
											2020-06-07 16:38:15 +02:00
										 |  |  |         $this->cleanupObjectGroups(); | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         $this->piggyRepos->resetOrder(); | 
					
						
							| 
									
										
										
										
											2025-02-18 10:31:05 +01:00
										 |  |  |         $collection = $this->piggyRepos->getPiggyBanks(); | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  |         /** @var Carbon $end */ | 
					
						
							| 
									
										
										
										
											2025-02-18 10:31:05 +01:00
										 |  |  |         $end        = session('end', today(config('app.timezone'))->endOfMonth()); | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // transform piggies using the transformer:
 | 
					
						
							| 
									
										
										
										
											2025-02-18 10:31:05 +01:00
										 |  |  |         // $parameters         = new ParameterBag();
 | 
					
						
							|  |  |  |         // $parameters->set('end', $end);
 | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-18 10:31:05 +01:00
										 |  |  |         // /** @var AccountTransformer $accountTransformer */
 | 
					
						
							|  |  |  |         // $accountTransformer = app(AccountTransformer::class);
 | 
					
						
							|  |  |  |         // $accountTransformer->setParameters($parameters);
 | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         // data
 | 
					
						
							| 
									
										
										
										
											2025-02-18 10:31:05 +01:00
										 |  |  |         $piggyBanks = $this->groupPiggyBanks($collection); | 
					
						
							|  |  |  |         $accounts   = $this->collectAccounts($collection); | 
					
						
							|  |  |  |         $accounts   = $this->mergeAccountsAndPiggies($piggyBanks, $accounts); | 
					
						
							|  |  |  |         $piggyBanks = $this->makeSums($piggyBanks); | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-06-09 10:33:55 +02:00
										 |  |  |         ksort($piggyBanks); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2022-01-29 14:11:12 +01:00
										 |  |  |         return view('piggy-banks.index', compact('piggyBanks', 'accounts')); | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |     private function groupPiggyBanks(Collection $collection): array | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /** @var PiggyBankTransformer $transformer */ | 
					
						
							|  |  |  |         $transformer = app(PiggyBankTransformer::class); | 
					
						
							|  |  |  |         $transformer->setParameters(new ParameterBag()); | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |         $piggyBanks  = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-08-06 09:18:29 +02:00
										 |  |  |         // enrich
 | 
					
						
							|  |  |  |         /** @var User $admin */ | 
					
						
							|  |  |  |         $admin       = auth()->user(); | 
					
						
							|  |  |  |         $enrichment  = new PiggyBankEnrichment(); | 
					
						
							|  |  |  |         $enrichment->setUser($admin); | 
					
						
							| 
									
										
										
										
											2025-08-06 20:39:55 +02:00
										 |  |  |         $collection  = $enrichment->enrich($collection); | 
					
						
							| 
									
										
										
										
											2025-08-06 09:18:29 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         /** @var PiggyBank $piggy */ | 
					
						
							|  |  |  |         foreach ($collection as $piggy) { | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |             $array                                    = $transformer->transform($piggy); | 
					
						
							|  |  |  |             $groupOrder                               = (int) $array['object_group_order']; | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |             $piggyBanks[$groupOrder] ??= [ | 
					
						
							|  |  |  |                 'object_group_id'    => $array['object_group_id'] ?? 0, | 
					
						
							|  |  |  |                 'object_group_title' => $array['object_group_title'] ?? trans('firefly.default_group_title_name'), | 
					
						
							|  |  |  |                 'piggy_banks'        => [], | 
					
						
							|  |  |  |             ]; | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |             $array['attachments']                     = $this->piggyRepos->getAttachments($piggy); | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |             // sum the total amount for the index.
 | 
					
						
							|  |  |  |             $piggyBanks[$groupOrder]['piggy_banks'][] = $array; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         return $piggyBanks; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private function collectAccounts(Collection $collection): array | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         /** @var Carbon $end */ | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |         $end                = session('end', today(config('app.timezone'))->endOfMonth()); | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // transform piggies using the transformer:
 | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |         $parameters         = new ParameterBag(); | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         $parameters->set('end', $end); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         /** @var AccountTransformer $accountTransformer */ | 
					
						
							|  |  |  |         $accountTransformer = app(AccountTransformer::class); | 
					
						
							|  |  |  |         $accountTransformer->setParameters($parameters); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-02-18 10:26:36 +01:00
										 |  |  |         // enrich each account.
 | 
					
						
							| 
									
										
										
										
											2025-02-18 15:17:06 +01:00
										 |  |  |         $enrichment         = new AccountEnrichment(); | 
					
						
							| 
									
										
										
										
											2025-02-18 15:06:51 +01:00
										 |  |  |         $enrichment->setUser(auth()->user()); | 
					
						
							| 
									
										
										
										
											2025-08-03 10:22:12 +02:00
										 |  |  |         $enrichment->setDate($end); | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |         $return             = []; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         /** @var PiggyBank $piggy */ | 
					
						
							|  |  |  |         foreach ($collection as $piggy) { | 
					
						
							|  |  |  |             $accounts = $piggy->accounts; | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |             /** @var Account $account */ | 
					
						
							|  |  |  |             foreach ($accounts as $account) { | 
					
						
							| 
									
										
										
										
											2025-03-08 19:55:21 +01:00
										 |  |  |                 /** @var Account $account */ | 
					
						
							| 
									
										
										
										
											2025-02-18 10:31:05 +01:00
										 |  |  |                 $account   = $enrichment->enrichSingle($account); | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |                 $array     = $accountTransformer->transform($account); | 
					
						
							|  |  |  |                 $accountId = (int) $array['id']; | 
					
						
							|  |  |  |                 if (!array_key_exists($accountId, $return)) { | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  |                     $return[$accountId]            = $array; | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |                     // add some interesting details:
 | 
					
						
							|  |  |  |                     $return[$accountId]['left']    = $return[$accountId]['current_balance']; | 
					
						
							|  |  |  |                     $return[$accountId]['saved']   = '0'; | 
					
						
							|  |  |  |                     $return[$accountId]['target']  = '0'; | 
					
						
							|  |  |  |                     $return[$accountId]['to_save'] = '0'; | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         return $return; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     private function mergeAccountsAndPiggies(array $piggyBanks, array $accounts): array | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2025-01-04 07:10:37 +01:00
										 |  |  |         /** @var array $group */ | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         foreach ($piggyBanks as $group) { | 
					
						
							| 
									
										
										
										
											2025-01-04 07:10:37 +01:00
										 |  |  |             /** @var array $piggyBank */ | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |             foreach ($group['piggy_banks'] as $piggyBank) { | 
					
						
							|  |  |  |                 // loop all accounts in this piggy bank subtract the current amount from "left to save" in the $accounts array.
 | 
					
						
							|  |  |  |                 /** @var array $piggyAccount */ | 
					
						
							|  |  |  |                 foreach ($piggyBank['accounts'] as $piggyAccount) { | 
					
						
							| 
									
										
										
										
											2025-08-07 06:20:36 +02:00
										 |  |  |                     $accountId = $piggyAccount['account_id']; | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |                     if (array_key_exists($accountId, $accounts)) { | 
					
						
							| 
									
										
										
										
											2025-05-04 13:47:00 +02:00
										 |  |  |                         $accounts[$accountId]['left']    = bcsub((string) $accounts[$accountId]['left'], (string) $piggyAccount['current_amount']); | 
					
						
							|  |  |  |                         $accounts[$accountId]['saved']   = bcadd((string) $accounts[$accountId]['saved'], (string) $piggyAccount['current_amount']); | 
					
						
							|  |  |  |                         $accounts[$accountId]['target']  = bcadd((string) $accounts[$accountId]['target'], (string) $piggyBank['target_amount']); | 
					
						
							|  |  |  |                         $accounts[$accountId]['to_save'] = bcadd((string) $accounts[$accountId]['to_save'], bcsub((string) $piggyBank['target_amount'], (string) $piggyAccount['current_amount'])); | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |                     } | 
					
						
							|  |  |  |                 } | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-12-14 05:45:54 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-04 06:38:47 +01:00
										 |  |  |         return $accounts; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |     private function makeSums(array $piggyBanks): array | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $sums = []; | 
					
						
							|  |  |  |         foreach ($piggyBanks as $groupOrder => $group) { | 
					
						
							|  |  |  |             $groupId = $group['object_group_id']; | 
					
						
							|  |  |  |             foreach ($group['piggy_banks'] as $piggy) { | 
					
						
							|  |  |  |                 $currencyId                                    = $piggy['currency_id']; | 
					
						
							|  |  |  |                 $sums[$groupId][$currencyId] ??= [ | 
					
						
							|  |  |  |                     'target'                  => '0', | 
					
						
							|  |  |  |                     'saved'                   => '0', | 
					
						
							|  |  |  |                     'left_to_save'            => '0', | 
					
						
							|  |  |  |                     'save_per_month'          => '0', | 
					
						
							|  |  |  |                     'currency_id'             => $currencyId, | 
					
						
							|  |  |  |                     'currency_code'           => $piggy['currency_code'], | 
					
						
							|  |  |  |                     'currency_symbol'         => $piggy['currency_symbol'], | 
					
						
							|  |  |  |                     'currency_decimal_places' => $piggy['currency_decimal_places'], | 
					
						
							|  |  |  |                 ]; | 
					
						
							|  |  |  |                 // target_amount
 | 
					
						
							|  |  |  |                 // current_amount
 | 
					
						
							|  |  |  |                 // left_to_save
 | 
					
						
							|  |  |  |                 // save_per_month
 | 
					
						
							|  |  |  |                 $sums[$groupId][$currencyId]['target']         = bcadd($sums[$groupId][$currencyId]['target'], (string) $piggy['target_amount']); | 
					
						
							|  |  |  |                 $sums[$groupId][$currencyId]['saved']          = bcadd($sums[$groupId][$currencyId]['saved'], (string) $piggy['current_amount']); | 
					
						
							|  |  |  |                 $sums[$groupId][$currencyId]['left_to_save']   = bcadd($sums[$groupId][$currencyId]['left_to_save'], (string) $piggy['left_to_save']); | 
					
						
							|  |  |  |                 $sums[$groupId][$currencyId]['save_per_month'] = bcadd($sums[$groupId][$currencyId]['save_per_month'], (string) $piggy['save_per_month']); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         foreach ($piggyBanks as $groupOrder => $group) { | 
					
						
							|  |  |  |             $groupId                         = $group['object_group_id']; | 
					
						
							|  |  |  |             $piggyBanks[$groupOrder]['sums'] = $sums[$groupId] ?? []; | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return $piggyBanks; | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							|  |  |  |      * Set the order of a piggy bank. | 
					
						
							|  |  |  |      */ | 
					
						
							|  |  |  |     public function setOrder(Request $request, PiggyBank $piggyBank): JsonResponse | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         $objectGroupTitle = (string) $request->get('objectGroupTitle'); | 
					
						
							|  |  |  |         $newOrder         = (int) $request->get('order'); | 
					
						
							|  |  |  |         $this->piggyRepos->setOrder($piggyBank, $newOrder); | 
					
						
							|  |  |  |         if ('' !== $objectGroupTitle) { | 
					
						
							|  |  |  |             $this->piggyRepos->setObjectGroup($piggyBank, $objectGroupTitle); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if ('' === $objectGroupTitle) { | 
					
						
							|  |  |  |             $this->piggyRepos->removeObjectGroup($piggyBank); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         return response()->json(['data' => 'OK']); | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2020-06-07 11:30:02 +02:00
										 |  |  | } |