mirror of
				https://github.com/firefly-iii/firefly-iii.git
				synced 2025-10-31 10:47:00 +00:00 
			
		
		
		
	Compare commits
	
		
			153 Commits
		
	
	
		
	
	| Author | SHA1 | Date | |
|---|---|---|---|
|  | 1a6bc6decd | ||
|  | 98b95ab891 | ||
|  | c3068d10bf | ||
|  | fa1a1b084b | ||
|  | 387e44b8b9 | ||
|  | 6dafa89a15 | ||
|  | 5b5b8008b0 | ||
|  | 38a955e663 | ||
|  | 62921df702 | ||
|  | c7c2b85882 | ||
|  | bc26ee5cde | ||
|  | 9eca31529c | ||
|  | 25e3abeeb8 | ||
|  | 53d6281ba4 | ||
|  | 4b9fd949ad | ||
|  | 786b4c18a1 | ||
|  | 97b65ac44c | ||
|  | 102da7b21e | ||
|  | 85bde79fd1 | ||
|  | 09a25957d0 | ||
|  | fd7a2181a4 | ||
|  | 2ede3b420b | ||
|  | 4bed30347d | ||
|  | ffdcab3220 | ||
|  | 956108399b | ||
|  | 61c38f2a99 | ||
|  | f3773ebfc2 | ||
|  | f963ac63f1 | ||
|  | 1368aafe5f | ||
|  | 657262f179 | ||
|  | 8b9dce70bb | ||
|  | 30bbd0b3a4 | ||
|  | d4488f041b | ||
|  | fa8dc1ae4b | ||
|  | c2b60edca3 | ||
|  | 949ca4f79e | ||
|  | ab0b03dd14 | ||
|  | 5b41e58025 | ||
|  | 88bf76fa27 | ||
|  | 3ad155882a | ||
|  | 4747e28621 | ||
|  | 5664695a92 | ||
|  | fdcd31652a | ||
|  | e5397b6659 | ||
|  | 51e5b9a994 | ||
|  | dc95632834 | ||
|  | 3e888382c9 | ||
|  | de8d6f8439 | ||
|  | 60543b8f1d | ||
|  | 268cec6d08 | ||
|  | 94aea91927 | ||
|  | 135a6993aa | ||
|  | 16079f496a | ||
|  | e318e8e9cf | ||
|  | 51ca8277bb | ||
|  | a49cf1fd3d | ||
|  | 81a11ee5b4 | ||
|  | b778424b7e | ||
|  | d408d7cc20 | ||
|  | 228870ceac | ||
|  | ae1939cd1b | ||
|  | f7a4bd5d12 | ||
|  | eec1888f87 | ||
|  | a42470e5b4 | ||
|  | 098f1fe0f6 | ||
|  | 2e5bc750d1 | ||
|  | d777a1f2b8 | ||
|  | 5178e19cea | ||
|  | be8aaa68af | ||
|  | 1e31a1184a | ||
|  | c269be7f07 | ||
|  | 6bf42ba237 | ||
|  | 1901648a05 | ||
|  | 789a6cebcd | ||
|  | 4230349c07 | ||
|  | 33b95b9371 | ||
|  | e47110607c | ||
|  | 1e3665e54f | ||
|  | 47147066d2 | ||
|  | 5b8f67e992 | ||
|  | fb1a66d872 | ||
|  | e594b9304a | ||
|  | 0d7fd36c38 | ||
|  | bdba786322 | ||
|  | 507e0fb54c | ||
|  | e4d91aa337 | ||
|  | 4e6fc8e2a2 | ||
|  | 244ffb2450 | ||
|  | 7aa3aef508 | ||
|  | c16f7d214f | ||
|  | c08d44ea48 | ||
|  | 6381d04e2b | ||
|  | ec43d10e35 | ||
|  | b32d9aab34 | ||
|  | de5cb4c165 | ||
|  | 609edb9dff | ||
|  | 636b3921fa | ||
|  | a391d731ff | ||
|  | c743b0c66b | ||
|  | ef09f88816 | ||
|  | ffeada037d | ||
|  | 4723d9dd30 | ||
|  | b84604a4db | ||
|  | 1bd1a9cba3 | ||
|  | d0c830c560 | ||
|  | 06d3cc3506 | ||
|  | 2b90c20db8 | ||
|  | ebe1fd6142 | ||
|  | ca8f153c6a | ||
|  | 581e5d7330 | ||
|  | 067d160c13 | ||
|  | e8890ada7c | ||
|  | c5fbf6ec55 | ||
|  | 5cd9793edf | ||
|  | c60b5e5c21 | ||
|  | b2bd9301b6 | ||
|  | 4864ecc0c7 | ||
|  | 58dea55d38 | ||
|  | 34e22e0747 | ||
|  | 7c9f74f550 | ||
|  | f0517aee53 | ||
|  | f69072d293 | ||
|  | 669aedeea3 | ||
|  | 8a4985261a | ||
|  | 337d14e71e | ||
|  | ebf4b00288 | ||
|  | a445bc53cd | ||
|  | 1f7ceb6df6 | ||
|  | 135b9fc010 | ||
|  | 655d03bec4 | ||
|  | bc50d25468 | ||
|  | e40bb81d80 | ||
|  | 53e972fbba | ||
|  | 51d244cfe6 | ||
|  | 3842552256 | ||
|  | c9d5d74662 | ||
|  | 4961b1f715 | ||
|  | 680012056b | ||
|  | 64ec0cf62e | ||
|  | c4f6366642 | ||
|  | 28021aa711 | ||
|  | bf5a15077d | ||
|  | 9506b37200 | ||
|  | ee41eadcd9 | ||
|  | 5ecc1929f9 | ||
|  | 1186359898 | ||
|  | aabf73d3e9 | ||
|  | da4e813d9a | ||
|  | cbcadb6706 | ||
|  | 9f0b4564cf | ||
|  | 327b0b4a37 | ||
|  | 77695409f6 | ||
|  | 92cdec2877 | 
							
								
								
									
										27
									
								
								.ci/all.sh
									
									
									
									
									
										Executable file
									
								
							
							
						
						
									
										27
									
								
								.ci/all.sh
									
									
									
									
									
										Executable file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| #!/usr/bin/env bash | ||||
|  | ||||
| # | ||||
| # all.sh | ||||
| # Copyright (c) 2024 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/>. | ||||
| # | ||||
|  | ||||
| SCRIPT_DIR="$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )" | ||||
|  | ||||
| $SCRIPT_DIR/phpcs.sh | ||||
| $SCRIPT_DIR/phpstan.sh | ||||
| $SCRIPT_DIR/phpmd.sh | ||||
| @@ -36,15 +36,35 @@ $finder = PhpCsFixer\Finder::create() | ||||
| 
 | ||||
| $config = new PhpCsFixer\Config(); | ||||
| return $config->setRules([ | ||||
|                              '@PHP83Migration'             => true, | ||||
|                              '@PhpCsFixer:risky'           => true, | ||||
|                              '@PSR12:risky'                => true, | ||||
|                              'declare_strict_types'        => true, | ||||
|                              'strict_param'                => true, | ||||
|                              'comment_to_phpdoc'           => false, // breaks phpstan lines in combination with PHPStorm.
 | ||||
|                              'array_syntax'                => ['syntax' => 'short'], | ||||
|                              'native_function_invocation'  => false, // annoying
 | ||||
|                              'php_unit_data_provider_name' => false, // bloody annoying long test names
 | ||||
|                              'static_lambda'               => false, // breaks the Response macro for API's.
 | ||||
|                              'no_unused_imports'             => true, | ||||
|                              '@PhpCsFixer'                   => true, | ||||
|                              '@PHP83Migration'               => true, | ||||
|                              '@PhpCsFixer:risky'             => true, | ||||
|                              '@PSR12:risky'                  => true, | ||||
|                              'declare_strict_types'          => true, | ||||
|                              'strict_param'                  => true, | ||||
|                              'comment_to_phpdoc'             => false, // breaks phpstan lines in combination with PHPStorm.
 | ||||
|                              'array_syntax'                  => ['syntax' => 'short'], | ||||
|                              'native_function_invocation'    => false, // annoying
 | ||||
|                              'php_unit_data_provider_name'   => false, // bloody annoying long test names
 | ||||
|                              'static_lambda'                 => false, // breaks the Response macro for API's.
 | ||||
|                              'phpdoc_summary'                => false, // annoying.
 | ||||
|                              'single_space_around_construct' => [ | ||||
|                                  'constructs_followed_by_a_single_space' => [ | ||||
|                                      'protected', | ||||
|                                  ], | ||||
|                              ], | ||||
|                              'statement_indentation'         => true, | ||||
|                              'type_declaration_spaces'       => false, | ||||
|                              'cast_spaces'                   => false, | ||||
|                              'binary_operator_spaces'        => [ | ||||
|                                  'default' => 'at_least_single_space', | ||||
|                                  'operators' => [ | ||||
|                                      '=>' => 'align_single_space_by_scope', | ||||
|                                      '='  => 'align_single_space_minimal_by_scope', | ||||
|                                      '??='  => 'align_single_space_minimal_by_scope', | ||||
|                                  ], | ||||
|                              ], | ||||
|                              'void_return'                   => true, | ||||
|                          ]) | ||||
|               ->setFinder($finder); | ||||
|   | ||||
							
								
								
									
										91
									
								
								.ci/php-cs-fixer/composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										91
									
								
								.ci/php-cs-fixer/composer.lock
									
									
									
										generated
									
									
									
								
							| @@ -226,16 +226,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "friendsofphp/php-cs-fixer", | ||||
|             "version": "v3.41.1", | ||||
|             "version": "v3.45.0", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git", | ||||
|                 "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6" | ||||
|                 "reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/8b6ae8dcbaf23f09680643ab832a4a3a260265f6", | ||||
|                 "reference": "8b6ae8dcbaf23f09680643ab832a4a3a260265f6", | ||||
|                 "url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", | ||||
|                 "reference": "c0daa33cb2533cd73f48dde1c70c2afa3e7953b5", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -265,8 +265,7 @@ | ||||
|                 "php-cs-fixer/accessible-object": "^1.1", | ||||
|                 "php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.4", | ||||
|                 "php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.4", | ||||
|                 "phpunit/phpunit": "^9.6", | ||||
|                 "symfony/phpunit-bridge": "^6.3.8 || ^7.0", | ||||
|                 "phpunit/phpunit": "^9.6 || ^10.5.5", | ||||
|                 "symfony/yaml": "^5.4 || ^6.0 || ^7.0" | ||||
|             }, | ||||
|             "suggest": { | ||||
| @@ -305,7 +304,7 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues", | ||||
|                 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.41.1" | ||||
|                 "source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.45.0" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -313,7 +312,7 @@ | ||||
|                     "type": "github" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-12-10T19:59:27+00:00" | ||||
|             "time": "2023-12-30T02:07:07+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "psr/container", | ||||
| @@ -470,16 +469,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "sebastian/diff", | ||||
|             "version": "5.0.3", | ||||
|             "version": "5.1.0", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/sebastianbergmann/diff.git", | ||||
|                 "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b" | ||||
|                 "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/912dc2fbe3e3c1e7873313cc801b100b6c68c87b", | ||||
|                 "reference": "912dc2fbe3e3c1e7873313cc801b100b6c68c87b", | ||||
|                 "url": "https://api.github.com/repos/sebastianbergmann/diff/zipball/fbf413a49e54f6b9b17e12d900ac7f6101591b7f", | ||||
|                 "reference": "fbf413a49e54f6b9b17e12d900ac7f6101591b7f", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -492,7 +491,7 @@ | ||||
|             "type": "library", | ||||
|             "extra": { | ||||
|                 "branch-alias": { | ||||
|                     "dev-main": "5.0-dev" | ||||
|                     "dev-main": "5.1-dev" | ||||
|                 } | ||||
|             }, | ||||
|             "autoload": { | ||||
| @@ -525,7 +524,7 @@ | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/sebastianbergmann/diff/issues", | ||||
|                 "security": "https://github.com/sebastianbergmann/diff/security/policy", | ||||
|                 "source": "https://github.com/sebastianbergmann/diff/tree/5.0.3" | ||||
|                 "source": "https://github.com/sebastianbergmann/diff/tree/5.1.0" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -533,20 +532,20 @@ | ||||
|                     "type": "github" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-05-01T07:48:21+00:00" | ||||
|             "time": "2023-12-22T10:55:06+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/console", | ||||
|             "version": "v7.0.1", | ||||
|             "version": "v7.0.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/console.git", | ||||
|                 "reference": "cdce5c684b2f920bb1343deecdfba356ffad83d5" | ||||
|                 "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/console/zipball/cdce5c684b2f920bb1343deecdfba356ffad83d5", | ||||
|                 "reference": "cdce5c684b2f920bb1343deecdfba356ffad83d5", | ||||
|                 "url": "https://api.github.com/repos/symfony/console/zipball/f8587c4cdc5acad67af71c37db34ef03af91e59c", | ||||
|                 "reference": "f8587c4cdc5acad67af71c37db34ef03af91e59c", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -610,7 +609,7 @@ | ||||
|                 "terminal" | ||||
|             ], | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/console/tree/v7.0.1" | ||||
|                 "source": "https://github.com/symfony/console/tree/v7.0.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -626,7 +625,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-12-01T15:10:06+00:00" | ||||
|             "time": "2023-12-10T16:54:46+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/deprecation-contracts", | ||||
| @@ -697,16 +696,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/event-dispatcher", | ||||
|             "version": "v7.0.0", | ||||
|             "version": "v7.0.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/event-dispatcher.git", | ||||
|                 "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e" | ||||
|                 "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/c459b40ffe67c49af6fd392aac374c9edf8a027e", | ||||
|                 "reference": "c459b40ffe67c49af6fd392aac374c9edf8a027e", | ||||
|                 "url": "https://api.github.com/repos/symfony/event-dispatcher/zipball/098b62ae81fdd6cbf941f355059f617db28f4f9a", | ||||
|                 "reference": "098b62ae81fdd6cbf941f355059f617db28f4f9a", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -757,7 +756,7 @@ | ||||
|             "description": "Provides tools that allow your application components to communicate with each other by dispatching events and listening to them", | ||||
|             "homepage": "https://symfony.com", | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.0" | ||||
|                 "source": "https://github.com/symfony/event-dispatcher/tree/v7.0.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -773,7 +772,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-07-27T16:29:09+00:00" | ||||
|             "time": "2023-12-27T22:24:19+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/event-dispatcher-contracts", | ||||
| @@ -1539,16 +1538,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/process", | ||||
|             "version": "v7.0.0", | ||||
|             "version": "v7.0.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/process.git", | ||||
|                 "reference": "13bdb1670c7f510494e04fcb2bfa29af63db9c0d" | ||||
|                 "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/process/zipball/13bdb1670c7f510494e04fcb2bfa29af63db9c0d", | ||||
|                 "reference": "13bdb1670c7f510494e04fcb2bfa29af63db9c0d", | ||||
|                 "url": "https://api.github.com/repos/symfony/process/zipball/acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", | ||||
|                 "reference": "acd3eb5cb02382c1cb0287ba29b2908cc6ffa83a", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -1580,7 +1579,7 @@ | ||||
|             "description": "Executes commands in sub-processes", | ||||
|             "homepage": "https://symfony.com", | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/process/tree/v7.0.0" | ||||
|                 "source": "https://github.com/symfony/process/tree/v7.0.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -1596,25 +1595,25 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-11-20T16:43:42+00:00" | ||||
|             "time": "2023-12-24T09:15:37+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/service-contracts", | ||||
|             "version": "v3.4.0", | ||||
|             "version": "v3.4.1", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/service-contracts.git", | ||||
|                 "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" | ||||
|                 "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", | ||||
|                 "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", | ||||
|                 "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", | ||||
|                 "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "php": ">=8.1", | ||||
|                 "psr/container": "^2.0" | ||||
|                 "psr/container": "^1.1|^2.0" | ||||
|             }, | ||||
|             "conflict": { | ||||
|                 "ext-psr": "<1.1|>=2" | ||||
| @@ -1662,7 +1661,7 @@ | ||||
|                 "standards" | ||||
|             ], | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" | ||||
|                 "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -1678,7 +1677,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-07-30T20:28:31+00:00" | ||||
|             "time": "2023-12-26T14:02:43+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/stopwatch", | ||||
| @@ -1744,16 +1743,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/string", | ||||
|             "version": "v7.0.0", | ||||
|             "version": "v7.0.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/string.git", | ||||
|                 "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620" | ||||
|                 "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/string/zipball/92bd2bfbba476d4a1838e5e12168bef2fd1e6620", | ||||
|                 "reference": "92bd2bfbba476d4a1838e5e12168bef2fd1e6620", | ||||
|                 "url": "https://api.github.com/repos/symfony/string/zipball/cc78f14f91f5e53b42044d0620961c48028ff9f5", | ||||
|                 "reference": "cc78f14f91f5e53b42044d0620961c48028ff9f5", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -1810,7 +1809,7 @@ | ||||
|                 "utf8" | ||||
|             ], | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/string/tree/v7.0.0" | ||||
|                 "source": "https://github.com/symfony/string/tree/v7.0.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -1826,7 +1825,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-11-29T08:40:23+00:00" | ||||
|             "time": "2023-12-10T16:54:46+00:00" | ||||
|         } | ||||
|     ], | ||||
|     "packages-dev": [], | ||||
|   | ||||
| @@ -44,8 +44,7 @@ EXIT_CODE=$? | ||||
|  | ||||
| cd $SCRIPT_DIR/.. | ||||
|  | ||||
| echo "Exit code is $EXIT_CODE, but we ignore this for the time being." | ||||
| echo "Exit code is $EXIT_CODE." | ||||
|  | ||||
| # for the time being, exit 0 | ||||
| #exit $EXIT_CODE | ||||
| exit 0 | ||||
| exit $EXIT_CODE | ||||
|   | ||||
							
								
								
									
										50
									
								
								.ci/phpmd/composer.lock
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										50
									
								
								.ci/phpmd/composer.lock
									
									
									
										generated
									
									
									
								
							| @@ -146,16 +146,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "pdepend/pdepend", | ||||
