| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | <?php | 
					
						
							| 
									
										
										
										
											2024-11-25 04:18:55 +01:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | /** | 
					
						
							|  |  |  |  * EditController.php | 
					
						
							| 
									
										
										
										
											2020-01-31 07:32:04 +01:00
										 |  |  |  * Copyright (c) 2019 james@firefly-iii.org | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This file is part of Firefly III (https://github.com/firefly-iii). | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * 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. | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * This program is distributed in the hope that it will be useful, | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |  * but WITHOUT ANY WARRANTY; without even the implied warranty of | 
					
						
							|  |  |  |  * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * GNU Affero General Public License for more details. | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |  * | 
					
						
							| 
									
										
										
										
											2019-10-02 06:37:26 +02:00
										 |  |  |  * 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/>. | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |  */ | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | declare(strict_types=1); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  | namespace FireflyIII\Http\Controllers\Account; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-19 08:58:55 +01:00
										 |  |  | use FireflyIII\Helpers\Attachments\AttachmentHelperInterface; | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | use FireflyIII\Http\Controllers\Controller; | 
					
						
							|  |  |  | use FireflyIII\Http\Requests\AccountFormRequest; | 
					
						
							|  |  |  | use FireflyIII\Models\Account; | 
					
						
							|  |  |  | use FireflyIII\Repositories\Account\AccountRepositoryInterface; | 
					
						
							| 
									
										
										
										
											2019-06-22 10:25:34 +02:00
										 |  |  | use FireflyIII\Support\Http\Controllers\ModelInformation; | 
					
						
							| 
									
										
										
										
											2020-03-17 15:01:00 +01:00
										 |  |  | use Illuminate\Contracts\View\Factory; | 
					
						
							|  |  |  | use Illuminate\Http\RedirectResponse; | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | use Illuminate\Http\Request; | 
					
						
							| 
									
										
										
										
											2020-03-17 15:01:00 +01:00
										 |  |  | use Illuminate\Routing\Redirector; | 
					
						
							| 
									
										
										
										
											2023-12-30 10:14:35 +01:00
										 |  |  | use Illuminate\Support\Facades\Log; | 
					
						
							| 
									
										
										
										
											2020-03-17 15:01:00 +01:00
										 |  |  | use Illuminate\View\View; | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  | /** | 
					
						
							|  |  |  |  * Class EditController | 
					
						
							|  |  |  |  */ | 
					
						
							|  |  |  | class EditController extends Controller | 
					
						
							|  |  |  | { | 
					
						
							| 
									
										
										
										
											2021-04-06 17:00:16 +02:00
										 |  |  |     use ModelInformation; | 
					
						
							| 
									
										
										
										
											2021-03-28 11:46:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-03 06:48:53 +01:00
										 |  |  |     private AttachmentHelperInterface  $attachments; | 
					
						
							|  |  |  |     private AccountRepositoryInterface $repository; | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2018-07-20 20:53:48 +02:00
										 |  |  |      * EditController constructor. | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function __construct() | 
					
						
							|  |  |  |     { | 
					
						
							|  |  |  |         parent::__construct(); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // translations:
 | 
					
						
							|  |  |  |         $this->middleware( | 
					
						
							|  |  |  |             function ($request, $next) { | 
					
						
							|  |  |  |                 app('view')->share('mainTitleIcon', 'fa-credit-card'); | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |                 app('view')->share('title', (string) trans('firefly.accounts')); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2023-01-03 06:48:53 +01:00
										 |  |  |                 $this->repository  = app(AccountRepositoryInterface::class); | 
					
						
							|  |  |  |                 $this->attachments = app(AttachmentHelperInterface::class); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |                 return $next($request); | 
					
						
							|  |  |  |             } | 
					
						
							|  |  |  |         ); | 
					
						
							|  |  |  |     } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |     /** | 
					
						
							| 
									
										
										
										
											2023-12-22 20:12:38 +01:00
										 |  |  |      * Edit account overview. It's complex, but it just has a lot of if/then/else. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2025-01-03 15:53:10 +01:00
										 |  |  |      * @SuppressWarnings("PHPMD.NPathComplexity") | 
					
						
							| 
									
										
										
										
											2018-07-20 20:53:48 +02:00
										 |  |  |      * | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |      * @return Factory|Redirector|RedirectResponse|View | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function edit(Request $request, Account $account, AccountRepositoryInterface $repository) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-08-17 08:29:35 +02:00
										 |  |  |         if (!$this->isEditableAccount($account)) { | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |             return $this->redirectAccountToAccount($account); | 
					
						
							| 
									
										
										
										
											2019-08-17 08:29:35 +02:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $objectType           = config('firefly.shortNamesByFullName')[$account->accountType->type]; | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |         $subTitle             = (string) trans(sprintf('firefly.edit_%s_account', $objectType), ['name' => $account->name]); | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $subTitleIcon         = config(sprintf('firefly.subIconsByIdentifier.%s', $objectType)); | 
					
						
							|  |  |  |         $roles                = $this->getRoles(); | 
					
						
							|  |  |  |         $liabilityTypes       = $this->getLiabilityTypes(); | 
					
						
							|  |  |  |         $location             = $repository->getLocation($account); | 
					
						
							|  |  |  |         $latitude             = null !== $location ? $location->latitude : config('firefly.default_location.latitude'); | 
					
						
							|  |  |  |         $longitude            = null !== $location ? $location->longitude : config('firefly.default_location.longitude'); | 
					
						
							|  |  |  |         $zoomLevel            = null !== $location ? $location->zoom_level : config('firefly.default_location.zoom_level'); | 
					
						
							| 
									
										
										
										
											2024-12-28 10:58:01 +01:00
										 |  |  |         $canEditCurrency      = 0 === $account->piggyBanks()->count(); | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $hasLocation          = null !== $location; | 
					
						
							|  |  |  |         $locations            = [ | 
					
						
							| 
									
										
										
										
											2019-12-30 12:12:08 +01:00
										 |  |  |             'location' => [ | 
					
						
							| 
									
										
										
										
											2023-12-10 06:51:59 +01:00
										 |  |  |                 'latitude'     => null !== old('location_latitude') ? old('location_latitude') : $latitude, | 
					
						
							| 
									
										
										
										
											2023-11-05 09:40:45 +01:00
										 |  |  |                 'longitude'    => null !== old('location_longitude') ? old('location_longitude') : $longitude, | 
					
						
							|  |  |  |                 'zoom_level'   => null !== old('location_zoom_level') ? old('location_zoom_level') : $zoomLevel, | 
					
						
							| 
									
										
										
										
											2019-12-30 12:12:08 +01:00
										 |  |  |                 'has_location' => $hasLocation || 'true' === old('location_has_location'), | 
					
						
							|  |  |  |             ], | 
					
						
							|  |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2018-08-05 18:59:15 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $liabilityDirections  = [ | 
					
						
							| 
									
										
										
										
											2021-04-10 17:56:09 +02:00
										 |  |  |             'debit'  => trans('firefly.liability_direction_debit'), | 
					
						
							|  |  |  |             'credit' => trans('firefly.liability_direction_credit'), | 
					
						
							|  |  |  |         ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-08-05 18:59:15 +02:00
										 |  |  |         // interest calculation periods:
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $interestPeriods      = [ | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |             'daily'   => (string) trans('firefly.interest_calc_daily'), | 
					
						
							|  |  |  |             'monthly' => (string) trans('firefly.interest_calc_monthly'), | 
					
						
							|  |  |  |             'yearly'  => (string) trans('firefly.interest_calc_yearly'), | 
					
						
							| 
									
										
										
										
											2018-08-05 18:59:15 +02:00
										 |  |  |         ]; | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |         // put previous url in session if not redirect from store (not "return_to_edit").
 | 
					
						
							|  |  |  |         if (true !== session('accounts.edit.fromUpdate')) { | 
					
						
							| 
									
										
										
										
											2022-04-12 18:19:30 +02:00
										 |  |  |             $this->rememberPreviousUrl('accounts.edit.url'); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |         } | 
					
						
							|  |  |  |         $request->session()->forget('accounts.edit.fromUpdate'); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2025-01-15 18:54:49 +01:00
										 |  |  |         $openingBalanceAmount = (string) $repository->getOpeningBalanceAmount($account, false); | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |         if ('0' === $openingBalanceAmount) { | 
					
						
							| 
									
										
										
										
											2021-04-27 07:55:54 +02:00
										 |  |  |             $openingBalanceAmount = ''; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $openingBalanceDate   = $repository->getOpeningBalanceDate($account); | 
					
						
							| 
									
										
										
										
											2024-12-30 10:51:34 +01:00
										 |  |  |         $currency             = $this->repository->getAccountCurrency($account) ?? $this->defaultCurrency; | 
					
						
							| 
									
										
										
										
											2018-08-26 18:40:38 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // include this account in net-worth charts?
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $includeNetWorth      = $repository->getMetaValue($account, 'include_net_worth'); | 
					
						
							|  |  |  |         $includeNetWorth      = null === $includeNetWorth ? true : '1' === $includeNetWorth; | 
					
						
							| 
									
										
										
										
											2024-01-02 15:51:34 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         // issue #8321
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $showNetWorth         = true; | 
					
						
							| 
									
										
										
										
											2024-01-02 15:51:34 +01:00
										 |  |  |         if ('liabilities' !== $objectType && 'asset' !== $objectType) { | 
					
						
							|  |  |  |             $showNetWorth = false; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-08-26 18:40:38 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |         // code to handle active-checkboxes
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $hasOldInput          = null !== $request->old('_token'); | 
					
						
							|  |  |  |         $virtualBalance       = null === $account->virtual_balance ? '0' : $account->virtual_balance; | 
					
						
							|  |  |  |         $preFilled            = [ | 
					
						
							| 
									
										
										
										
											2019-06-22 05:51:32 +02:00
										 |  |  |             'account_number'          => $repository->getMetaValue($account, 'account_number'), | 
					
						
							|  |  |  |             'account_role'            => $repository->getMetaValue($account, 'account_role'), | 
					
						
							|  |  |  |             'cc_type'                 => $repository->getMetaValue($account, 'cc_type'), | 
					
						
							|  |  |  |             'cc_monthly_payment_date' => $repository->getMetaValue($account, 'cc_monthly_payment_date'), | 
					
						
							|  |  |  |             'BIC'                     => $repository->getMetaValue($account, 'BIC'), | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |             'opening_balance_date'    => substr((string) $openingBalanceDate, 0, 10), | 
					
						
							| 
									
										
										
										
											2019-06-22 05:51:32 +02:00
										 |  |  |             'liability_type_id'       => $account->account_type_id, | 
					
						
							| 
									
										
										
										
											2022-12-24 05:06:39 +01:00
										 |  |  |             'opening_balance'         => app('steam')->bcround($openingBalanceAmount, $currency->decimal_places), | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |             'liability_direction'     => $this->repository->getMetaValue($account, 'liability_direction'), | 
					
						
							| 
									
										
										
										
											2022-12-24 05:48:04 +01:00
										 |  |  |             'virtual_balance'         => app('steam')->bcround($virtualBalance, $currency->decimal_places), | 
					
						
							| 
									
										
										
										
											2019-06-22 05:51:32 +02:00
										 |  |  |             'currency_id'             => $currency->id, | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |             'include_net_worth'       => $hasOldInput ? (bool) $request->old('include_net_worth') : $includeNetWorth, | 
					
						
							| 
									
										
										
										
											2019-06-22 05:51:32 +02:00
										 |  |  |             'interest'                => $repository->getMetaValue($account, 'interest'), | 
					
						
							|  |  |  |             'interest_period'         => $repository->getMetaValue($account, 'interest_period'), | 
					
						
							|  |  |  |             'notes'                   => $this->repository->getNoteText($account), | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |             'active'                  => $hasOldInput ? (bool) $request->old('active') : $account->active, | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |         ]; | 
					
						
							| 
									
										
										
										
											2022-03-29 14:58:06 +02:00
										 |  |  |         if ('' === $openingBalanceAmount) { | 
					
						
							| 
									
										
										
										
											2022-01-03 06:35:00 +01:00
										 |  |  |             $preFilled['opening_balance'] = ''; | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         $request->session()->flash('preFilled', $preFilled); | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-12-28 10:58:01 +01:00
										 |  |  |         return view('accounts.edit', compact('account', 'currency', 'canEditCurrency', 'showNetWorth', 'subTitle', 'subTitleIcon', 'locations', 'liabilityDirections', 'objectType', 'roles', 'preFilled', 'liabilityTypes', 'interestPeriods')); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |     } | 
					
						
							| 
									
										
										
										
											2021-03-28 11:46:23 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |     /** | 
					
						
							| 
									
										
										
										
											2018-07-20 20:53:48 +02:00
										 |  |  |      * Update the account. | 
					
						
							|  |  |  |      * | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |      * @return $this|Redirector|RedirectResponse | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |      */ | 
					
						
							|  |  |  |     public function update(AccountFormRequest $request, Account $account) | 
					
						
							|  |  |  |     { | 
					
						
							| 
									
										
										
										
											2019-08-17 08:29:35 +02:00
										 |  |  |         if (!$this->isEditableAccount($account)) { | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |             return $this->redirectAccountToAccount($account); | 
					
						
							| 
									
										
										
										
											2019-08-17 08:29:35 +02:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $data     = $request->getAccountData(); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |         $this->repository->update($account, $data); | 
					
						
							| 
									
										
										
										
											2024-01-01 08:17:15 +01:00
										 |  |  |         Log::channel('audit')->info(sprintf('Updated account #%d.', $account->id), $data); | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |         $request->session()->flash('success', (string) trans('firefly.updated_account', ['name' => $account->name])); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							| 
									
										
										
										
											2020-03-19 09:01:35 +01:00
										 |  |  |         // store new attachment(s):
 | 
					
						
							| 
									
										
										
										
											2023-12-20 19:35:52 +01:00
										 |  |  |         /** @var null|array $files */ | 
					
						
							| 
									
										
										
										
											2024-01-02 20:19:09 +01:00
										 |  |  |         $files    = $request->hasFile('attachments') ? $request->file('attachments') : null; | 
					
						
							| 
									
										
										
										
											2020-05-07 06:44:01 +02:00
										 |  |  |         if (null !== $files && !auth()->user()->hasRole('demo')) { | 
					
						
							|  |  |  |             $this->attachments->saveAttachmentsForModel($account, $files); | 
					
						
							|  |  |  |         } | 
					
						
							|  |  |  |         if (null !== $files && auth()->user()->hasRole('demo')) { | 
					
						
							| 
									
										
										
										
											2024-01-09 20:48:17 +01:00
										 |  |  |             Log::channel('audit')->warning(sprintf('The demo user is trying to upload attachments in %s.', __METHOD__)); | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |             session()->flash('info', (string) trans('firefly.no_att_demo_user')); | 
					
						
							| 
									
										
										
										
											2020-05-07 06:44:01 +02:00
										 |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-03-19 08:58:55 +01:00
										 |  |  | 
 | 
					
						
							|  |  |  |         if (count($this->attachments->getMessages()->get('attachments')) > 0) { | 
					
						
							| 
									
										
										
										
											2021-09-18 10:26:12 +02:00
										 |  |  |             $request->session()->flash('info', $this->attachments->getMessages()->get('attachments')); | 
					
						
							| 
									
										
										
										
											2020-03-19 08:58:55 +01:00
										 |  |  |         } | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |         // redirect
 | 
					
						
							| 
									
										
										
										
											2022-04-12 18:19:30 +02:00
										 |  |  |         $redirect = redirect($this->getPreviousUrl('accounts.edit.url')); | 
					
						
							| 
									
										
										
										
											2024-12-22 08:43:12 +01:00
										 |  |  |         if (1 === (int) $request->get('return_to_edit')) { | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  |             // set value so edit routine will not overwrite URL:
 | 
					
						
							|  |  |  |             $request->session()->put('accounts.edit.fromUpdate', true); | 
					
						
							|  |  |  | 
 | 
					
						
							|  |  |  |             $redirect = redirect(route('accounts.edit', [$account->id]))->withInput(['return_to_edit' => 1]); | 
					
						
							|  |  |  |         } | 
					
						
							| 
									
										
										
										
											2020-10-24 07:18:37 +02:00
										 |  |  |         app('preferences')->mark(); | 
					
						
							| 
									
										
										
										
											2018-07-14 11:16:12 +02:00
										 |  |  | 
 | 
					
						
							|  |  |  |         return $redirect; | 
					
						
							|  |  |  |     } | 
					
						
							| 
									
										
										
										
											2018-07-22 20:32:02 +02:00
										 |  |  | } |