|             "version": "2.16.1", | ||||
|             "version": "2.16.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/pdepend/pdepend.git", | ||||
|                 "reference": "66ceb05eaa8bf358574143c974b04463911bc700" | ||||
|                 "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/pdepend/pdepend/zipball/66ceb05eaa8bf358574143c974b04463911bc700", | ||||
|                 "reference": "66ceb05eaa8bf358574143c974b04463911bc700", | ||||
|                 "url": "https://api.github.com/repos/pdepend/pdepend/zipball/f942b208dc2a0868454d01b29f0c75bbcfc6ed58", | ||||
|                 "reference": "f942b208dc2a0868454d01b29f0c75bbcfc6ed58", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -197,7 +197,7 @@ | ||||
|             ], | ||||
|             "support": { | ||||
|                 "issues": "https://github.com/pdepend/pdepend/issues", | ||||
|                 "source": "https://github.com/pdepend/pdepend/tree/2.16.1" | ||||
|                 "source": "https://github.com/pdepend/pdepend/tree/2.16.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -205,7 +205,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-12-10T18:38:19+00:00" | ||||
|             "time": "2023-12-17T18:09:59+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "phpmd/phpmd", | ||||
| @@ -470,16 +470,16 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/dependency-injection", | ||||
|             "version": "v7.0.1", | ||||
|             "version": "v7.0.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/dependency-injection.git", | ||||
|                 "reference": "f6667642954bce638733f254c39e5b5700b47ba4" | ||||
|                 "reference": "bd25ef7c937b9da12510bdc4f1c66728f19620e3" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/f6667642954bce638733f254c39e5b5700b47ba4", | ||||
|                 "reference": "f6667642954bce638733f254c39e5b5700b47ba4", | ||||
|                 "url": "https://api.github.com/repos/symfony/dependency-injection/zipball/bd25ef7c937b9da12510bdc4f1c66728f19620e3", | ||||
|                 "reference": "bd25ef7c937b9da12510bdc4f1c66728f19620e3", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -530,7 +530,7 @@ | ||||
|             "description": "Allows you to standardize and centralize the way objects are constructed in your application", | ||||
|             "homepage": "https://symfony.com", | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/dependency-injection/tree/v7.0.1" | ||||
|                 "source": "https://github.com/symfony/dependency-injection/tree/v7.0.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -546,7 +546,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-12-01T15:10:06+00:00" | ||||
|             "time": "2023-12-28T19:18:20+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/deprecation-contracts", | ||||
| @@ -845,21 +845,21 @@ | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/service-contracts", | ||||
|             "version": "v3.4.0", | ||||
|             "version": "v3.4.1", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/service-contracts.git", | ||||
|                 "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838" | ||||
|                 "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/service-contracts/zipball/b3313c2dbffaf71c8de2934e2ea56ed2291a3838", | ||||
|                 "reference": "b3313c2dbffaf71c8de2934e2ea56ed2291a3838", | ||||
|                 "url": "https://api.github.com/repos/symfony/service-contracts/zipball/fe07cbc8d837f60caf7018068e350cc5163681a0", | ||||
|                 "reference": "fe07cbc8d837f60caf7018068e350cc5163681a0", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
|                 "php": ">=8.1", | ||||
|                 "psr/container": "^2.0" | ||||
|                 "psr/container": "^1.1|^2.0" | ||||
|             }, | ||||
|             "conflict": { | ||||
|                 "ext-psr": "<1.1|>=2" | ||||
| @@ -907,7 +907,7 @@ | ||||
|                 "standards" | ||||
|             ], | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/service-contracts/tree/v3.4.0" | ||||
|                 "source": "https://github.com/symfony/service-contracts/tree/v3.4.1" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -923,20 +923,20 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-07-30T20:28:31+00:00" | ||||
|             "time": "2023-12-26T14:02:43+00:00" | ||||
|         }, | ||||
|         { | ||||
|             "name": "symfony/var-exporter", | ||||
|             "version": "v7.0.1", | ||||
|             "version": "v7.0.2", | ||||
|             "source": { | ||||
|                 "type": "git", | ||||
|                 "url": "https://github.com/symfony/var-exporter.git", | ||||
|                 "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3" | ||||
|                 "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764" | ||||
|             }, | ||||
|             "dist": { | ||||
|                 "type": "zip", | ||||
|                 "url": "https://api.github.com/repos/symfony/var-exporter/zipball/a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", | ||||
|                 "reference": "a3d7c877414fcd59ab7075ecdc3b8f9c00f7bcc3", | ||||
|                 "url": "https://api.github.com/repos/symfony/var-exporter/zipball/345c62fefe92243c3a06fc0cc65f2ec1a47e0764", | ||||
|                 "reference": "345c62fefe92243c3a06fc0cc65f2ec1a47e0764", | ||||
|                 "shasum": "" | ||||
|             }, | ||||
|             "require": { | ||||
| @@ -981,7 +981,7 @@ | ||||
|                 "serialize" | ||||
|             ], | ||||
|             "support": { | ||||
|                 "source": "https://github.com/symfony/var-exporter/tree/v7.0.1" | ||||
|                 "source": "https://github.com/symfony/var-exporter/tree/v7.0.2" | ||||
|             }, | ||||
|             "funding": [ | ||||
|                 { | ||||
| @@ -997,7 +997,7 @@ | ||||
|                     "type": "tidelift" | ||||
|                 } | ||||
|             ], | ||||
|             "time": "2023-11-30T11:38:21+00:00" | ||||
|             "time": "2023-12-27T08:42:13+00:00" | ||||
|         } | ||||
|     ], | ||||
|     "aliases": [], | ||||
|   | ||||
| @@ -37,14 +37,14 @@ | ||||
|  | ||||
|     <rule ref="rulesets/design.xml/NumberOfChildren"> | ||||
|         <properties> | ||||
|             <!-- TODO we want to be at minimum 15. But we start high, and drop the bar slowly. --> | ||||
|             <property name="minimum" value="256"/> | ||||
|             <!-- This is now at 32, which excludes the controllers but should prevent more monoliths. --> | ||||
|             <property name="minimum" value="32"/> | ||||
|         </properties> | ||||
|     </rule> | ||||
|     <rule ref="rulesets/design.xml/CouplingBetweenObjects"> | ||||
|         <properties> | ||||
|             <!-- TODO we want to be at maximum 13. But we start high, and drop the bar slowly. --> | ||||
|             <property name="maximum" value="256"/> | ||||
|             <!-- Leaving this at 28 excuses most current code but it can't get worse than that. --> | ||||
|             <property name="maximum" value="28"/> | ||||
|         </properties> | ||||
|     </rule> | ||||
|  | ||||
| @@ -58,20 +58,21 @@ | ||||
|     <!-- code size --> | ||||
|     <rule ref="rulesets/codesize.xml/CyclomaticComplexity"> | ||||
|         <properties> | ||||
|             <!-- TODO we want to be at report level 5. But we start high, and drop the bar slowly. --> | ||||
|             <property name="reportLevel" value="500"/> | ||||
|             <!-- Leave at 20. This means methods will be pretty complex before the system starts complaining. --> | ||||
|             <property name="reportLevel" value="20"/> | ||||
|         </properties> | ||||
|     </rule> | ||||
|     <rule ref="rulesets/codesize.xml/NPathComplexity"> | ||||
|         <properties> | ||||
|             <!-- TODO we want to be at a value of 128. But we start high, and drop the bar slowly. --> | ||||
|             <property name="minimum" value="24062500"/> | ||||
|             <!-- 2000 results in some pretty complex methods, but it's OK. --> | ||||
|             <!-- They should not be much more complex than that though --> | ||||
|             <property name="minimum" value="2000"/> | ||||
|         </properties> | ||||
|     </rule> | ||||
|     <rule ref="rulesets/codesize.xml/ExcessiveMethodLength"> | ||||
|         <properties> | ||||
|             <!-- TODO we want to be at a value of 40. But we start high, and drop the bar slowly. --> | ||||
|             <property name="minimum" value="100"/> | ||||
|             <!-- 75 seems like a nice number. Shorter isn't always feasible and there are a few exceptions already --> | ||||
|             <property name="minimum" value="75"/> | ||||
|             <property name="ignore-whitespace" value="true"/> | ||||
|         </properties> | ||||
|     </rule> | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/ISSUE_TEMPLATE/fr.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/ISSUE_TEMPLATE/fr.yml
									
									
									
									
										vendored
									
									
								
							| @@ -8,7 +8,7 @@ body: | ||||
|       options: | ||||
|         - label: I've read the [support guidelines](https://github.com/firefly-iii/firefly-iii/blob/main/.github/support.md) | ||||
|           required: true | ||||
|         - label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/firefly-iii/more-information/what-its-not/) | ||||
|         - label: My request is not listed as [a very good idea, but unfortunately...](https://docs.firefly-iii.org/explanation/more-information/what-its-not/) | ||||
|           required: true | ||||
|         - label: I've used [the search](https://github.com/firefly-iii/firefly-iii/issues?q=is%3Aissue) and this has not been requested before. | ||||
|           required: true | ||||
|   | ||||
							
								
								
									
										4
									
								
								.github/contributing.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								.github/contributing.md
									
									
									
									
										vendored
									
									
								
							| @@ -1,3 +1,3 @@ | ||||
| # [Contributing guidelines](https://docs.firefly-iii.org/firefly-iii/support/#contributing-code) | ||||
| # [Contributing guidelines](https://docs.firefly-iii.org/explanation/support/#contributing-code) | ||||
| 
 | ||||
| [Contributing guidelines](https://docs.firefly-iii.org/firefly-iii/support/#contributing-code) | ||||
| [Contributing guidelines](https://docs.firefly-iii.org/explanation/support/#contributing-code) | ||||
|   | ||||
							
								
								
									
										2
									
								
								.github/support.md
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								.github/support.md
									
									
									
									
										vendored
									
									
								
							| @@ -27,7 +27,7 @@ Only then [create a new issue](https://github.com/firefly-iii/firefly-iii/issues | ||||
| 
 | ||||
| - Issues can be converted into discussions if it's not a bug or feature request. | ||||
| - Features that won't be implemented will be labelled " | ||||
|   wontfix". [This isn't personal](https://docs.firefly-iii.org/firefly-iii/about-firefly-iii/what-its-not/). | ||||
|   wontfix". [This isn't personal](https://docs.firefly-iii.org/explanation/more-information/what-its-not/). | ||||
| - Issues can be closed if they're duplicates of other issues. | ||||
| - Issues can be closed if the answer is in the FAQ. | ||||
| - Issues will be closed automatically after 14 days. | ||||
|   | ||||
							
								
								
									
										5
									
								
								.github/workflows/sonarcloud.yml
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										5
									
								
								.github/workflows/sonarcloud.yml
									
									
									
									
										vendored
									
									
								
							| @@ -15,10 +15,7 @@ jobs: | ||||
|     runs-on: ubuntu-latest | ||||
|     steps: | ||||
|       - name: Checkout | ||||
|         uses: actions/checkout@v3 | ||||
|         with: | ||||
|           fetch-depth: 0 | ||||
|  | ||||
|         uses: actions/checkout@v4 | ||||
|       - name: Setup PHP with Xdebug | ||||
|         uses: shivammathur/setup-php@v2 | ||||
|         with: | ||||
|   | ||||
| @@ -32,7 +32,6 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; | ||||
| use FireflyIII\Support\Http\Api\AccountFilter; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use JsonException; | ||||
| 
 | ||||
| /** | ||||
|  * Class AccountController | ||||
| @@ -61,30 +60,25 @@ class AccountController extends Controller | ||||
|                 return $next($request); | ||||
|             } | ||||
|         ); | ||||
|         $this->balanceTypes = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE,]; | ||||
|         $this->balanceTypes = [AccountType::ASSET, AccountType::LOAN, AccountType::DEBT, AccountType::MORTGAGE]; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Documentation for this endpoint: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getAccountsAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws JsonException | ||||
|      * @throws FireflyException | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function accounts(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
|         $data  = $request->getData(); | ||||
|         $types = $data['types']; | ||||
|         $query = $data['query']; | ||||
|         $date  = $data['date'] ?? today(config('app.timezone')); | ||||
|         $data            = $request->getData(); | ||||
|         $types           = $data['types']; | ||||
|         $query           = $data['query']; | ||||
|         $date            = $data['date'] ?? today(config('app.timezone')); | ||||
|         $return          = []; | ||||
|         $result          = $this->repository->searchAccount((string) $query, $types, $this->parameters->get('limit')); | ||||
| 
 | ||||
|         $return = []; | ||||
| 
 | ||||
|         $result = $this->repository->searchAccount((string)$query, $types, $this->parameters->get('limit')); | ||||
|         // TODO this code is duplicated in the V2 Autocomplete controller, which means this code is due to be deprecated.
 | ||||
|         $defaultCurrency = app('amount')->getDefaultCurrency(); | ||||
| 
 | ||||
| @@ -102,12 +96,12 @@ class AccountController extends Controller | ||||
|                 ); | ||||
|             } | ||||
| 
 | ||||
|             $return[] = [ | ||||
|                 'id'                      => (string)$account->id, | ||||
|             $return[]        = [ | ||||
|                 'id'                      => (string) $account->id, | ||||
|                 'name'                    => $account->name, | ||||
|                 'name_with_balance'       => $nameWithBalance, | ||||
|                 'type'                    => $account->accountType->type, | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_name'           => $currency->name, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
| @@ -120,8 +114,8 @@ class AccountController extends Controller | ||||
|             $return, | ||||
|             static function (array $left, array $right) { | ||||
|                 $order = [AccountType::ASSET, AccountType::REVENUE, AccountType::EXPENSE]; | ||||
|                 $posA  = (int)array_search($left['type'], $order, true); | ||||
|                 $posB  = (int)array_search($right['type'], $order, true); | ||||
|                 $posA  = (int) array_search($left['type'], $order, true); | ||||
|                 $posB  = (int) array_search($right['type'], $order, true); | ||||
| 
 | ||||
|                 return $posA - $posB; | ||||
|             } | ||||
|   | ||||
| @@ -58,10 +58,6 @@ class BillController extends Controller | ||||
|     /** | ||||
|      * Documentation for this endpoint is at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBillsAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function bills(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -70,7 +66,7 @@ class BillController extends Controller | ||||
|         $filtered = $result->map( | ||||
|             static function (Bill $item) { | ||||
|                 return [ | ||||
|                     'id'     => (string)$item->id, | ||||
|                     'id'     => (string) $item->id, | ||||
|                     'name'   => $item->name, | ||||
|                     'active' => $item->active, | ||||
|                 ]; | ||||
|   | ||||
| @@ -58,10 +58,6 @@ class BudgetController extends Controller | ||||
|     /** | ||||
|      * Documentation for this endpoint is at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getBudgetsAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function budgets(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -70,7 +66,7 @@ class BudgetController extends Controller | ||||
|         $filtered = $result->map( | ||||
|             static function (Budget $item) { | ||||
|                 return [ | ||||
|                     'id'   => (string)$item->id, | ||||
|                     'id'   => (string) $item->id, | ||||
|                     'name' => $item->name, | ||||
|                 ]; | ||||
|             } | ||||
|   | ||||
| @@ -58,10 +58,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * Documentation for this endpoint is at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCategoriesAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function categories(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -70,7 +66,7 @@ class CategoryController extends Controller | ||||
|         $filtered = $result->map( | ||||
|             static function (Category $item) { | ||||
|                 return [ | ||||
|                     'id'   => (string)$item->id, | ||||
|                     'id'   => (string) $item->id, | ||||
|                     'name' => $item->name, | ||||
|                 ]; | ||||
|             } | ||||
|   | ||||
| @@ -58,10 +58,6 @@ class CurrencyController extends Controller | ||||
|     /** | ||||
|      * Documentation for this endpoint is at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function currencies(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -72,7 +68,7 @@ class CurrencyController extends Controller | ||||
|         /** @var TransactionCurrency $currency */ | ||||
|         foreach ($collection as $currency) { | ||||
|             $result[] = [ | ||||
|                 'id'             => (string)$currency->id, | ||||
|                 'id'             => (string) $currency->id, | ||||
|                 'name'           => $currency->name, | ||||
|                 'code'           => $currency->code, | ||||
|                 'symbol'         => $currency->symbol, | ||||
| @@ -87,9 +83,6 @@ class CurrencyController extends Controller | ||||
|      * Documentation for this endpoint is at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getCurrenciesCodeAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @deprecated | ||||
|      */ | ||||
|     public function currenciesWithCode(AutocompleteRequest $request): JsonResponse | ||||
| @@ -101,7 +94,7 @@ class CurrencyController extends Controller | ||||
|         /** @var TransactionCurrency $currency */ | ||||
|         foreach ($collection as $currency) { | ||||
|             $result[] = [ | ||||
|                 'id'             => (string)$currency->id, | ||||
|                 'id'             => (string) $currency->id, | ||||
|                 'name'           => sprintf('%s (%s)', $currency->name, $currency->code), | ||||
|                 'code'           => $currency->code, | ||||
|                 'symbol'         => $currency->symbol, | ||||
|   | ||||
| @@ -58,10 +58,6 @@ class ObjectGroupController extends Controller | ||||
|     /** | ||||
|      * Documentation for this endpoint is at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getObjectGroupsAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function objectGroups(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -72,7 +68,7 @@ class ObjectGroupController extends Controller | ||||
|         /** @var ObjectGroup $objectGroup */ | ||||
|         foreach ($result as $objectGroup) { | ||||
|             $return[] = [ | ||||
|                 'id'    => (string)$objectGroup->id, | ||||
|                 'id'    => (string) $objectGroup->id, | ||||
|                 'name'  => $objectGroup->title, | ||||
|                 'title' => $objectGroup->title, | ||||
|             ]; | ||||
|   | ||||
| @@ -62,10 +62,6 @@ class PiggyBankController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getPiggiesAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function piggyBanks(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -79,14 +75,14 @@ class PiggyBankController extends Controller | ||||
|             $currency    = $this->accountRepository->getAccountCurrency($piggy->account) ?? $defaultCurrency; | ||||
|             $objectGroup = $piggy->objectGroups()->first(); | ||||
|             $response[]  = [ | ||||
|                 'id'                      => (string)$piggy->id, | ||||
|                 'id'                      => (string) $piggy->id, | ||||
|                 'name'                    => $piggy->name, | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_name'           => $currency->name, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string)$objectGroup->id, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string) $objectGroup->id, | ||||
|                 'object_group_title'      => $objectGroup?->title, | ||||
|             ]; | ||||
|         } | ||||
| @@ -97,10 +93,6 @@ class PiggyBankController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getPiggiesBalanceAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function piggyBanksWithBalance(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -108,13 +100,14 @@ class PiggyBankController extends Controller | ||||
|         $piggies         = $this->piggyRepository->searchPiggyBank($data['query'], $this->parameters->get('limit')); | ||||
|         $defaultCurrency = app('amount')->getDefaultCurrency(); | ||||
|         $response        = []; | ||||
| 
 | ||||
|         /** @var PiggyBank $piggy */ | ||||
|         foreach ($piggies as $piggy) { | ||||
|             $currency      = $this->accountRepository->getAccountCurrency($piggy->account) ?? $defaultCurrency; | ||||
|             $currentAmount = $this->piggyRepository->getRepetition($piggy)->currentamount ?? '0'; | ||||
|             $objectGroup   = $piggy->objectGroups()->first(); | ||||
|             $response[]    = [ | ||||
|                 'id'                      => (string)$piggy->id, | ||||
|                 'id'                      => (string) $piggy->id, | ||||
|                 'name'                    => $piggy->name, | ||||
|                 'name_with_balance'       => sprintf( | ||||
|                     '%s (%s / %s)', | ||||
| @@ -122,12 +115,12 @@ class PiggyBankController extends Controller | ||||
|                     app('amount')->formatAnything($currency, $currentAmount, false), | ||||
|                     app('amount')->formatAnything($currency, $piggy->targetamount, false), | ||||
|                 ), | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_name'           => $currency->name, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string)$objectGroup->id, | ||||
|                 'object_group_id'         => null === $objectGroup ? null : (string) $objectGroup->id, | ||||
|                 'object_group_title'      => $objectGroup?->title, | ||||
|             ]; | ||||
|         } | ||||
|   | ||||
| @@ -56,10 +56,6 @@ class RecurrenceController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getRecurringAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function recurring(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -70,7 +66,7 @@ class RecurrenceController extends Controller | ||||
|         /** @var Recurrence $recurrence */ | ||||
|         foreach ($recurrences as $recurrence) { | ||||
|             $response[] = [ | ||||
|                 'id'          => (string)$recurrence->id, | ||||
|                 'id'          => (string) $recurrence->id, | ||||
|                 'name'        => $recurrence->title, | ||||
|                 'description' => $recurrence->description, | ||||
|             ]; | ||||
|   | ||||
| @@ -55,10 +55,6 @@ class RuleController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getRulesAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function rules(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -69,7 +65,7 @@ class RuleController extends Controller | ||||
|         /** @var Rule $rule */ | ||||
|         foreach ($rules as $rule) { | ||||
|             $response[] = [ | ||||
|                 'id'          => (string)$rule->id, | ||||
|                 'id'          => (string) $rule->id, | ||||
|                 'name'        => $rule->title, | ||||
|                 'description' => $rule->description, | ||||
|             ]; | ||||
|   | ||||
| @@ -55,10 +55,6 @@ class RuleGroupController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getRuleGroupsAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function ruleGroups(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -69,7 +65,7 @@ class RuleGroupController extends Controller | ||||
|         /** @var RuleGroup $group */ | ||||
|         foreach ($groups as $group) { | ||||
|             $response[] = [ | ||||
|                 'id'          => (string)$group->id, | ||||
|                 'id'          => (string) $group->id, | ||||
|                 'name'        => $group->title, | ||||
|                 'description' => $group->description, | ||||
|             ]; | ||||
|   | ||||
| @@ -58,21 +58,17 @@ class TagController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTagAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function tags(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
|         $data = $request->getData(); | ||||
| 
 | ||||
|         $data   = $request->getData(); | ||||
|         $result = $this->repository->searchTags($data['query'], $this->parameters->get('limit')); | ||||
|         $array  = []; | ||||
| 
 | ||||
|         /** @var Tag $tag */ | ||||
|         foreach ($result as $tag) { | ||||
|             $array[] = [ | ||||
|                 'id'   => (string)$tag->id, | ||||
|                 'id'   => (string) $tag->id, | ||||
|                 'name' => $tag->tag, | ||||
|                 'tag'  => $tag->tag, | ||||
|             ]; | ||||
|   | ||||
| @@ -63,15 +63,11 @@ class TransactionController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTransactionsAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function transactions(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
|         $data   = $request->getData(); | ||||
|         $result = $this->repository->searchJournalDescriptions($data['query'], $this->parameters->get('limit')); | ||||
|         $data     = $request->getData(); | ||||
|         $result   = $this->repository->searchJournalDescriptions($data['query'], $this->parameters->get('limit')); | ||||
| 
 | ||||
|         // limit and unique
 | ||||
|         $filtered = $result->unique('description'); | ||||
| @@ -80,8 +76,8 @@ class TransactionController extends Controller | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($filtered as $journal) { | ||||
|             $array[] = [ | ||||
|                 'id'                   => (string)$journal->id, | ||||
|                 'transaction_group_id' => (string)$journal->transaction_group_id, | ||||
|                 'id'                   => (string) $journal->id, | ||||
|                 'transaction_group_id' => (string) $journal->transaction_group_id, | ||||
|                 'name'                 => $journal->description, | ||||
|                 'description'          => $journal->description, | ||||
|             ]; | ||||
| @@ -93,10 +89,6 @@ class TransactionController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTransactionsIDAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function transactionsWithID(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -104,7 +96,7 @@ class TransactionController extends Controller | ||||
|         $result = new Collection(); | ||||
|         if (is_numeric($data['query'])) { | ||||
|             // search for group, not journal.
 | ||||
|             $firstResult = $this->groupRepository->find((int)$data['query']); | ||||
|             $firstResult = $this->groupRepository->find((int) $data['query']); | ||||
|             if (null !== $firstResult) { | ||||
|                 // group may contain multiple journals, each a result:
 | ||||
|                 foreach ($firstResult->transactionJournals as $journal) { | ||||
| @@ -117,13 +109,13 @@ class TransactionController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // limit and unique
 | ||||
|         $array = []; | ||||
|         $array  = []; | ||||
| 
 | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($result as $journal) { | ||||
|             $array[] = [ | ||||
|                 'id'                   => (string)$journal->id, | ||||
|                 'transaction_group_id' => (string)$journal->transaction_group_id, | ||||
|                 'id'                   => (string) $journal->id, | ||||
|                 'transaction_group_id' => (string) $journal->transaction_group_id, | ||||
|                 'name'                 => sprintf('#%d: %s', $journal->transaction_group_id, $journal->description), | ||||
|                 'description'          => sprintf('#%d: %s', $journal->transaction_group_id, $journal->description), | ||||
|             ]; | ||||
|   | ||||
| @@ -54,10 +54,6 @@ class TransactionTypeController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at | ||||
|      * * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/autocomplete/getTransactionTypesAC
 | ||||
|      * | ||||
|      * @param AutocompleteRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function transactionTypes(AutocompleteRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -69,7 +65,7 @@ class TransactionTypeController extends Controller | ||||
|         foreach ($types as $type) { | ||||
|             // different key for consistency.
 | ||||
|             $array[] = [ | ||||
|                 'id'   => (string)$type->id, | ||||
|                 'id'   => (string) $type->id, | ||||
|                 'name' => $type->type, | ||||
|                 'type' => $type->type, | ||||
|             ]; | ||||
|   | ||||
| @@ -35,9 +35,6 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface; | ||||
| use FireflyIII\Support\Http\Api\ApiSupport; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use JsonException; | ||||
| use Psr\Container\ContainerExceptionInterface; | ||||
| use Psr\Container\NotFoundExceptionInterface; | ||||
| 
 | ||||
| /** | ||||
|  * Class AccountController | ||||
| @@ -50,8 +47,6 @@ class AccountController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -72,47 +67,44 @@ class AccountController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/charts/getChartAccountOverview
 | ||||
|      * | ||||
|      * @param DateRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      * @throws JsonException | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
|     public function overview(DateRequest $request): JsonResponse | ||||
|     { | ||||
|         // parameters for chart:
 | ||||
|         $dates = $request->getAll(); | ||||
|         $dates      = $request->getAll(); | ||||
| 
 | ||||
|         /** @var Carbon $start */ | ||||
|         $start = $dates['start']; | ||||
|         $start      = $dates['start']; | ||||
| 
 | ||||
|         /** @var Carbon $end */ | ||||
|         $end = $dates['end']; | ||||
|         $end        = $dates['end']; | ||||
| 
 | ||||
|         // user's preferences
 | ||||
|         $defaultSet = $this->repository->getAccountsByType([AccountType::ASSET])->pluck('id')->toArray(); | ||||
| 
 | ||||
|         /** @var Preference $frontPage */ | ||||
|         $frontPage = app('preferences')->get('frontPageAccounts', $defaultSet); | ||||
|         $default   = app('amount')->getDefaultCurrency(); | ||||
|         $frontPage  = app('preferences')->get('frontPageAccounts', $defaultSet); | ||||
|         $default    = app('amount')->getDefaultCurrency(); | ||||
| 
 | ||||
|         if (!(is_array($frontPage->data) && count($frontPage->data) > 0)) { | ||||
|             $frontPage->data = $defaultSet; | ||||
|             $frontPage->save(); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         // get accounts:
 | ||||
|         $accounts  = $this->repository->getAccountsById($frontPage->data); | ||||
|         $chartData = []; | ||||
|         $accounts   = $this->repository->getAccountsById($frontPage->data); | ||||
|         $chartData  = []; | ||||
| 
 | ||||
|         /** @var Account $account */ | ||||
|         foreach ($accounts as $account) { | ||||
|             $currency = $this->repository->getAccountCurrency($account); | ||||
|             $currency     = $this->repository->getAccountCurrency($account); | ||||
|             if (null === $currency) { | ||||
|                 $currency = $default; | ||||
|             } | ||||
|             $currentSet = [ | ||||
|             $currentSet   = [ | ||||
|                 'label'                   => $account->name, | ||||
|                 'currency_id'             => (string)$currency->id, | ||||
|                 'currency_id'             => (string) $currency->id, | ||||
|                 'currency_code'           => $currency->code, | ||||
|                 'currency_symbol'         => $currency->symbol, | ||||
|                 'currency_decimal_places' => $currency->decimal_places, | ||||
| @@ -126,16 +118,16 @@ class AccountController extends Controller | ||||
|             $currentStart = clone $start; | ||||
|             $range        = app('steam')->balanceInRange($account, $start, clone $end); | ||||
|             // 2022-10-11 this method no longer converts to float.
 | ||||
|             $previous = array_values($range)[0]; | ||||
|             $previous     = array_values($range)[0]; | ||||
|             while ($currentStart <= $end) { | ||||
|                 $format   = $currentStart->format('Y-m-d'); | ||||
|                 $label    = $currentStart->toAtomString(); | ||||
|                 $balance  = array_key_exists($format, $range) ? $range[$format] : $previous; | ||||
|                 $previous = $balance; | ||||
|                 $format                        = $currentStart->format('Y-m-d'); | ||||
|                 $label                         = $currentStart->toAtomString(); | ||||
|                 $balance                       = array_key_exists($format, $range) ? $range[$format] : $previous; | ||||
|                 $previous                      = $balance; | ||||
|                 $currentStart->addDay(); | ||||
|                 $currentSet['entries'][$label] = $balance; | ||||
|             } | ||||
|             $chartData[] = $currentSet; | ||||
|             $chartData[]  = $currentSet; | ||||
|         } | ||||
| 
 | ||||
|         return response()->json($chartData); | ||||
|   | ||||
| @@ -35,15 +35,14 @@ use Illuminate\Foundation\Validation\ValidatesRequests; | ||||
| use Illuminate\Routing\Controller as BaseController; | ||||
| use League\Fractal\Manager; | ||||
| use League\Fractal\Serializer\JsonApiSerializer; | ||||
| use Psr\Container\ContainerExceptionInterface; | ||||
| use Psr\Container\NotFoundExceptionInterface; | ||||
| use Symfony\Component\HttpFoundation\Exception\BadRequestException; | ||||
| use Symfony\Component\HttpFoundation\ParameterBag; | ||||
| 
 | ||||
| /** | ||||
|  * Class Controller. | ||||
|  * | ||||
| 
 | ||||
|  * @SuppressWarnings(PHPMD.CouplingBetweenObjects) | ||||
|  * @SuppressWarnings(PHPMD.NumberOfChildren) | ||||
|  */ | ||||
| abstract class Controller extends BaseController | ||||
| { | ||||
| @@ -52,6 +51,7 @@ abstract class Controller extends BaseController | ||||
|     use ValidatesRequests; | ||||
| 
 | ||||
|     protected const string CONTENT_TYPE = 'application/vnd.api+json'; | ||||
| 
 | ||||
|     /** @var array<int, string> */ | ||||
|     protected array        $allowedSort; | ||||
|     protected ParameterBag $parameters; | ||||
| @@ -76,17 +76,45 @@ abstract class Controller extends BaseController | ||||
|         ); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Method to help build URL's. | ||||
|      */ | ||||
|     final protected function buildParams(): string | ||||
|     { | ||||
|         $return = '?'; | ||||
|         $params = []; | ||||
|         foreach ($this->parameters as $key => $value) { | ||||
|             if ('page' === $key) { | ||||
|                 continue; | ||||
|             } | ||||
|             if ($value instanceof Carbon) { | ||||
|                 $params[$key] = $value->format('Y-m-d'); | ||||
| 
 | ||||
|                 continue; | ||||
|             } | ||||
|             $params[$key] = $value; | ||||
|         } | ||||
| 
 | ||||
|         return $return.http_build_query($params); | ||||
|     } | ||||
| 
 | ||||
|     final protected function getManager(): Manager | ||||
|     { | ||||
|         // create some objects:
 | ||||
|         $manager = new Manager(); | ||||
|         $baseUrl = request()->getSchemeAndHttpHost().'/api/v1'; | ||||
|         $manager->setSerializer(new JsonApiSerializer($baseUrl)); | ||||
| 
 | ||||
|         return $manager; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Method to grab all parameters from the URL. | ||||
|      * | ||||
|      * @return ParameterBag | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
|     private function getParameters(): ParameterBag | ||||
|     { | ||||
|         $bag  = new ParameterBag(); | ||||
|         $page = (int)request()->get('page'); | ||||
|         $bag      = new ParameterBag(); | ||||
|         $page     = (int)request()->get('page'); | ||||
|         if ($page < 1) { | ||||
|             $page = 1; | ||||
|         } | ||||
| @@ -96,9 +124,10 @@ abstract class Controller extends BaseController | ||||
|         $bag->set('page', $page); | ||||
| 
 | ||||
|         // some date fields:
 | ||||
|         $dates = ['start', 'end', 'date']; | ||||
|         $dates    = ['start', 'end', 'date']; | ||||
|         foreach ($dates as $field) { | ||||
|             $date = null; | ||||
| 
 | ||||
|             try { | ||||
|                 $date = request()->query->get($field); | ||||
|             } catch (BadRequestException $e) { | ||||
| @@ -107,11 +136,11 @@ abstract class Controller extends BaseController | ||||
|                 app('log')->error($e->getTraceAsString()); | ||||
|                 $value = null; | ||||
|             } | ||||
|             $obj = null; | ||||
|             $obj  = null; | ||||
|             if (null !== $date) { | ||||
|                 try { | ||||
|                     $obj = Carbon::parse((string)$date); | ||||
|                 } catch (InvalidDateException | InvalidFormatException $e) { | ||||
|                 } catch (InvalidDateException|InvalidFormatException $e) { | ||||
|                     // don't care
 | ||||
|                     app('log')->warning( | ||||
|                         sprintf( | ||||
| @@ -139,12 +168,13 @@ abstract class Controller extends BaseController | ||||
|             if (null !== $value) { | ||||
|                 $bag->set($integer, (int)$value); | ||||
|             } | ||||
|             if (null === $value && | ||||
|                 'limit' === $integer && // @phpstan-ignore-line
 | ||||
|                 auth()->check()) { | ||||
|             if (null === $value | ||||
|                 && 'limit' === $integer // @phpstan-ignore-line
 | ||||
|                 && auth()->check()) { | ||||
|                 // set default for user:
 | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user     = auth()->user(); | ||||
| 
 | ||||
|                 /** @var Preference $pageSize */ | ||||
|                 $pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data; | ||||
|                 $bag->set($integer, $pageSize); | ||||
| @@ -155,14 +185,10 @@ abstract class Controller extends BaseController | ||||
|         return $this->getSortParameters($bag); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param ParameterBag $bag | ||||
|      * | ||||
|      * @return ParameterBag | ||||
|      */ | ||||
|     private function getSortParameters(ParameterBag $bag): ParameterBag | ||||
|     { | ||||
|         $sortParameters = []; | ||||
| 
 | ||||
|         try { | ||||
|             $param = (string)request()->query->get('sort'); | ||||
|         } catch (BadRequestException $e) { | ||||
| @@ -174,7 +200,7 @@ abstract class Controller extends BaseController | ||||
|         if ('' === $param) { | ||||
|             return $bag; | ||||
|         } | ||||
|         $parts = explode(',', $param); | ||||
|         $parts          = explode(',', $param); | ||||
|         foreach ($parts as $part) { | ||||
|             $part      = trim($part); | ||||
|             $direction = 'asc'; | ||||
| @@ -190,40 +216,4 @@ abstract class Controller extends BaseController | ||||
| 
 | ||||
|         return $bag; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Method to help build URL's. | ||||
|      * | ||||
|      * @return string | ||||
|      */ | ||||
|     final protected function buildParams(): string | ||||
|     { | ||||
|         $return = '?'; | ||||
|         $params = []; | ||||
|         foreach ($this->parameters as $key => $value) { | ||||
|             if ('page' === $key) { | ||||
|                 continue; | ||||
|             } | ||||
|             if ($value instanceof Carbon) { | ||||
|                 $params[$key] = $value->format('Y-m-d'); | ||||
|                 continue; | ||||
|             } | ||||
|             $params[$key] = $value; | ||||
|         } | ||||
| 
 | ||||
|         return $return . http_build_query($params); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return Manager | ||||
|      */ | ||||
|     final protected function getManager(): Manager | ||||
|     { | ||||
|         // create some objects:
 | ||||
|         $manager = new Manager(); | ||||
|         $baseUrl = request()->getSchemeAndHttpHost() . '/api/v1'; | ||||
|         $manager->setSerializer(new JsonApiSerializer($baseUrl)); | ||||
| 
 | ||||
|         return $manager; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -44,9 +44,6 @@ class TransactionController extends Controller | ||||
| { | ||||
|     private AccountRepositoryInterface $repository; | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         parent::__construct(); | ||||
| @@ -63,10 +60,6 @@ class TransactionController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/bulkUpdateTransactions
 | ||||
|      * | ||||
|      * @param TransactionRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(TransactionRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -77,11 +70,11 @@ class TransactionController extends Controller | ||||
|         // to respond to what is in the $query.
 | ||||
|         // this is OK because only one thing can be in the query at the moment.
 | ||||
|         if ($this->isUpdateTransactionAccount($params)) { | ||||
|             $original    = $this->repository->find((int)$params['where']['account_id']); | ||||
|             $destination = $this->repository->find((int)$params['update']['account_id']); | ||||
|             $original    = $this->repository->find((int) $params['where']['account_id']); | ||||
|             $destination = $this->repository->find((int) $params['update']['account_id']); | ||||
| 
 | ||||
|             /** @var AccountDestroyService $service */ | ||||
|             $service = app(AccountDestroyService::class); | ||||
|             $service     = app(AccountDestroyService::class); | ||||
|             $service->moveTransactions($original, $destination); | ||||
|         } | ||||
| 
 | ||||
| @@ -89,9 +82,7 @@ class TransactionController extends Controller | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param array $params <array<string, array<string, int|string>>> | ||||
|      * | ||||
|      * @return bool | ||||
|      * @param array<string, array<string, string>> $params | ||||
|      */ | ||||
|     private function isUpdateTransactionAccount(array $params): bool | ||||
|     { | ||||
|   | ||||
| @@ -57,20 +57,17 @@ class DestroyController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/destroyData
 | ||||
|      * | ||||
|      * @param DestroyRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function destroy(DestroyRequest $request): JsonResponse | ||||
|     { | ||||
|         $objects      = $request->getObjects(); | ||||
|         $this->unused = $request->boolean('unused', false); | ||||
|         $objects         = $request->getObjects(); | ||||
|         $this->unused    = $request->boolean('unused', false); | ||||
| 
 | ||||
|         $allExceptAssets = [AccountType::BENEFICIARY, AccountType::CASH, AccountType::CREDITCARD, AccountType::DEFAULT, AccountType::EXPENSE, AccountType::IMPORT, AccountType::INITIAL_BALANCE, AccountType::LIABILITY_CREDIT, AccountType::RECONCILIATION, AccountType::REVENUE,]; | ||||
|         $all             = [AccountType::ASSET, AccountType::BENEFICIARY, AccountType::CASH, AccountType::CREDITCARD, AccountType::DEBT, AccountType::DEFAULT, AccountType::EXPENSE, AccountType::IMPORT, AccountType::INITIAL_BALANCE, AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::MORTGAGE, AccountType::RECONCILIATION,]; | ||||
|         $allExceptAssets = [AccountType::BENEFICIARY, AccountType::CASH, AccountType::CREDITCARD, AccountType::DEFAULT, AccountType::EXPENSE, AccountType::IMPORT, AccountType::INITIAL_BALANCE, AccountType::LIABILITY_CREDIT, AccountType::RECONCILIATION, AccountType::REVENUE]; | ||||
|         $all             = [AccountType::ASSET, AccountType::BENEFICIARY, AccountType::CASH, AccountType::CREDITCARD, AccountType::DEBT, AccountType::DEFAULT, AccountType::EXPENSE, AccountType::IMPORT, AccountType::INITIAL_BALANCE, AccountType::LIABILITY_CREDIT, AccountType::LOAN, AccountType::MORTGAGE, AccountType::RECONCILIATION]; | ||||
|         $liabilities     = [AccountType::DEBT, AccountType::LOAN, AccountType::MORTGAGE, AccountType::CREDITCARD]; | ||||
|         $transactions    = [TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::TRANSFER, TransactionType::RECONCILIATION, TransactionType::OPENING_BALANCE,]; | ||||
|         $transactions    = [TransactionType::WITHDRAWAL, TransactionType::DEPOSIT, TransactionType::TRANSFER, TransactionType::RECONCILIATION, TransactionType::OPENING_BALANCE]; | ||||
| 
 | ||||
|         match ($objects) { | ||||
|             'budgets'                => $this->destroyBudgets(), | ||||
| @@ -99,17 +96,14 @@ class DestroyController extends Controller | ||||
|         return response()->json([], 204); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyBudgets(): void | ||||
|     { | ||||
|         /** @var AvailableBudgetRepositoryInterface $abRepository */ | ||||
|         $abRepository = app(AvailableBudgetRepositoryInterface::class); | ||||
|         $abRepository     = app(AvailableBudgetRepositoryInterface::class); | ||||
|         $abRepository->destroyAll(); | ||||
| 
 | ||||
|         /** @var BudgetLimitRepositoryInterface $blRepository */ | ||||
|         $blRepository = app(BudgetLimitRepositoryInterface::class); | ||||
|         $blRepository     = app(BudgetLimitRepositoryInterface::class); | ||||
|         $blRepository->destroyAll(); | ||||
| 
 | ||||
|         /** @var BudgetRepositoryInterface $budgetRepository */ | ||||
| @@ -117,9 +111,6 @@ class DestroyController extends Controller | ||||
|         $budgetRepository->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyBills(): void | ||||
|     { | ||||
|         /** @var BillRepositoryInterface $repository */ | ||||
| @@ -127,9 +118,6 @@ class DestroyController extends Controller | ||||
|         $repository->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyPiggyBanks(): void | ||||
|     { | ||||
|         /** @var PiggyBankRepositoryInterface $repository */ | ||||
| @@ -137,9 +125,6 @@ class DestroyController extends Controller | ||||
|         $repository->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyRules(): void | ||||
|     { | ||||
|         /** @var RuleGroupRepositoryInterface $repository */ | ||||
| @@ -147,9 +132,6 @@ class DestroyController extends Controller | ||||
|         $repository->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyRecurringTransactions(): void | ||||
|     { | ||||
|         /** @var RecurringRepositoryInterface $repository */ | ||||
| @@ -157,9 +139,6 @@ class DestroyController extends Controller | ||||
|         $repository->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyCategories(): void | ||||
|     { | ||||
|         /** @var CategoryRepositoryInterface $categoryRepos */ | ||||
| @@ -167,9 +146,6 @@ class DestroyController extends Controller | ||||
|         $categoryRepos->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * | ||||
|      */ | ||||
|     private function destroyTags(): void | ||||
|     { | ||||
|         /** @var TagRepositoryInterface $tagRepository */ | ||||
| @@ -177,9 +153,6 @@ class DestroyController extends Controller | ||||
|         $tagRepository->destroyAll(); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @return void | ||||
|      */ | ||||
|     private function destroyObjectGroups(): void | ||||
|     { | ||||
|         /** @var ObjectGroupRepositoryInterface $repository */ | ||||
| @@ -188,7 +161,7 @@ class DestroyController extends Controller | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param array $types <int, string> | ||||
|      * @param array<int, string> $types | ||||
|      */ | ||||
|     private function destroyAccounts(array $types): void | ||||
|     { | ||||
| @@ -203,6 +176,7 @@ class DestroyController extends Controller | ||||
|             if (true === $this->unused && 0 === $count) { | ||||
|                 app('log')->info(sprintf('Deleted unused account #%d "%s"', $account->id, $account->name)); | ||||
|                 $service->destroy($account, null); | ||||
| 
 | ||||
|                 continue; | ||||
|             } | ||||
|             if (false === $this->unused) { | ||||
| @@ -213,7 +187,7 @@ class DestroyController extends Controller | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param array $types <int, string> | ||||
|      * @param array<int, string> $types | ||||
|      */ | ||||
|     private function destroyTransactions(array $types): void | ||||
|     { | ||||
| @@ -221,6 +195,7 @@ class DestroyController extends Controller | ||||
|         $repository = app(JournalRepositoryInterface::class); | ||||
|         $journals   = $repository->findByType($types); | ||||
|         $service    = app(JournalDestroyService::class); | ||||
| 
 | ||||
|         /** @var TransactionJournal $journal */ | ||||
|         foreach ($journals as $journal) { | ||||
|             $service->destroy($journal); | ||||
|   | ||||
| @@ -29,8 +29,6 @@ use FireflyIII\Api\V1\Requests\Data\Export\ExportRequest; | ||||
| use FireflyIII\Exceptions\FireflyException; | ||||
| use FireflyIII\Support\Export\ExportDataGenerator; | ||||
| use Illuminate\Http\Response as LaravelResponse; | ||||
| use Psr\Container\ContainerExceptionInterface; | ||||
| use Psr\Container\NotFoundExceptionInterface; | ||||
| 
 | ||||
| /** | ||||
|  * Class ExportController | ||||
| @@ -59,12 +57,7 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportAccounts
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
| @@ -75,46 +68,12 @@ class ExportController extends Controller | ||||
|         return $this->returnExport('accounts'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @param string $key | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws FireflyException | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
|     private function returnExport(string $key): LaravelResponse | ||||
|     { | ||||
|         $date     = date('Y-m-d-H-i-s'); | ||||
|         $fileName = sprintf('%s-export-%s.csv', $date, $key); | ||||
|         $data     = $this->exporter->export(); | ||||
| 
 | ||||
|         /** @var LaravelResponse $response */ | ||||
|         $response = response($data[$key]); | ||||
|         $response | ||||
|             ->header('Content-Description', 'File Transfer') | ||||
|             ->header('Content-Type', 'application/octet-stream') | ||||
|             ->header('Content-Disposition', 'attachment; filename=' . $fileName) | ||||
|             ->header('Content-Transfer-Encoding', 'binary') | ||||
|             ->header('Connection', 'Keep-Alive') | ||||
|             ->header('Expires', '0') | ||||
|             ->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') | ||||
|             ->header('Pragma', 'public') | ||||
|             ->header('Content-Length', (string)strlen($data[$key])); | ||||
| 
 | ||||
|         return $response; | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportBills
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function bills(ExportRequest $request): LaravelResponse | ||||
| @@ -128,12 +87,8 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportBudgets
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function budgets(ExportRequest $request): LaravelResponse | ||||
| @@ -147,12 +102,8 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportCategories
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function categories(ExportRequest $request): LaravelResponse | ||||
| @@ -166,12 +117,8 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportPiggies
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function piggyBanks(ExportRequest $request): LaravelResponse | ||||
| @@ -185,12 +132,8 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportRecurring
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function recurring(ExportRequest $request): LaravelResponse | ||||
| @@ -204,12 +147,8 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportRules
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function rules(ExportRequest $request): LaravelResponse | ||||
| @@ -223,12 +162,8 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportTags
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      * | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function tags(ExportRequest $request): LaravelResponse | ||||
| @@ -242,12 +177,7 @@ class ExportController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/exportTransactions
 | ||||
|      * | ||||
|      * @param ExportRequest $request | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws ContainerExceptionInterface | ||||
|      * @throws FireflyException | ||||
|      * @throws NotFoundExceptionInterface | ||||
|      */ | ||||
|     public function transactions(ExportRequest $request): LaravelResponse | ||||
|     { | ||||
| @@ -259,4 +189,30 @@ class ExportController extends Controller | ||||
| 
 | ||||
|         return $this->returnExport('transactions'); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     private function returnExport(string $key): LaravelResponse | ||||
|     { | ||||
|         $date     = date('Y-m-d-H-i-s'); | ||||
|         $fileName = sprintf('%s-export-%s.csv', $date, $key); | ||||
|         $data     = $this->exporter->export(); | ||||
| 
 | ||||
|         /** @var LaravelResponse $response */ | ||||
|         $response = response($data[$key]); | ||||
|         $response | ||||
|             ->header('Content-Description', 'File Transfer') | ||||
|             ->header('Content-Type', 'application/octet-stream') | ||||
|             ->header('Content-Disposition', 'attachment; filename='.$fileName) | ||||
|             ->header('Content-Transfer-Encoding', 'binary') | ||||
|             ->header('Connection', 'Keep-Alive') | ||||
|             ->header('Expires', '0') | ||||
|             ->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') | ||||
|             ->header('Pragma', 'public') | ||||
|             ->header('Content-Length', (string) strlen($data[$key])) | ||||
|         ; | ||||
| 
 | ||||
|         return $response; | ||||
|     } | ||||
| } | ||||
|   | ||||
| @@ -47,8 +47,6 @@ class PurgeController extends Controller | ||||
|      * TODO cleanup and use repositories. | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/data/purgeData
 | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function purge(): JsonResponse | ||||
|     { | ||||
| @@ -64,8 +62,10 @@ class PurgeController extends Controller | ||||
|         Bill::whereUserId($user->id)->onlyTrashed()->forceDelete(); | ||||
| 
 | ||||
|         // piggies
 | ||||
|         $set = PiggyBank::leftJoin('accounts', 'accounts.id', 'piggy_banks.account_id') | ||||
|                         ->where('accounts.user_id', $user->id)->onlyTrashed()->get(['piggy_banks.*']); | ||||
|         $set  = PiggyBank::leftJoin('accounts', 'accounts.id', 'piggy_banks.account_id') | ||||
|             ->where('accounts.user_id', $user->id)->onlyTrashed()->get(['piggy_banks.*']) | ||||
|         ; | ||||
| 
 | ||||
|         /** @var PiggyBank $piggy */ | ||||
|         foreach ($set as $piggy) { | ||||
|             $piggy->forceDelete(); | ||||
| @@ -86,7 +86,6 @@ class PurgeController extends Controller | ||||
|         // tags
 | ||||
|         Tag::whereUserId($user->id)->onlyTrashed()->forceDelete(); | ||||
| 
 | ||||
| 
 | ||||
|         // accounts
 | ||||
|         Account::whereUserId($user->id)->onlyTrashed()->forceDelete(); | ||||
| 
 | ||||
|   | ||||
| @@ -32,7 +32,6 @@ use FireflyIII\Support\Http\Api\ApiSupport; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| 
 | ||||
| /** | ||||
|  * | ||||
|  * Class AccountController | ||||
|  * | ||||
|  * Shows expense information grouped or limited by date. | ||||
| @@ -47,16 +46,14 @@ class AccountController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         parent::__construct(); | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 $user             = auth()->user(); | ||||
|                 $this->repository = app(AccountRepositoryInterface::class); | ||||
|                 $user                = auth()->user(); | ||||
|                 $this->repository    = app(AccountRepositoryInterface::class); | ||||
|                 $this->repository->setUser($user); | ||||
| 
 | ||||
|                 $this->opsRepository = app(OperationsRepositoryInterface::class); | ||||
| @@ -70,10 +67,6 @@ class AccountController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseAsset
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function asset(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -101,10 +94,6 @@ class AccountController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseExpense
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function expense(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -60,18 +60,14 @@ class BillController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseBill
 | ||||
|      * | ||||
|      * Expenses per bill, possibly filtered by bill and account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function bill(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $bills    = $request->getBills(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $bills      = $request->getBills(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // get all bills:
 | ||||
|         if (0 === $bills->count()) { | ||||
| @@ -79,7 +75,7 @@ class BillController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts); | ||||
|         $collector->setBills($bills); | ||||
| 
 | ||||
| @@ -92,7 +88,7 @@ class BillController extends Controller | ||||
|             $foreignKey        = sprintf('%d-%d', $billId, $foreignCurrencyId); | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$key]                     ??= [ | ||||
|                 $response[$key] ??= [ | ||||
|                     'id'               => (string)$billId, | ||||
|                     'name'             => $journal['bill_name'], | ||||
|                     'difference'       => '0', | ||||
| @@ -104,7 +100,7 @@ class BillController extends Controller | ||||
|                 $response[$key]['difference_float'] = (float)$response[$key]['difference']; // intentional float
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignKey]                     ??= [ | ||||
|                 $response[$foreignKey] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
| @@ -123,20 +119,16 @@ class BillController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseNoBill
 | ||||
|      * | ||||
|      * Expenses for no bill filtered by account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noBill(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts); | ||||
|         $collector->withoutBill(); | ||||
| 
 | ||||
| @@ -147,7 +139,7 @@ class BillController extends Controller | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
| @@ -157,7 +149,7 @@ class BillController extends Controller | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // intentional float
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class BudgetController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -67,10 +65,6 @@ class BudgetController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseBudget
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function budget(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -82,9 +76,11 @@ class BudgetController extends Controller | ||||
|         if (0 === $budgets->count()) { | ||||
|             $budgets = $this->repository->getActiveBudgets(); | ||||
|         } | ||||
| 
 | ||||
|         /** @var Budget $budget */ | ||||
|         foreach ($budgets as $budget) { | ||||
|             $expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection([$budget])); | ||||
| 
 | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
| @@ -104,10 +100,6 @@ class BudgetController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseNoBudget
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noBudget(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -116,6 +108,7 @@ class BudgetController extends Controller | ||||
|         $assetAccounts = $request->getAssetAccounts(); | ||||
|         $result        = []; | ||||
|         $expenses      = $this->noRepository->sumExpenses($start, $end, $assetAccounts); | ||||
| 
 | ||||
|         /** @var array $expense */ | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|   | ||||
| @@ -44,8 +44,6 @@ class CategoryController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -68,10 +66,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferCategory
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function category(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -83,9 +77,11 @@ class CategoryController extends Controller | ||||
|         if (0 === $categories->count()) { | ||||
|             $categories = $this->repository->getCategories(); | ||||
|         } | ||||
| 
 | ||||
|         /** @var Category $category */ | ||||
|         foreach ($categories as $category) { | ||||
|             $expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection([$category])); | ||||
| 
 | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
| @@ -105,10 +101,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferNoCategory
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noCategory(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -117,6 +109,7 @@ class CategoryController extends Controller | ||||
|         $assetAccounts = $request->getAssetAccounts(); | ||||
|         $result        = []; | ||||
|         $expenses      = $this->noRepository->sumExpenses($start, $end, $assetAccounts); | ||||
| 
 | ||||
|         /** @var array $expense */ | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|   | ||||
| @@ -37,20 +37,16 @@ class PeriodController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseTotal
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function total(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type)
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
| @@ -58,7 +54,7 @@ class PeriodController extends Controller | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
| @@ -68,7 +64,7 @@ class PeriodController extends Controller | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // intentional float
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|   | ||||
| @@ -59,48 +59,44 @@ class TagController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseNoTag
 | ||||
|      * | ||||
|      * Expenses for no tag filtered by account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noTag(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts); | ||||
|         $collector->withoutTags(); | ||||
| 
 | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
|                     'currency_id'      => (string) $currencyId, | ||||
|                     'currency_code'    => $journal['currency_code'], | ||||
|                 ]; | ||||
|                 $response[$currencyId]['difference']       = bcadd($response[$currencyId]['difference'], $journal['amount']); | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // float but on purpose.
 | ||||
|                 $response[$currencyId]['difference_float'] = (float) $response[$currencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|                     'currency_id'      => (string) $foreignCurrencyId, | ||||
|                     'currency_code'    => $journal['foreign_currency_code'], | ||||
|                 ]; | ||||
|                 $response[$foreignCurrencyId]['difference']       = bcadd($response[$foreignCurrencyId]['difference'], $journal['foreign_amount']); | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float)$response[$foreignCurrencyId]['difference']; // float but on purpose.
 | ||||
|                 $response[$foreignCurrencyId]['difference_float'] = (float) $response[$foreignCurrencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|         } | ||||
| 
 | ||||
| @@ -112,18 +108,14 @@ class TagController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightExpenseTag
 | ||||
|      * | ||||
|      * Expenses per tag, possibly filtered by tag and account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function tag(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $tags     = $request->getTags(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $tags       = $request->getTags(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // get all tags:
 | ||||
|         if (0 === $tags->count()) { | ||||
| @@ -131,14 +123,15 @@ class TagController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::WITHDRAWAL])->setRange($start, $end)->setSourceAccounts($accounts); | ||||
|         $collector->setTags($tags); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         /** @var array $journal */ | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
|             $currencyId        = (int) $journal['currency_id']; | ||||
|             $foreignCurrencyId = (int) $journal['foreign_currency_id']; | ||||
| 
 | ||||
|             /** @var array $tag */ | ||||
|             foreach ($journal['tags'] as $tag) { | ||||
| @@ -148,16 +141,16 @@ class TagController extends Controller | ||||
| 
 | ||||
|                 // on currency ID
 | ||||
|                 if (0 !== $currencyId) { | ||||
|                     $response[$key]                     ??= [ | ||||
|                         'id'               => (string)$tagId, | ||||
|                     $response[$key] ??= [ | ||||
|                         'id'               => (string) $tagId, | ||||
|                         'name'             => $tag['name'], | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$currencyId, | ||||
|                         'currency_id'      => (string) $currencyId, | ||||
|                         'currency_code'    => $journal['currency_code'], | ||||
|                     ]; | ||||
|                     $response[$key]['difference']       = bcadd($response[$key]['difference'], $journal['amount']); | ||||
|                     $response[$key]['difference_float'] = (float)$response[$key]['difference']; // float but on purpose.
 | ||||
|                     $response[$key]['difference_float'] = (float) $response[$key]['difference']; // float but on purpose.
 | ||||
|                 } | ||||
| 
 | ||||
|                 // on foreign ID
 | ||||
| @@ -165,11 +158,11 @@ class TagController extends Controller | ||||
|                     $response[$foreignKey]                     = $journal[$foreignKey] ?? [ | ||||
|                         'difference'       => '0', | ||||
|                         'difference_float' => 0, | ||||
|                         'currency_id'      => (string)$foreignCurrencyId, | ||||
|                         'currency_id'      => (string) $foreignCurrencyId, | ||||
|                         'currency_code'    => $journal['foreign_currency_code'], | ||||
|                     ]; | ||||
|                     $response[$foreignKey]['difference']       = bcadd($response[$foreignKey]['difference'], $journal['foreign_amount']); | ||||
|                     $response[$foreignKey]['difference_float'] = (float)$response[$foreignKey]['difference']; // float but on purpose.
 | ||||
|                     $response[$foreignKey]['difference_float'] = (float) $response[$foreignKey]['difference']; // float but on purpose.
 | ||||
|                 } | ||||
|             } | ||||
|         } | ||||
|   | ||||
| @@ -32,7 +32,6 @@ use FireflyIII\Support\Http\Api\ApiSupport; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| 
 | ||||
| /** | ||||
|  * | ||||
|  * Class AccountController | ||||
|  * | ||||
|  * Shows income information grouped or limited by date. | ||||
| @@ -47,16 +46,14 @@ class AccountController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
|         parent::__construct(); | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 $user             = auth()->user(); | ||||
|                 $this->repository = app(AccountRepositoryInterface::class); | ||||
|                 $user                = auth()->user(); | ||||
|                 $this->repository    = app(AccountRepositoryInterface::class); | ||||
|                 $this->repository->setUser($user); | ||||
| 
 | ||||
|                 $this->opsRepository = app(OperationsRepositoryInterface::class); | ||||
| @@ -70,10 +67,6 @@ class AccountController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeAsset
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function asset(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -82,6 +75,7 @@ class AccountController extends Controller | ||||
|         $assetAccounts = $request->getAssetAccounts(); | ||||
|         $income        = $this->opsRepository->sumIncomeByDestination($start, $end, $assetAccounts); | ||||
|         $result        = []; | ||||
| 
 | ||||
|         /** @var array $entry */ | ||||
|         foreach ($income as $entry) { | ||||
|             $result[] = [ | ||||
| @@ -100,10 +94,6 @@ class AccountController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeRevenue
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function revenue(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -44,8 +44,6 @@ class CategoryController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -68,10 +66,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeCategory
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function category(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -83,9 +77,11 @@ class CategoryController extends Controller | ||||
|         if (0 === $categories->count()) { | ||||
|             $categories = $this->repository->getCategories(); | ||||
|         } | ||||
| 
 | ||||
|         /** @var Category $category */ | ||||
|         foreach ($categories as $category) { | ||||
|             $expenses = $this->opsRepository->sumIncome($start, $end, $assetAccounts, new Collection([$category])); | ||||
| 
 | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
| @@ -105,10 +101,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeNoCategory
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noCategory(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -117,6 +109,7 @@ class CategoryController extends Controller | ||||
|         $assetAccounts = $request->getAssetAccounts(); | ||||
|         $result        = []; | ||||
|         $expenses      = $this->noRepository->sumIncome($start, $end, $assetAccounts); | ||||
| 
 | ||||
|         /** @var array $expense */ | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|   | ||||
| @@ -37,20 +37,16 @@ class PeriodController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeTotal
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function total(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type)
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::DEPOSIT])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
| @@ -58,7 +54,7 @@ class PeriodController extends Controller | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
| @@ -68,7 +64,7 @@ class PeriodController extends Controller | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; // float but on purpose.
 | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|   | ||||
| @@ -60,20 +60,16 @@ class TagController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeTag
 | ||||
|      * | ||||
|      * Expenses for no tag filtered by account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noTag(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::DEPOSIT])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $collector->withoutTags(); | ||||
| 
 | ||||
| @@ -84,7 +80,7 @@ class TagController extends Controller | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
| @@ -94,7 +90,7 @@ class TagController extends Controller | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
| @@ -116,18 +112,14 @@ class TagController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightIncomeNoTag
 | ||||
|      * | ||||
|      * Expenses per tag, possibly filtered by tag and account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function tag(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $tags     = $request->getTags(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $tags       = $request->getTags(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // get all tags:
 | ||||
|         if (0 === $tags->count()) { | ||||
| @@ -135,10 +127,11 @@ class TagController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::DEPOSIT])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $collector->setTags($tags); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         /** @var array $journal */ | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
| @@ -152,7 +145,7 @@ class TagController extends Controller | ||||
| 
 | ||||
|                 // on currency ID
 | ||||
|                 if (0 !== $currencyId) { | ||||
|                     $response[$key]                     ??= [ | ||||
|                     $response[$key] ??= [ | ||||
|                         'id'               => (string)$tagId, | ||||
|                         'name'             => $tag['name'], | ||||
|                         'difference'       => '0', | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class AccountController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -60,10 +58,6 @@ class AccountController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransfers
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function asset(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class CategoryController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -67,10 +65,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferCategory
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function category(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -82,9 +76,11 @@ class CategoryController extends Controller | ||||
|         if (0 === $categories->count()) { | ||||
|             $categories = $this->repository->getCategories(); | ||||
|         } | ||||
| 
 | ||||
|         /** @var Category $category */ | ||||
|         foreach ($categories as $category) { | ||||
|             $expenses = $this->opsRepository->sumTransfers($start, $end, $assetAccounts, new Collection([$category])); | ||||
| 
 | ||||
|             /** @var array $expense */ | ||||
|             foreach ($expenses as $expense) { | ||||
|                 $result[] = [ | ||||
| @@ -104,10 +100,6 @@ class CategoryController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferNoCategory
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noCategory(GenericRequest $request): JsonResponse | ||||
|     { | ||||
| @@ -116,6 +108,7 @@ class CategoryController extends Controller | ||||
|         $assetAccounts = $request->getAssetAccounts(); | ||||
|         $result        = []; | ||||
|         $expenses      = $this->noRepository->sumTransfers($start, $end, $assetAccounts); | ||||
| 
 | ||||
|         /** @var array $expense */ | ||||
|         foreach ($expenses as $expense) { | ||||
|             $result[] = [ | ||||
|   | ||||
| @@ -37,20 +37,16 @@ class PeriodController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferTotal
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function total(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type)
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
|         foreach ($genericSet as $journal) { | ||||
| @@ -58,7 +54,7 @@ class PeriodController extends Controller | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
| @@ -68,7 +64,7 @@ class PeriodController extends Controller | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
|   | ||||
| @@ -57,20 +57,16 @@ class TagController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferNoTag
 | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function noTag(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $collector->withoutTags(); | ||||
| 
 | ||||
| @@ -81,7 +77,7 @@ class TagController extends Controller | ||||
|             $foreignCurrencyId = (int)$journal['foreign_currency_id']; | ||||
| 
 | ||||
|             if (0 !== $currencyId) { | ||||
|                 $response[$currencyId]                     ??= [ | ||||
|                 $response[$currencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$currencyId, | ||||
| @@ -91,7 +87,7 @@ class TagController extends Controller | ||||
|                 $response[$currencyId]['difference_float'] = (float)$response[$currencyId]['difference']; | ||||
|             } | ||||
|             if (0 !== $foreignCurrencyId) { | ||||
|                 $response[$foreignCurrencyId]                     ??= [ | ||||
|                 $response[$foreignCurrencyId] ??= [ | ||||
|                     'difference'       => '0', | ||||
|                     'difference_float' => 0, | ||||
|                     'currency_id'      => (string)$foreignCurrencyId, | ||||
| @@ -113,18 +109,14 @@ class TagController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/insight/insightTransferTag
 | ||||
|      * | ||||
|      * Transfers per tag, possibly filtered by tag and account. | ||||
|      * | ||||
|      * @param GenericRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function tag(GenericRequest $request): JsonResponse | ||||
|     { | ||||
|         $accounts = $request->getAssetAccounts(); | ||||
|         $tags     = $request->getTags(); | ||||
|         $start    = $request->getStart(); | ||||
|         $end      = $request->getEnd(); | ||||
|         $response = []; | ||||
|         $accounts   = $request->getAssetAccounts(); | ||||
|         $tags       = $request->getTags(); | ||||
|         $start      = $request->getStart(); | ||||
|         $end        = $request->getEnd(); | ||||
|         $response   = []; | ||||
| 
 | ||||
|         // get all tags:
 | ||||
|         if (0 === $tags->count()) { | ||||
| @@ -132,10 +124,11 @@ class TagController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // collect all expenses in this period (regardless of type) by the given bills and accounts.
 | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector  = app(GroupCollectorInterface::class); | ||||
|         $collector->setTypes([TransactionType::TRANSFER])->setRange($start, $end)->setDestinationAccounts($accounts); | ||||
|         $collector->setTags($tags); | ||||
|         $genericSet = $collector->getExtractedJournals(); | ||||
| 
 | ||||
|         /** @var array $journal */ | ||||
|         foreach ($genericSet as $journal) { | ||||
|             $currencyId        = (int)$journal['currency_id']; | ||||
| @@ -149,7 +142,7 @@ class TagController extends Controller | ||||
| 
 | ||||
|                 // on currency ID
 | ||||
|                 if (0 !== $currencyId) { | ||||
|                     $response[$key]                     ??= [ | ||||
|                     $response[$key] ??= [ | ||||
|                         'id'               => (string)$tagId, | ||||
|                         'name'             => $tag['name'], | ||||
|                         'difference'       => '0', | ||||
|   | ||||
| @@ -39,8 +39,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -60,10 +58,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/deleteAccount
 | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param Account $account | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Account $account): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -53,8 +53,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -73,29 +71,26 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/listAttachmentByAccount
 | ||||
|      * | ||||
|      * @param Account $account | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function attachments(Account $account): JsonResponse | ||||
|     { | ||||
|         $manager    = $this->getManager(); | ||||
|         $pageSize   = $this->parameters->get('limit'); | ||||
|         $collection = $this->repository->getAttachments($account); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $collection  = $this->repository->getAttachments($account); | ||||
| 
 | ||||
|         $count       = $collection->count(); | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.accounts.attachments', [$account->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.accounts.attachments', [$account->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -105,33 +100,30 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/listPiggyBankByAccount
 | ||||
|      * | ||||
|      * @param Account $account | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function piggyBanks(Account $account): JsonResponse | ||||
|     { | ||||
|         // create some objects:
 | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->repository->getPiggyBanks($account); | ||||
|         $count      = $collection->count(); | ||||
|         $piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getPiggyBanks($account); | ||||
|         $count       = $collection->count(); | ||||
|         $piggyBanks  = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.accounts.piggy-banks', [$account->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.accounts.piggy-banks', [$account->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var PiggyBankTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks'); | ||||
|         $resource    = new FractalCollection($piggyBanks, $transformer, 'piggy_banks'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -143,28 +135,25 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show all transaction groups related to the account. | ||||
|      * | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * @param Account $account | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Account $account): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $type     = $request->get('type') ?? 'default'; | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $type        = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types       = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin       = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector   = app(GroupCollectorInterface::class); | ||||
|         $collector->setUser($admin)->setAccounts(new Collection([$account])) | ||||
|                   ->withAPIInformation()->setLimit($pageSize)->setPage($this->parameters->get('page'))->setTypes($types); | ||||
|             ->withAPIInformation()->setLimit($pageSize)->setPage($this->parameters->get('page'))->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -173,15 +162,15 @@ class ListController extends Controller | ||||
|             $collector->setEnd($this->parameters->get('end')); | ||||
|         } | ||||
| 
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.accounts.transactions', [$account->id]) . $this->buildParams()); | ||||
|         $groups = $paginator->getCollection(); | ||||
|         $paginator   = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.accounts.transactions', [$account->id]).$this->buildParams()); | ||||
|         $groups      = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($groups, $transformer, 'transactions'); | ||||
|         $resource    = new FractalCollection($groups, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -49,8 +49,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -71,40 +69,36 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(Request $request): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $type    = $request->get('type') ?? 'all'; | ||||
|         $manager     = $this->getManager(); | ||||
|         $type        = $request->get('type') ?? 'all'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $types    = $this->mapAccountTypes($this->parameters->get('type')); | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $types       = $this->mapAccountTypes($this->parameters->get('type')); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of accounts. Count it and split it.
 | ||||
|         $this->repository->resetAccountOrder(); | ||||
|         $collection = $this->repository->getAccountsByType($types, $this->parameters->get('sort') ?? []); | ||||
|         $count      = $collection->count(); | ||||
|         $collection  = $this->repository->getAccountsByType($types, $this->parameters->get('sort') ?? []); | ||||
|         $count       = $collection->count(); | ||||
| 
 | ||||
|         // continue sort:
 | ||||
| 
 | ||||
| 
 | ||||
|         $accounts = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $accounts    = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.accounts.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($accounts, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.accounts.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AccountTransformer $transformer */ | ||||
|         $transformer = app(AccountTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($accounts, $transformer, self::RESOURCE_KEY); | ||||
|         $resource    = new FractalCollection($accounts, $transformer, self::RESOURCE_KEY); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -115,22 +109,18 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/getAccount
 | ||||
|      * | ||||
|      * Show single instance. | ||||
|      * | ||||
|      * @param Account $account | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Account $account): JsonResponse | ||||
|     { | ||||
|         // get list of accounts. Count it and split it.
 | ||||
|         $this->repository->resetAccountOrder(); | ||||
|         $account->refresh(); | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var AccountTransformer $transformer */ | ||||
|         $transformer = app(AccountTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new Item($account, $transformer, self::RESOURCE_KEY); | ||||
|         $resource    = new Item($account, $transformer, self::RESOURCE_KEY); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -41,8 +41,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -62,23 +60,19 @@ class StoreController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/storeAccount
 | ||||
|      * | ||||
|      * Store a new instance. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $data = $request->getAllAccountData(); | ||||
|         $data        = $request->getAllAccountData(); | ||||
|         $this->repository->resetAccountOrder(); | ||||
|         $account = $this->repository->store($data); | ||||
|         $manager = $this->getManager(); | ||||
|         $account     = $this->repository->store($data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var AccountTransformer $transformer */ | ||||
|         $transformer = app(AccountTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($account, $transformer, self::RESOURCE_KEY); | ||||
|         $resource    = new Item($account, $transformer, self::RESOURCE_KEY); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -42,8 +42,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AccountController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -63,26 +61,21 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/accounts/updateAccount
 | ||||
|      * | ||||
|      * Update account. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Account       $account | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Account $account): JsonResponse | ||||
|     { | ||||
|         app('log')->debug(sprintf('Now in %s', __METHOD__)); | ||||
|         $data         = $request->getUpdateData(); | ||||
|         $data['type'] = config('firefly.shortNamesByFullName.' . $account->accountType->type); | ||||
|         $data['type'] = config('firefly.shortNamesByFullName.'.$account->accountType->type); | ||||
|         $account      = $this->repository->update($account, $data); | ||||
|         $manager      = $this->getManager(); | ||||
|         $account->refresh(); | ||||
|         app('preferences')->mark(); | ||||
| 
 | ||||
|         /** @var AccountTransformer $transformer */ | ||||
|         $transformer = app(AccountTransformer::class); | ||||
|         $transformer  = app(AccountTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new Item($account, $transformer, self::RESOURCE_KEY); | ||||
|         $resource     = new Item($account, $transformer, self::RESOURCE_KEY); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -29,6 +29,8 @@ use FireflyIII\Models\Attachment; | ||||
| use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||||
| 
 | ||||
| /** | ||||
|  * Class DestroyController | ||||
| @@ -39,8 +41,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * DestroyController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -63,14 +63,15 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/deleteAttachment
 | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * | ||||
|      * @param Attachment $attachment | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Attachment $attachment): JsonResponse | ||||
|     { | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
| 
 | ||||
|         $this->repository->destroy($attachment); | ||||
|         app('preferences')->mark(); | ||||
| 
 | ||||
|   | ||||
| @@ -33,9 +33,11 @@ use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Http\Response as LaravelResponse; | ||||
| use Illuminate\Pagination\LengthAwarePaginator; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use League\Fractal\Pagination\IlluminatePaginatorAdapter; | ||||
| use League\Fractal\Resource\Collection as FractalCollection; | ||||
| use League\Fractal\Resource\Item; | ||||
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||||
| 
 | ||||
| /** | ||||
|  * Class ShowController | ||||
| @@ -46,8 +48,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ShowController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -71,13 +71,15 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Download an attachment. | ||||
|      * | ||||
|      * @param Attachment $attachment | ||||
|      * | ||||
|      * @return LaravelResponse | ||||
|      * @throws   FireflyException | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function download(Attachment $attachment): LaravelResponse | ||||
|     { | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
|         if (false === $attachment->uploaded) { | ||||
|             throw new FireflyException('200000: File has not been uploaded (yet).'); | ||||
|         } | ||||
| @@ -85,27 +87,29 @@ class ShowController extends Controller | ||||
|             throw new FireflyException('200000: File has not been uploaded (yet).'); | ||||
|         } | ||||
|         if ($this->repository->exists($attachment)) { | ||||
|             $content = $this->repository->getContent($attachment); | ||||
|             $content  = $this->repository->getContent($attachment); | ||||
|             if ('' === $content) { | ||||
|                 throw new FireflyException('200002: File is empty (zero bytes).'); | ||||
|             } | ||||
|             $quoted = sprintf('"%s"', addcslashes(basename($attachment->filename), '"\\')); | ||||
|             $quoted   = sprintf('"%s"', addcslashes(basename($attachment->filename), '"\\')); | ||||
| 
 | ||||
|             /** @var LaravelResponse $response */ | ||||
|             $response = response($content); | ||||
|             $response | ||||
|                 ->header('Content-Description', 'File Transfer') | ||||
|                 ->header('Content-Type', 'application/octet-stream') | ||||
|                 ->header('Content-Disposition', 'attachment; filename=' . $quoted) | ||||
|                 ->header('Content-Disposition', 'attachment; filename='.$quoted) | ||||
|                 ->header('Content-Transfer-Encoding', 'binary') | ||||
|                 ->header('Connection', 'Keep-Alive') | ||||
|                 ->header('Expires', '0') | ||||
|                 ->header('Cache-Control', 'must-revalidate, post-check=0, pre-check=0') | ||||
|                 ->header('Pragma', 'public') | ||||
|                 ->header('Content-Length', (string)strlen($content)); | ||||
|                 ->header('Content-Length', (string)strlen($content)) | ||||
|             ; | ||||
| 
 | ||||
|             return $response; | ||||
|         } | ||||
| 
 | ||||
|         throw new FireflyException('200003: File does not exist.'); | ||||
|     } | ||||
| 
 | ||||
| @@ -115,15 +119,20 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
| 
 | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of attachments. Count it and split it.
 | ||||
|         $collection  = $this->repository->get(); | ||||
| @@ -131,14 +140,14 @@ class ShowController extends Controller | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.attachments.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.attachments.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -149,19 +158,21 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/getAttachment
 | ||||
|      * | ||||
|      * Display the specified resource. | ||||
|      * | ||||
|      * @param Attachment $attachment | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Attachment $attachment): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($attachment, $transformer, 'attachments'); | ||||
|         $resource    = new Item($attachment, $transformer, 'attachments'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -34,7 +34,9 @@ use FireflyIII\Transformers\AttachmentTransformer; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Http\Request; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use League\Fractal\Resource\Item; | ||||
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||||
| 
 | ||||
| /** | ||||
|  * Class StoreController | ||||
| @@ -45,8 +47,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * StoreController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -70,38 +70,40 @@ class StoreController extends Controller | ||||
|      * | ||||
|      * Store a newly created resource in storage. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
|         app('log')->debug(sprintf('Now in %s', __METHOD__)); | ||||
|         $data       = $request->getAll(); | ||||
|         $attachment = $this->repository->store($data); | ||||
|         $manager    = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $attachment  = $this->repository->store($data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($attachment, $transformer, 'attachments'); | ||||
|         $resource    = new Item($attachment, $transformer, 'attachments'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
| 
 | ||||
|     /** | ||||
|      * Upload an attachment. | ||||
|      * | ||||
|      * | ||||
|      * @param Request    $request | ||||
|      * @param Attachment $attachment | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function upload(Request $request, Attachment $attachment): JsonResponse | ||||
|     { | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
| 
 | ||||
|         /** @var AttachmentHelperInterface $helper */ | ||||
|         $helper = app(AttachmentHelperInterface::class); | ||||
|         $body   = $request->getContent(); | ||||
|   | ||||
| @@ -31,7 +31,9 @@ use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface; | ||||
| use FireflyIII\Transformers\AttachmentTransformer; | ||||
| use FireflyIII\User; | ||||
| use Illuminate\Http\JsonResponse; | ||||
| use Illuminate\Support\Facades\Log; | ||||
| use League\Fractal\Resource\Item; | ||||
| use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; | ||||
| 
 | ||||
| /** | ||||
|  * Class UpdateController | ||||
| @@ -42,8 +44,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * UpdateController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -66,23 +66,23 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/updateAttachment
 | ||||
|      * | ||||
|      * Update the specified resource in storage. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Attachment    $attachment | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Attachment $attachment): JsonResponse | ||||
|     { | ||||
|         $data = $request->getAll(); | ||||
|         if(true === auth()->user()->hasRole('demo')) { | ||||
|             Log::channel('audit')->info(sprintf('Demo user tries to access attachment API in %s', __METHOD__)); | ||||
| 
 | ||||
|             throw new NotFoundHttpException(); | ||||
|         } | ||||
|         $data        = $request->getAll(); | ||||
|         $this->repository->update($attachment, $data); | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($attachment, $transformer, 'attachments'); | ||||
|         $resource    = new Item($attachment, $transformer, 'attachments'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -44,8 +44,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * AvailableBudgetController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -68,18 +66,17 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager          = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize         = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         $start = $this->parameters->get('start'); | ||||
|         $end   = $this->parameters->get('end'); | ||||
|         $start            = $this->parameters->get('start'); | ||||
|         $end              = $this->parameters->get('end'); | ||||
| 
 | ||||
|         // get list of available budgets. Count it and split it.
 | ||||
|         $collection       = $this->abRepository->getAvailableBudgetsByDate($start, $end); | ||||
| @@ -87,14 +84,14 @@ class ShowController extends Controller | ||||
|         $availableBudgets = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($availableBudgets, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.available-budgets.index') . $this->buildParams()); | ||||
|         $paginator        = new LengthAwarePaginator($availableBudgets, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.available-budgets.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AvailableBudgetTransformer $transformer */ | ||||
|         $transformer = app(AvailableBudgetTransformer::class); | ||||
|         $transformer      = app(AvailableBudgetTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($availableBudgets, $transformer, 'available_budgets'); | ||||
|         $resource         = new FractalCollection($availableBudgets, $transformer, 'available_budgets'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -105,20 +102,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/available_budgets/getAvailableBudget
 | ||||
|      * | ||||
|      * Display the specified resource. | ||||
|      * | ||||
|      * @param AvailableBudget $availableBudget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(AvailableBudget $availableBudget): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var AvailableBudgetTransformer $transformer */ | ||||
|         $transformer = app(AvailableBudgetTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($availableBudget, $transformer, 'available_budgets'); | ||||
|         $resource    = new Item($availableBudget, $transformer, 'available_budgets'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -37,8 +37,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BillController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -58,10 +56,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/deleteBill
 | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param Bill $bill | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Bill $bill): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -50,8 +50,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BillController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -72,29 +70,26 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @param Bill $bill | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function attachments(Bill $bill): JsonResponse | ||||
|     { | ||||
|         $manager    = $this->getManager(); | ||||
|         $pageSize   = $this->parameters->get('limit'); | ||||
|         $collection = $this->repository->getAttachments($bill); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $collection  = $this->repository->getAttachments($bill); | ||||
| 
 | ||||
|         $count       = $collection->count(); | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.bills.attachments', [$bill->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.bills.attachments', [$bill->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -106,31 +101,28 @@ class ListController extends Controller | ||||
|      * | ||||
|      * List all of them. | ||||
|      * | ||||
|      * @param Bill $bill | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function rules(Bill $bill): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->repository->getRulesForBill($bill); | ||||
|         $count      = $collection->count(); | ||||
|         $rules      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getRulesForBill($bill); | ||||
|         $count       = $collection->count(); | ||||
|         $rules       = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.bills.rules', [$bill->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.bills.rules', [$bill->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var RuleTransformer $transformer */ | ||||
|         $transformer = app(RuleTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new FractalCollection($rules, $transformer, 'rules'); | ||||
|         $resource    = new FractalCollection($rules, $transformer, 'rules'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -142,28 +134,23 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show all transactions. | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * | ||||
|      * @param Bill    $bill | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Bill $bill): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $type     = $request->get('type') ?? 'default'; | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // include source + destination account name and type.
 | ||||
| @@ -175,7 +162,8 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -185,15 +173,15 @@ class ListController extends Controller | ||||
|         } | ||||
| 
 | ||||
|         // get paginator.
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.bills.transactions', [$bill->id]) . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.bills.transactions', [$bill->id]).$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BillController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -65,24 +63,23 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $this->repository->correctOrder(); | ||||
|         $bills     = $this->repository->getBills(); | ||||
|         $manager   = $this->getManager(); | ||||
|         $pageSize  = $this->parameters->get('limit'); | ||||
|         $count     = $bills->count(); | ||||
|         $bills     = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $bills       = $this->repository->getBills(); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $count       = $bills->count(); | ||||
|         $bills       = $bills->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $paginator   = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page')); | ||||
| 
 | ||||
|         /** @var BillTransformer $transformer */ | ||||
|         $transformer = app(BillTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($bills, $transformer, 'bills'); | ||||
|         $resource    = new FractalCollection($bills, $transformer, 'bills'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -93,19 +90,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/getBill
 | ||||
|      * | ||||
|      * Show the specified bill. | ||||
|      * | ||||
|      * @param Bill $bill | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Bill $bill): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BillTransformer $transformer */ | ||||
|         $transformer = app(BillTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($bill, $transformer, 'bills'); | ||||
|         $resource    = new Item($bill, $transformer, 'bills'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BillController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -65,22 +63,19 @@ class StoreController extends Controller | ||||
|      * | ||||
|      * Store a bill. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $data    = $request->getAll(); | ||||
|         $bill    = $this->repository->store($data); | ||||
|         $manager = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $bill        = $this->repository->store($data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BillTransformer $transformer */ | ||||
|         $transformer = app(BillTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($bill, $transformer, 'bills'); | ||||
|         $resource    = new Item($bill, $transformer, 'bills'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BillController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -61,23 +59,18 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/updateBill
 | ||||
|      * | ||||
|      * Update a bill. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Bill          $bill | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Bill $bill): JsonResponse | ||||
|     { | ||||
|         $data    = $request->getAll(); | ||||
|         $bill    = $this->repository->update($bill, $data); | ||||
|         $manager = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $bill        = $this->repository->update($bill, $data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BillTransformer $transformer */ | ||||
|         $transformer = app(BillTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($bill, $transformer, 'bills'); | ||||
|         $resource    = new Item($bill, $transformer, 'bills'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -37,8 +37,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * DestroyController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -58,10 +56,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/deleteBudget
 | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param Budget $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Budget $budget): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -40,9 +40,7 @@ use Illuminate\Pagination\LengthAwarePaginator; | ||||
| use League\Fractal\Pagination\IlluminatePaginatorAdapter; | ||||
| use League\Fractal\Resource\Collection as FractalCollection; | ||||
| 
 | ||||
| /*** | ||||
|  * Class ListController | ||||
|  */ | ||||
| // Class ListController
 | ||||
| class ListController extends Controller | ||||
| { | ||||
|     use TransactionFilter; | ||||
| @@ -52,8 +50,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ListController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -74,29 +70,26 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listAttachmentByBudget
 | ||||
|      * | ||||
|      * @param Budget $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function attachments(Budget $budget): JsonResponse | ||||
|     { | ||||
|         $manager    = $this->getManager(); | ||||
|         $pageSize   = $this->parameters->get('limit'); | ||||
|         $collection = $this->repository->getAttachments($budget); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $collection  = $this->repository->getAttachments($budget); | ||||
| 
 | ||||
|         $count       = $collection->count(); | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budgets.attachments', [$budget->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budgets.attachments', [$budget->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -108,26 +101,23 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @param Budget $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function budgetLimits(Budget $budget): JsonResponse | ||||
|     { | ||||
|         $manager  = $this->getManager(); | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $manager      = $this->getManager(); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $this->parameters->set('budget_id', $budget->id); | ||||
|         $collection   = $this->blRepository->getBudgetLimits($budget, $this->parameters->get('start'), $this->parameters->get('end')); | ||||
|         $count        = $collection->count(); | ||||
|         $budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $paginator    = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budgets.budget-limits', [$budget->id]) . $this->buildParams()); | ||||
|         $paginator->setPath(route('api.v1.budgets.budget-limits', [$budget->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var BudgetLimitTransformer $transformer */ | ||||
|         $transformer = app(BudgetLimitTransformer::class); | ||||
|         $transformer  = app(BudgetLimitTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits'); | ||||
|         $resource     = new FractalCollection($budgetLimits, $transformer, 'budget_limits'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -139,29 +129,24 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show all transactions. | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * | ||||
|      * @param Budget  $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Budget $budget): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         $type = $request->get('type') ?? 'default'; | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // filter on budget.
 | ||||
| @@ -173,7 +158,8 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -182,14 +168,14 @@ class ListController extends Controller | ||||
|             $collector->setEnd($this->parameters->get('end')); | ||||
|         } | ||||
| 
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.budgets.transactions', [$budget->id]) . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.budgets.transactions', [$budget->id]).$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -201,27 +187,24 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show all transactions. | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function withoutBudget(Request $request): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         $type = $request->get('type') ?? 'default'; | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // filter on budget.
 | ||||
| @@ -233,7 +216,8 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -242,14 +226,14 @@ class ListController extends Controller | ||||
|             $collector->setEnd($this->parameters->get('end')); | ||||
|         } | ||||
| 
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.budgets.without-budget') . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.budgets.without-budget').$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -45,8 +45,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ListController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -69,30 +67,29 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->repository->getBudgets(); | ||||
|         $count      = $collection->count(); | ||||
|         $budgets    = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getBudgets(); | ||||
|         $count       = $collection->count(); | ||||
|         $budgets     = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($budgets, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budgets.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($budgets, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budgets.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var BudgetTransformer $transformer */ | ||||
|         $transformer = app(BudgetTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($budgets, $transformer, 'budgets'); | ||||
|         $resource    = new FractalCollection($budgets, $transformer, 'budgets'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -100,20 +97,16 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * Show a budget. | ||||
|      * | ||||
|      * @param Budget $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Budget $budget): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BudgetTransformer $transformer */ | ||||
|         $transformer = app(BudgetTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($budget, $transformer, 'budgets'); | ||||
|         $resource    = new Item($budget, $transformer, 'budgets'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * StoreController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -62,23 +60,19 @@ class StoreController extends Controller | ||||
|      * | ||||
|      * Store a budget. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      * | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $budget = $this->repository->store($request->getAll()); | ||||
|         $budget      = $this->repository->store($request->getAll()); | ||||
|         $budget->refresh(); | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BudgetTransformer $transformer */ | ||||
|         $transformer = app(BudgetTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($budget, $transformer, 'budgets'); | ||||
|         $resource    = new Item($budget, $transformer, 'budgets'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * UpdateController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -61,23 +59,18 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudget
 | ||||
|      * | ||||
|      * Update a budget. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Budget        $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Budget $budget): JsonResponse | ||||
|     { | ||||
|         $data    = $request->getAll(); | ||||
|         $budget  = $this->repository->update($budget, $data); | ||||
|         $manager = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $budget      = $this->repository->update($budget, $data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BudgetTransformer $transformer */ | ||||
|         $transformer = app(BudgetTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($budget, $transformer, 'budgets'); | ||||
|         $resource    = new Item($budget, $transformer, 'budgets'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BudgetLimitController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -64,10 +62,6 @@ class DestroyController extends Controller | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param Budget      $budget | ||||
|      * @param BudgetLimit $budgetLimit | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function destroy(Budget $budget, BudgetLimit $budgetLimit): JsonResponse | ||||
|   | ||||
| @@ -48,28 +48,23 @@ class ListController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionByBudgetLimit
 | ||||
|      * Show all transactions. | ||||
|      * | ||||
|      * @param Request     $request | ||||
|      * @param Budget      $budget | ||||
|      * @param BudgetLimit $budgetLimit | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $type     = $request->get('type') ?? 'default'; | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // filter on budget.
 | ||||
| @@ -81,19 +76,20 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         $collector->setRange($budgetLimit->start_date, $budgetLimit->end_date); | ||||
|         $collector->setTypes($types); | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.budgets.limits.transactions', [$budget->id, $budgetLimit->id]) . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.budgets.limits.transactions', [$budget->id, $budgetLimit->id]).$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -48,8 +48,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BudgetLimitController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -73,27 +71,23 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listBudgetLimitByBudget
 | ||||
|      * | ||||
|      * Display a listing of the budget limits for this budget. | ||||
|      * | ||||
|      * @param Budget $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function index(Budget $budget): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager      = $this->getManager(); | ||||
|         $manager->parseIncludes('budget'); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $collection   = $this->blRepository->getBudgetLimits($budget, $this->parameters->get('start'), $this->parameters->get('end')); | ||||
|         $count        = $collection->count(); | ||||
|         $budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $paginator    = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budgets.limits.index', [$budget->id]) . $this->buildParams()); | ||||
|         $paginator->setPath(route('api.v1.budgets.limits.index', [$budget->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var BudgetLimitTransformer $transformer */ | ||||
|         $transformer = app(BudgetLimitTransformer::class); | ||||
|         $transformer  = app(BudgetLimitTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits'); | ||||
|         $resource     = new FractalCollection($budgetLimits, $transformer, 'budget_limits'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -105,27 +99,24 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the budget limits for this budget. | ||||
|      * | ||||
|      * @param SameDateRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @SuppressWarnings(PHPMD.UnusedFormalParameter) | ||||
|      */ | ||||
|     public function indexAll(SameDateRequest $request): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager      = $this->getManager(); | ||||
|         $manager->parseIncludes('budget'); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $collection   = $this->blRepository->getAllBudgetLimits($this->parameters->get('start'), $this->parameters->get('end')); | ||||
|         $count        = $collection->count(); | ||||
|         $budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $paginator    = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.budget-limits.index') . $this->buildParams()); | ||||
|         $paginator->setPath(route('api.v1.budget-limits.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var BudgetLimitTransformer $transformer */ | ||||
|         $transformer = app(BudgetLimitTransformer::class); | ||||
|         $transformer  = app(BudgetLimitTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($budgetLimits, $transformer, 'budget_limits'); | ||||
|         $resource     = new FractalCollection($budgetLimits, $transformer, 'budget_limits'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -135,10 +126,6 @@ class ShowController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/getBudgetLimit
 | ||||
|      * | ||||
|      * @param Budget      $budget | ||||
|      * @param BudgetLimit $budgetLimit | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function show(Budget $budget, BudgetLimit $budgetLimit): JsonResponse | ||||
| @@ -147,13 +134,13 @@ class ShowController extends Controller | ||||
|             throw new FireflyException('20028: The budget limit does not belong to the budget.'); | ||||
|         } | ||||
|         // continue!
 | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BudgetLimitTransformer $transformer */ | ||||
|         $transformer = app(BudgetLimitTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($budgetLimit, $transformer, 'budget_limits'); | ||||
|         $resource    = new Item($budgetLimit, $transformer, 'budget_limits'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -41,8 +41,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * BudgetLimitController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -64,11 +62,6 @@ class StoreController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/storeBudgetLimit
 | ||||
|      * | ||||
|      * Store a newly created resource in storage. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * @param Budget       $budget | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function store(StoreRequest $request, Budget $budget): JsonResponse | ||||
|     { | ||||
| @@ -77,13 +70,14 @@ class StoreController extends Controller | ||||
|         $data['end_date']   = $data['end']; | ||||
|         $data['budget_id']  = $budget->id; | ||||
| 
 | ||||
|         $budgetLimit = $this->blRepository->store($data); | ||||
|         $manager     = $this->getManager(); | ||||
|         $budgetLimit        = $this->blRepository->store($data); | ||||
|         $manager            = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BudgetLimitTransformer $transformer */ | ||||
|         $transformer = app(BudgetLimitTransformer::class); | ||||
|         $transformer        = app(BudgetLimitTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($budgetLimit, $transformer, 'budget_limits'); | ||||
|         $resource           = new Item($budgetLimit, $transformer, 'budget_limits'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -46,8 +46,6 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudgetLimit
 | ||||
|      * | ||||
|      * BudgetLimitController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -69,11 +67,6 @@ class UpdateController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudgetLimit
 | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Budget        $budget | ||||
|      * @param BudgetLimit   $budgetLimit | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse | ||||
| @@ -87,10 +80,10 @@ class UpdateController extends Controller | ||||
|         $manager           = $this->getManager(); | ||||
| 
 | ||||
|         /** @var BudgetLimitTransformer $transformer */ | ||||
|         $transformer = app(BudgetLimitTransformer::class); | ||||
|         $transformer       = app(BudgetLimitTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($budgetLimit, $transformer, 'budget_limits'); | ||||
|         $resource          = new Item($budgetLimit, $transformer, 'budget_limits'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -37,8 +37,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * CategoryController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -58,10 +56,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/deleteCategory
 | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param Category $category | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Category $category): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -49,8 +49,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * CategoryController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -69,29 +67,26 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listAttachmentByCategory
 | ||||
|      * | ||||
|      * @param Category $category | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function attachments(Category $category): JsonResponse | ||||
|     { | ||||
|         $manager    = $this->getManager(); | ||||
|         $pageSize   = $this->parameters->get('limit'); | ||||
|         $collection = $this->repository->getAttachments($category); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $collection  = $this->repository->getAttachments($category); | ||||
| 
 | ||||
|         $count       = $collection->count(); | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.categories.attachments', [$category->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.categories.attachments', [$category->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -103,28 +98,23 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show all transactions. | ||||
|      * | ||||
|      * @param Request  $request | ||||
|      * | ||||
|      * @param Category $category | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Category $category): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $type     = $request->get('type') ?? 'default'; | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // filter on category.
 | ||||
| @@ -136,7 +126,8 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -145,15 +136,15 @@ class ListController extends Controller | ||||
|             $collector->setEnd($this->parameters->get('end')); | ||||
|         } | ||||
| 
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.categories.transactions', [$category->id]) . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.categories.transactions', [$category->id]).$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * CategoryController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -65,29 +63,28 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->repository->getCategories(); | ||||
|         $count      = $collection->count(); | ||||
|         $categories = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getCategories(); | ||||
|         $count       = $collection->count(); | ||||
|         $categories  = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($categories, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.categories.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($categories, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.categories.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var CategoryTransformer $transformer */ | ||||
|         $transformer = app(CategoryTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new FractalCollection($categories, $transformer, 'categories'); | ||||
|         $resource    = new FractalCollection($categories, $transformer, 'categories'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -98,20 +95,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/getCategory
 | ||||
|      * | ||||
|      * Show the category. | ||||
|      * | ||||
|      * @param Category $category | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Category $category): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var CategoryTransformer $transformer */ | ||||
|         $transformer = app(CategoryTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($category, $transformer, 'categories'); | ||||
|         $resource    = new Item($category, $transformer, 'categories'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * CategoryController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -62,21 +60,18 @@ class StoreController extends Controller | ||||
|      * | ||||
|      * Store new category. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $category = $this->repository->store($request->getAll()); | ||||
|         $manager  = $this->getManager(); | ||||
|         $category    = $this->repository->store($request->getAll()); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var CategoryTransformer $transformer */ | ||||
|         $transformer = app(CategoryTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($category, $transformer, 'categories'); | ||||
|         $resource    = new Item($category, $transformer, 'categories'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * CategoryController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -61,23 +59,18 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/updateCategory
 | ||||
|      * | ||||
|      * Update the category. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Category      $category | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Category $category): JsonResponse | ||||
|     { | ||||
|         $data     = $request->getAll(); | ||||
|         $category = $this->repository->update($category, $data); | ||||
|         $manager  = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $category    = $this->repository->update($category, $data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var CategoryTransformer $transformer */ | ||||
|         $transformer = app(CategoryTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($category, $transformer, 'categories'); | ||||
|         $resource    = new Item($category, $transformer, 'categories'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -38,8 +38,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ObjectGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -61,10 +59,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/deleteObjectGroup
 | ||||
|      * | ||||
|      * Remove the specified resource from storage. | ||||
|      * | ||||
|      * @param ObjectGroup $objectGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(ObjectGroup $objectGroup): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -44,8 +44,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ObjectGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -68,30 +66,27 @@ class ListController extends Controller | ||||
|      * | ||||
|      * List all bills in this object group | ||||
|      * | ||||
|      * @param ObjectGroup $objectGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function bills(ObjectGroup $objectGroup): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         // get list of piggy banks. Count it and split it.
 | ||||
|         $collection = $this->repository->getBills($objectGroup); | ||||
|         $count      = $collection->count(); | ||||
|         $bills      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getBills($objectGroup); | ||||
|         $count       = $collection->count(); | ||||
|         $bills       = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($bills, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.currencies.bills', [$objectGroup->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var BillTransformer $transformer */ | ||||
|         $transformer = app(BillTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($bills, $transformer, 'bills'); | ||||
|         $resource    = new FractalCollection($bills, $transformer, 'bills'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -103,33 +98,30 @@ class ListController extends Controller | ||||
|      * | ||||
|      * List all piggies under the object group. | ||||
|      * | ||||
|      * @param ObjectGroup $objectGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function piggyBanks(ObjectGroup $objectGroup): JsonResponse | ||||
|     { | ||||
|         // create some objects:
 | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of piggy banks. Count it and split it.
 | ||||
|         $collection = $this->repository->getPiggyBanks($objectGroup); | ||||
|         $count      = $collection->count(); | ||||
|         $piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getPiggyBanks($objectGroup); | ||||
|         $count       = $collection->count(); | ||||
|         $piggyBanks  = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.object-groups.piggy-banks', [$objectGroup->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.object-groups.piggy-banks', [$objectGroup->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var PiggyBankTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks'); | ||||
|         $resource    = new FractalCollection($piggyBanks, $transformer, 'piggy_banks'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ObjectGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -66,15 +64,13 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/listObjectGroups
 | ||||
|      * | ||||
|      * Display a listing of the resource. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         $this->repository->resetOrder(); | ||||
|         $collection   = $this->repository->get(); | ||||
| @@ -82,14 +78,14 @@ class ShowController extends Controller | ||||
|         $objectGroups = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($objectGroups, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.object-groups.index') . $this->buildParams()); | ||||
|         $paginator    = new LengthAwarePaginator($objectGroups, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.object-groups.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var ObjectGroupTransformer $transformer */ | ||||
|         $transformer = app(ObjectGroupTransformer::class); | ||||
|         $transformer  = app(ObjectGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($objectGroups, $transformer, 'object_groups'); | ||||
|         $resource     = new FractalCollection($objectGroups, $transformer, 'object_groups'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -100,21 +96,17 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/getObjectGroup
 | ||||
|      * | ||||
|      * Show single instance. | ||||
|      * | ||||
|      * @param ObjectGroup $objectGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(ObjectGroup $objectGroup): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
|         $this->repository->resetOrder(); | ||||
|         $objectGroup->refresh(); | ||||
| 
 | ||||
|         /** @var ObjectGroupTransformer $transformer */ | ||||
|         $transformer = app(ObjectGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new Item($objectGroup, $transformer, 'object_groups'); | ||||
|         $resource    = new Item($objectGroup, $transformer, 'object_groups'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -41,8 +41,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * ObjectGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -62,23 +60,18 @@ class UpdateController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/updateObjectGroup
 | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param ObjectGroup   $objectGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, ObjectGroup $objectGroup): JsonResponse | ||||
|     { | ||||
|         $data = $request->getUpdateData(); | ||||
|         $data        = $request->getUpdateData(); | ||||
|         $this->repository->update($objectGroup, $data); | ||||
|         $this->repository->resetOrder(); | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var ObjectGroupTransformer $transformer */ | ||||
|         $transformer = app(ObjectGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
|         $resource = new Item($objectGroup, $transformer, 'object_groups'); | ||||
|         $resource    = new Item($objectGroup, $transformer, 'object_groups'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -37,8 +37,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -58,10 +56,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/deletePiggyBank
 | ||||
|      * | ||||
|      * Delete the resource. | ||||
|      * | ||||
|      * @param PiggyBank $piggyBank | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -63,29 +61,26 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAttachmentByPiggyBank
 | ||||
|      * | ||||
|      * @param PiggyBank $piggyBank | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function attachments(PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|         $manager    = $this->getManager(); | ||||
|         $pageSize   = $this->parameters->get('limit'); | ||||
|         $collection = $this->repository->getAttachments($piggyBank); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $collection  = $this->repository->getAttachments($piggyBank); | ||||
| 
 | ||||
|         $count       = $collection->count(); | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.attachments', [$piggyBank->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.attachments', [$piggyBank->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -97,30 +92,27 @@ class ListController extends Controller | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @param PiggyBank $piggyBank | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function piggyBankEvents(PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $manager  = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         $collection = $this->repository->getEvents($piggyBank); | ||||
|         $count      = $collection->count(); | ||||
|         $events     = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getEvents($piggyBank); | ||||
|         $count       = $collection->count(); | ||||
|         $events      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($events, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.events', [$piggyBank->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($events, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.events', [$piggyBank->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var PiggyBankEventTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankEventTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($events, $transformer, 'piggy_bank_events'); | ||||
|         $resource    = new FractalCollection($events, $transformer, 'piggy_bank_events'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -65,29 +63,28 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * List all of them. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->repository->getPiggyBanks(); | ||||
|         $count      = $collection->count(); | ||||
|         $piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->getPiggyBanks(); | ||||
|         $count       = $collection->count(); | ||||
|         $piggyBanks  = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.piggy-banks.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var PiggyBankTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($piggyBanks, $transformer, 'piggy_banks'); | ||||
|         $resource    = new FractalCollection($piggyBanks, $transformer, 'piggy_banks'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -98,20 +95,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/getPiggyBank
 | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @param PiggyBank $piggyBank | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var PiggyBankTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($piggyBank, $transformer, 'piggy_banks'); | ||||
|         $resource    = new Item($piggyBank, $transformer, 'piggy_banks'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -62,21 +60,18 @@ class StoreController extends Controller | ||||
|      * | ||||
|      * Store new object. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $piggyBank = $this->repository->store($request->getAll()); | ||||
|         $manager   = $this->getManager(); | ||||
|         $piggyBank   = $this->repository->store($request->getAll()); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var PiggyBankTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($piggyBank, $transformer, 'piggy_banks'); | ||||
|         $resource    = new Item($piggyBank, $transformer, 'piggy_banks'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * Constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -61,27 +59,23 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/updatePiggyBank
 | ||||
|      * | ||||
|      * Update piggy bank. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param PiggyBank     $piggyBank | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, PiggyBank $piggyBank): JsonResponse | ||||
|     { | ||||
|         $data      = $request->getAll(); | ||||
|         $piggyBank = $this->repository->update($piggyBank, $data); | ||||
|         $data        = $request->getAll(); | ||||
|         $piggyBank   = $this->repository->update($piggyBank, $data); | ||||
| 
 | ||||
|         if (array_key_exists('current_amount', $data) && '' !== $data['current_amount']) { | ||||
|             $this->repository->setCurrentAmount($piggyBank, $data['current_amount']); | ||||
|         } | ||||
| 
 | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var PiggyBankTransformer $transformer */ | ||||
|         $transformer = app(PiggyBankTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($piggyBank, $transformer, 'piggy_banks'); | ||||
|         $resource    = new Item($piggyBank, $transformer, 'piggy_banks'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -37,8 +37,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RecurrenceController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -58,10 +56,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/deleteRecurrence
 | ||||
|      * | ||||
|      * Delete the resource. | ||||
|      * | ||||
|      * @param Recurrence $recurrence | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Recurrence $recurrence): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -47,8 +47,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RecurrenceController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -69,29 +67,25 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show transactions for this recurrence. | ||||
|      * | ||||
|      * @param Request    $request | ||||
|      * @param Recurrence $recurrence | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Recurrence $recurrence): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $type     = $request->get('type') ?? 'default'; | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
|         // whatever is returned by the query, it must be part of these journals:
 | ||||
|         $journalIds = $this->repository->getJournalIds($recurrence); | ||||
|         $journalIds   = $this->repository->getJournalIds($recurrence); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // filter on journal IDs.
 | ||||
| @@ -103,7 +97,8 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -112,15 +107,15 @@ class ListController extends Controller | ||||
|             $collector->setEnd($this->parameters->get('end')); | ||||
|         } | ||||
| 
 | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.transactions.index') . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.transactions.index').$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RecurrenceController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -65,30 +63,29 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * List all of them. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->repository->get(); | ||||
|         $count      = $collection->count(); | ||||
|         $piggyBanks = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->repository->get(); | ||||
|         $count       = $collection->count(); | ||||
|         $piggyBanks  = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.recurrences.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($piggyBanks, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.recurrences.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var RecurrenceTransformer $transformer */ | ||||
|         $transformer = app(RecurrenceTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($piggyBanks, $transformer, 'recurrences'); | ||||
|         $resource    = new FractalCollection($piggyBanks, $transformer, 'recurrences'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -99,20 +96,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/getRecurrence
 | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @param Recurrence $recurrence | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Recurrence $recurrence): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RecurrenceTransformer $transformer */ | ||||
|         $transformer = app(RecurrenceTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($recurrence, $transformer, 'recurrences'); | ||||
|         $resource    = new Item($recurrence, $transformer, 'recurrences'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RecurrenceController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -62,22 +60,19 @@ class StoreController extends Controller | ||||
|      * | ||||
|      * Store new object. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $data       = $request->getAll(); | ||||
|         $recurrence = $this->repository->store($data); | ||||
|         $manager    = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $recurrence  = $this->repository->store($data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RecurrenceTransformer $transformer */ | ||||
|         $transformer = app(RecurrenceTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($recurrence, $transformer, 'recurrences'); | ||||
|         $resource    = new Item($recurrence, $transformer, 'recurrences'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RecurrenceController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -61,23 +59,18 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/updateRecurrence
 | ||||
|      * | ||||
|      * Update single recurrence. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Recurrence    $recurrence | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Recurrence $recurrence): JsonResponse | ||||
|     { | ||||
|         $data       = $request->getAll(); | ||||
|         $recurrence = $this->repository->update($recurrence, $data); | ||||
|         $manager    = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $recurrence  = $this->repository->update($recurrence, $data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RecurrenceTransformer $transformer */ | ||||
|         $transformer = app(RecurrenceTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($recurrence, $transformer, 'recurrences'); | ||||
|         $resource    = new Item($recurrence, $transformer, 'recurrences'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -38,8 +38,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -47,7 +45,7 @@ class DestroyController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                 = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleRepository = app(RuleRepositoryInterface::class); | ||||
|                 $this->ruleRepository->setUser($user); | ||||
| @@ -62,10 +60,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/deleteRule
 | ||||
|      * | ||||
|      * Delete the resource. | ||||
|      * | ||||
|      * @param Rule $rule | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Rule $rule): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -44,8 +44,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -53,7 +51,7 @@ class ShowController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                 = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleRepository = app(RuleRepositoryInterface::class); | ||||
|                 $this->ruleRepository->setUser($user); | ||||
| @@ -69,30 +67,29 @@ class ShowController extends Controller | ||||
|      * | ||||
|      * List all of them. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->ruleRepository->getAll(); | ||||
|         $count      = $collection->count(); | ||||
|         $rules      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->ruleRepository->getAll(); | ||||
|         $count       = $collection->count(); | ||||
|         $rules       = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rules.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rules.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var RuleTransformer $transformer */ | ||||
|         $transformer = app(RuleTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($rules, $transformer, 'rules'); | ||||
|         $resource    = new FractalCollection($rules, $transformer, 'rules'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -103,19 +100,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/getRule
 | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @param Rule $rule | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(Rule $rule): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RuleTransformer $transformer */ | ||||
|         $transformer = app(RuleTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($rule, $transformer, 'rules'); | ||||
|         $resource    = new Item($rule, $transformer, 'rules'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -40,8 +40,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -49,7 +47,7 @@ class StoreController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                 = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleRepository = app(RuleRepositoryInterface::class); | ||||
|                 $this->ruleRepository->setUser($user); | ||||
| @@ -64,20 +62,17 @@ class StoreController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/storeRule
 | ||||
|      * | ||||
|      * Store new object. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $rule    = $this->ruleRepository->store($request->getAll()); | ||||
|         $manager = $this->getManager(); | ||||
|         $rule        = $this->ruleRepository->store($request->getAll()); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RuleTransformer $transformer */ | ||||
|         $transformer = app(RuleTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($rule, $transformer, 'rules'); | ||||
|         $resource    = new Item($rule, $transformer, 'rules'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -46,8 +46,6 @@ class TriggerController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -55,7 +53,7 @@ class TriggerController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                 = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleRepository = app(RuleRepositoryInterface::class); | ||||
|                 $this->ruleRepository->setUser($user); | ||||
| @@ -68,18 +66,13 @@ class TriggerController extends Controller | ||||
|     /** | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/testRule
 | ||||
|      * | ||||
|      * @param TestRequest $request | ||||
|      * @param Rule        $rule | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function testRule(TestRequest $request, Rule $rule): JsonResponse | ||||
|     { | ||||
|         $parameters = $request->getTestParameters(); | ||||
|         $parameters   = $request->getTestParameters(); | ||||
| 
 | ||||
|         /** @var RuleEngineInterface $ruleEngine */ | ||||
|         $ruleEngine = app(RuleEngineInterface::class); | ||||
|         $ruleEngine   = app(RuleEngineInterface::class); | ||||
|         $ruleEngine->setRules(new Collection([$rule])); | ||||
| 
 | ||||
|         // overrule the rule(s) if necessary.
 | ||||
| @@ -96,21 +89,21 @@ class TriggerController extends Controller | ||||
|             $ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         // file the rule(s)
 | ||||
|         $transactions = $ruleEngine->find(); | ||||
|         $count        = $transactions->count(); | ||||
| 
 | ||||
|         $paginator = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rules.test', [$rule->id]) . $this->buildParams()); | ||||
|         $paginator    = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rules.test', [$rule->id]).$this->buildParams()); | ||||
| 
 | ||||
|         // resulting list is presented as JSON thing.
 | ||||
|         $manager = $this->getManager(); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -121,11 +114,6 @@ class TriggerController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/fireRule
 | ||||
|      * | ||||
|      * Execute the given rule group on a set of existing transactions. | ||||
|      * | ||||
|      * @param TriggerRequest $request | ||||
|      * @param Rule           $rule | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function triggerRule(TriggerRequest $request, Rule $rule): JsonResponse | ||||
|     { | ||||
| @@ -150,7 +138,6 @@ class TriggerController extends Controller | ||||
|             $ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]); | ||||
|         } | ||||
| 
 | ||||
| 
 | ||||
|         // fire the rule(s)
 | ||||
|         $ruleEngine->fire(); | ||||
| 
 | ||||
|   | ||||
| @@ -41,8 +41,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -50,7 +48,7 @@ class UpdateController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                 = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleRepository = app(RuleRepositoryInterface::class); | ||||
|                 $this->ruleRepository->setUser($user); | ||||
| @@ -65,23 +63,18 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/updateRule
 | ||||
|      * | ||||
|      * Update a rule. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param Rule          $rule | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, Rule $rule): JsonResponse | ||||
|     { | ||||
|         $data    = $request->getAll(); | ||||
|         $rule    = $this->ruleRepository->update($rule, $data); | ||||
|         $manager = $this->getManager(); | ||||
|         $data        = $request->getAll(); | ||||
|         $rule        = $this->ruleRepository->update($rule, $data); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RuleTransformer $transformer */ | ||||
|         $transformer = app(RuleTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($rule, $transformer, 'rules'); | ||||
|         $resource    = new Item($rule, $transformer, 'rules'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -38,8 +38,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -47,7 +45,7 @@ class DestroyController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                      = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleGroupRepository = app(RuleGroupRepositoryInterface::class); | ||||
|                 $this->ruleGroupRepository->setUser($user); | ||||
| @@ -62,10 +60,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/deleteRuleGroup
 | ||||
|      * | ||||
|      * Delete the resource. | ||||
|      * | ||||
|      * @param RuleGroup $ruleGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(RuleGroup $ruleGroup): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -43,8 +43,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -52,7 +50,7 @@ class ListController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                      = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleGroupRepository = app(RuleGroupRepositoryInterface::class); | ||||
|                 $this->ruleGroupRepository->setUser($user); | ||||
| @@ -66,31 +64,28 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/listRuleByGroup
 | ||||
|      * | ||||
|      * @param RuleGroup $group | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function rules(RuleGroup $group): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of budgets. Count it and split it.
 | ||||
|         $collection = $this->ruleGroupRepository->getRules($group); | ||||
|         $count      = $collection->count(); | ||||
|         $rules      = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->ruleGroupRepository->getRules($group); | ||||
|         $count       = $collection->count(); | ||||
|         $rules       = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rule-groups.rules', [$group->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($rules, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rule-groups.rules', [$group->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var RuleTransformer $transformer */ | ||||
|         $transformer = app(RuleTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($rules, $transformer, 'rules'); | ||||
|         $resource    = new FractalCollection($rules, $transformer, 'rules'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
| @@ -44,8 +44,6 @@ class ShowController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -53,7 +51,7 @@ class ShowController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                      = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleGroupRepository = app(RuleGroupRepositoryInterface::class); | ||||
|                 $this->ruleGroupRepository->setUser($user); | ||||
| @@ -68,29 +66,28 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/listRuleGroup
 | ||||
|      * List all of them. | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function index(): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
|         // types to get, page size:
 | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
| 
 | ||||
|         // get list of rule groups. Count it and split it.
 | ||||
|         $collection = $this->ruleGroupRepository->get(); | ||||
|         $count      = $collection->count(); | ||||
|         $ruleGroups = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
|         $collection  = $this->ruleGroupRepository->get(); | ||||
|         $count       = $collection->count(); | ||||
|         $ruleGroups  = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($ruleGroups, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rule-groups.index') . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($ruleGroups, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rule-groups.index').$this->buildParams()); | ||||
| 
 | ||||
|         /** @var RuleGroupTransformer $transformer */ | ||||
|         $transformer = app(RuleGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($ruleGroups, $transformer, 'rule_groups'); | ||||
|         $resource    = new FractalCollection($ruleGroups, $transformer, 'rule_groups'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -101,19 +98,16 @@ class ShowController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/getRuleGroup
 | ||||
|      * | ||||
|      * List single resource. | ||||
|      * | ||||
|      * @param RuleGroup $ruleGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function show(RuleGroup $ruleGroup): JsonResponse | ||||
|     { | ||||
|         $manager = $this->getManager(); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RuleGroupTransformer $transformer */ | ||||
|         $transformer = app(RuleGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($ruleGroup, $transformer, 'rule_groups'); | ||||
|         $resource    = new Item($ruleGroup, $transformer, 'rule_groups'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -42,8 +42,6 @@ class StoreController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -51,12 +49,12 @@ class StoreController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                      = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleGroupRepository = app(RuleGroupRepositoryInterface::class); | ||||
|                 $this->ruleGroupRepository->setUser($user); | ||||
| 
 | ||||
|                 $this->accountRepository = app(AccountRepositoryInterface::class); | ||||
|                 $this->accountRepository   = app(AccountRepositoryInterface::class); | ||||
|                 $this->accountRepository->setUser($user); | ||||
| 
 | ||||
|                 return $next($request); | ||||
| @@ -69,21 +67,17 @@ class StoreController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/storeRuleGroup
 | ||||
|      * | ||||
|      * Store new object. | ||||
|      * | ||||
|      * @param StoreRequest $request | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function store(StoreRequest $request): JsonResponse | ||||
|     { | ||||
|         $ruleGroup = $this->ruleGroupRepository->store($request->getAll()); | ||||
|         $manager   = $this->getManager(); | ||||
|         $ruleGroup   = $this->ruleGroupRepository->store($request->getAll()); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RuleGroupTransformer $transformer */ | ||||
|         $transformer = app(RuleGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($ruleGroup, $transformer, 'rule_groups'); | ||||
|         $resource    = new Item($ruleGroup, $transformer, 'rule_groups'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -23,7 +23,6 @@ declare(strict_types=1); | ||||
| 
 | ||||
| namespace FireflyIII\Api\V1\Controllers\Models\RuleGroup; | ||||
| 
 | ||||
| use Exception; | ||||
| use FireflyIII\Api\V1\Controllers\Controller; | ||||
| use FireflyIII\Api\V1\Requests\Models\RuleGroup\TestRequest; | ||||
| use FireflyIII\Api\V1\Requests\Models\RuleGroup\TriggerRequest; | ||||
| @@ -47,8 +46,6 @@ class TriggerController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -56,7 +53,7 @@ class TriggerController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                      = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleGroupRepository = app(RuleGroupRepositoryInterface::class); | ||||
|                 $this->ruleGroupRepository->setUser($user); | ||||
| @@ -70,23 +67,18 @@ class TriggerController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/testRuleGroup
 | ||||
|      * | ||||
|      * @param TestRequest $request | ||||
|      * @param RuleGroup   $group | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      * | ||||
|      */ | ||||
|     public function testGroup(TestRequest $request, RuleGroup $group): JsonResponse | ||||
|     { | ||||
|         $rules = $this->ruleGroupRepository->getActiveRules($group); | ||||
|         $rules        = $this->ruleGroupRepository->getActiveRules($group); | ||||
|         if (0 === $rules->count()) { | ||||
|             throw new FireflyException('200023: No rules in this rule group.'); | ||||
|         } | ||||
|         $parameters = $request->getTestParameters(); | ||||
|         $parameters   = $request->getTestParameters(); | ||||
| 
 | ||||
|         /** @var RuleEngineInterface $ruleEngine */ | ||||
|         $ruleEngine = app(RuleEngineInterface::class); | ||||
|         $ruleEngine   = app(RuleEngineInterface::class); | ||||
|         $ruleEngine->setRules($rules); | ||||
| 
 | ||||
|         // overrule the rule(s) if necessary.
 | ||||
| @@ -107,16 +99,17 @@ class TriggerController extends Controller | ||||
|         $transactions = $ruleEngine->find(); | ||||
|         $count        = $transactions->count(); | ||||
| 
 | ||||
|         $paginator = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rule-groups.test', [$group->id]) . $this->buildParams()); | ||||
|         $paginator    = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.rule-groups.test', [$group->id]).$this->buildParams()); | ||||
| 
 | ||||
|         // resulting list is presented as JSON thing.
 | ||||
|         $manager = $this->getManager(); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -128,15 +121,11 @@ class TriggerController extends Controller | ||||
|      * | ||||
|      * Execute the given rule group on a set of existing transactions. | ||||
|      * | ||||
|      * @param TriggerRequest $request | ||||
|      * @param RuleGroup      $group | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws Exception | ||||
|      * @throws \Exception | ||||
|      */ | ||||
|     public function triggerGroup(TriggerRequest $request, RuleGroup $group): JsonResponse | ||||
|     { | ||||
|         $rules = $this->ruleGroupRepository->getActiveRules($group); | ||||
|         $rules      = $this->ruleGroupRepository->getActiveRules($group); | ||||
|         if (0 === $rules->count()) { | ||||
|             throw new FireflyException('200023: No rules in this rule group.'); | ||||
|         } | ||||
|   | ||||
| @@ -41,8 +41,6 @@ class UpdateController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * RuleGroupController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -50,7 +48,7 @@ class UpdateController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user                      = auth()->user(); | ||||
| 
 | ||||
|                 $this->ruleGroupRepository = app(RuleGroupRepositoryInterface::class); | ||||
|                 $this->ruleGroupRepository->setUser($user); | ||||
| @@ -65,22 +63,17 @@ class UpdateController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/updateRuleGroup
 | ||||
|      * | ||||
|      * Update a rule group. | ||||
|      * | ||||
|      * @param UpdateRequest $request | ||||
|      * @param RuleGroup     $ruleGroup | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function update(UpdateRequest $request, RuleGroup $ruleGroup): JsonResponse | ||||
|     { | ||||
|         $ruleGroup = $this->ruleGroupRepository->update($ruleGroup, $request->getAll()); | ||||
|         $manager   = $this->getManager(); | ||||
|         $ruleGroup   = $this->ruleGroupRepository->update($ruleGroup, $request->getAll()); | ||||
|         $manager     = $this->getManager(); | ||||
| 
 | ||||
|         /** @var RuleGroupTransformer $transformer */ | ||||
|         $transformer = app(RuleGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new Item($ruleGroup, $transformer, 'rule_groups'); | ||||
|         $resource    = new Item($ruleGroup, $transformer, 'rule_groups'); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|     } | ||||
|   | ||||
| @@ -38,8 +38,6 @@ class DestroyController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * TagController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -47,7 +45,7 @@ class DestroyController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user             = auth()->user(); | ||||
| 
 | ||||
|                 $this->repository = app(TagRepositoryInterface::class); | ||||
|                 $this->repository->setUser($user); | ||||
| @@ -62,10 +60,6 @@ class DestroyController extends Controller | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/deleteTag
 | ||||
|      * | ||||
|      * Delete the resource. | ||||
|      * | ||||
|      * @param Tag $tag | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      */ | ||||
|     public function destroy(Tag $tag): JsonResponse | ||||
|     { | ||||
|   | ||||
| @@ -49,8 +49,6 @@ class ListController extends Controller | ||||
| 
 | ||||
|     /** | ||||
|      * TagController constructor. | ||||
|      * | ||||
| 
 | ||||
|      */ | ||||
|     public function __construct() | ||||
|     { | ||||
| @@ -58,7 +56,7 @@ class ListController extends Controller | ||||
|         $this->middleware( | ||||
|             function ($request, $next) { | ||||
|                 /** @var User $user */ | ||||
|                 $user = auth()->user(); | ||||
|                 $user             = auth()->user(); | ||||
| 
 | ||||
|                 $this->repository = app(TagRepositoryInterface::class); | ||||
|                 $this->repository->setUser($user); | ||||
| @@ -72,29 +70,26 @@ class ListController extends Controller | ||||
|      * This endpoint is documented at: | ||||
|      * https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listAttachmentByTag
 | ||||
|      * | ||||
|      * @param Tag $tag | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function attachments(Tag $tag): JsonResponse | ||||
|     { | ||||
|         $manager    = $this->getManager(); | ||||
|         $pageSize   = $this->parameters->get('limit'); | ||||
|         $collection = $this->repository->getAttachments($tag); | ||||
|         $manager     = $this->getManager(); | ||||
|         $pageSize    = $this->parameters->get('limit'); | ||||
|         $collection  = $this->repository->getAttachments($tag); | ||||
| 
 | ||||
|         $count       = $collection->count(); | ||||
|         $attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize); | ||||
| 
 | ||||
|         // make paginator:
 | ||||
|         $paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.tags.attachments', [$tag->id]) . $this->buildParams()); | ||||
|         $paginator   = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page')); | ||||
|         $paginator->setPath(route('api.v1.tags.attachments', [$tag->id]).$this->buildParams()); | ||||
| 
 | ||||
|         /** @var AttachmentTransformer $transformer */ | ||||
|         $transformer = app(AttachmentTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource    = new FractalCollection($attachments, $transformer, 'attachments'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
| @@ -106,26 +101,23 @@ class ListController extends Controller | ||||
|      * | ||||
|      * Show all transactions. | ||||
|      * | ||||
|      * @param Request $request | ||||
|      * @param Tag     $tag | ||||
|      * | ||||
|      * @return JsonResponse | ||||
|      * @throws FireflyException | ||||
|      */ | ||||
|     public function transactions(Request $request, Tag $tag): JsonResponse | ||||
|     { | ||||
|         $pageSize = $this->parameters->get('limit'); | ||||
|         $type     = $request->get('type') ?? 'default'; | ||||
|         $pageSize     = $this->parameters->get('limit'); | ||||
|         $type         = $request->get('type') ?? 'default'; | ||||
|         $this->parameters->set('type', $type); | ||||
| 
 | ||||
|         $types   = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager = $this->getManager(); | ||||
|         $types        = $this->mapTransactionTypes($this->parameters->get('type')); | ||||
|         $manager      = $this->getManager(); | ||||
| 
 | ||||
|         /** @var User $admin */ | ||||
|         $admin = auth()->user(); | ||||
|         $admin        = auth()->user(); | ||||
| 
 | ||||
|         // use new group collector:
 | ||||
|         /** @var GroupCollectorInterface $collector */ | ||||
|         $collector = app(GroupCollectorInterface::class); | ||||
|         $collector    = app(GroupCollectorInterface::class); | ||||
|         $collector | ||||
|             ->setUser($admin) | ||||
|             // filter on tag.
 | ||||
| @@ -137,7 +129,8 @@ class ListController extends Controller | ||||
|             // set page to retrieve
 | ||||
|             ->setPage($this->parameters->get('page')) | ||||
|             // set types of transactions to return.
 | ||||
|             ->setTypes($types); | ||||
|             ->setTypes($types) | ||||
|         ; | ||||
| 
 | ||||
|         if (null !== $this->parameters->get('start')) { | ||||
|             $collector->setStart($this->parameters->get('start')); | ||||
| @@ -145,15 +138,15 @@ class ListController extends Controller | ||||
|         if (null !== $this->parameters->get('end')) { | ||||
|             $collector->setEnd($this->parameters->get('end')); | ||||
|         } | ||||
|         $paginator = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.tags.transactions', [$tag->id]) . $this->buildParams()); | ||||
|         $paginator    = $collector->getPaginatedGroups(); | ||||
|         $paginator->setPath(route('api.v1.tags.transactions', [$tag->id]).$this->buildParams()); | ||||
|         $transactions = $paginator->getCollection(); | ||||
| 
 | ||||
|         /** @var TransactionGroupTransformer $transformer */ | ||||
|         $transformer = app(TransactionGroupTransformer::class); | ||||
|         $transformer  = app(TransactionGroupTransformer::class); | ||||
|         $transformer->setParameters($this->parameters); | ||||
| 
 | ||||
|         $resource = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource     = new FractalCollection($transactions, $transformer, 'transactions'); | ||||
|         $resource->setPaginator(new IlluminatePaginatorAdapter($paginator)); | ||||
| 
 | ||||
|         return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE); | ||||
|   | ||||
Some files were not shown because too many files have changed in this diff Show More
		Reference in New Issue
	
	Block a user