mirror of
https://github.com/firefly-iii/firefly-iii.git
synced 2025-10-12 23:45:10 +00:00
Compare commits
274 Commits
develop-20
...
develop
Author | SHA1 | Date | |
---|---|---|---|
|
7ce055a22c | ||
|
7bd915930c | ||
|
75aa2d99fd | ||
|
f52bc0e242 | ||
|
55cf924794 | ||
|
df3e4a6554 | ||
|
7c4ada458e | ||
|
2a4a98dd10 | ||
|
a3bf845851 | ||
|
78e832cdba | ||
|
d47e4c4f24 | ||
|
056329291f | ||
|
977946064d | ||
|
1870345ddf | ||
|
6980717075 | ||
|
1fe0aebacb | ||
|
cbf7aef0c1 | ||
|
8c3e6c0189 | ||
|
cf7ee79c1c | ||
|
7e344e4332 | ||
|
0a55e9fb4e | ||
|
ed2e0e86dc | ||
|
9d1fb2cd6a | ||
|
57617b750f | ||
|
f6411fdc5a | ||
|
02e24fc919 | ||
|
dbc0210304 | ||
|
a709e224d4 | ||
|
83f3eddf44 | ||
|
7cfc4c2671 | ||
|
1c6055cb2d | ||
|
4f4576e458 | ||
|
84d3bcbb37 | ||
|
c91c87d646 | ||
|
e09b6034f7 | ||
|
ad67bb80f3 | ||
|
a88d0de34d | ||
|
ecf498cc81 | ||
|
569f553d26 | ||
|
7d45bc46b8 | ||
|
08553fcfb2 | ||
|
58c76bee94 | ||
|
3fa1b6dd27 | ||
|
63aa8adab7 | ||
|
70b8ea0acb | ||
|
d800a01e33 | ||
|
52f3ec7d3d | ||
|
d4978a09ee | ||
|
77095276e2 | ||
|
b77a8591dc | ||
|
132d7d9ff8 | ||
|
a981e2c5cb | ||
|
77b88b7758 | ||
|
b9894eea57 | ||
|
469319a240 | ||
|
5a55593e34 | ||
|
8979e5ad5a | ||
|
3ab65c27ac | ||
|
a3cac6fd0f | ||
|
1acb5d8681 | ||
|
f24cdc7897 | ||
|
a2b611253b | ||
|
252459c29b | ||
|
3582baf9f7 | ||
|
b03ecab035 | ||
|
547a4e9dbb | ||
|
62e33a51bd | ||
|
8b0ee7e20a | ||
|
0e0ec89b26 | ||
|
ec08485c2b | ||
|
d91d30c8f0 | ||
|
634a43c361 | ||
|
f2f86e1139 | ||
|
a1c870c962 | ||
|
98be3a1414 | ||
|
e3c3a0a84b | ||
|
b254074867 | ||
|
f21a5b3000 | ||
|
6029fe2e84 | ||
|
651e11ed1c | ||
|
5ba29cdacd | ||
|
f948cc95b4 | ||
|
11e721c6c9 | ||
|
4bc77b2707 | ||
|
6639309935 | ||
|
52e08bb9eb | ||
|
435ca994cf | ||
|
b29c35864c | ||
|
2ddc012549 | ||
|
22c88383ad | ||
|
9593f1b44e | ||
|
22f67be0b5 | ||
|
0e1633b52b | ||
|
0070e000b6 | ||
|
c525a18263 | ||
|
68fbd8d5f4 | ||
|
0724c005cf | ||
|
e662275400 | ||
|
def2dd77ab | ||
|
36e87f3383 | ||
|
e420752991 | ||
|
c541cf48c3 | ||
|
521db984ab | ||
|
b2b3c3f135 | ||
|
b0033cf9ed | ||
|
50279d623c | ||
|
6341743cf9 | ||
|
072212c112 | ||
|
362705ec71 | ||
|
6ce926e7d2 | ||
|
1652c3af72 | ||
|
012172b0b5 | ||
|
957bc00847 | ||
|
7f827fb277 | ||
|
8e700944fd | ||
|
037a128942 | ||
|
ca364dc877 | ||
|
e55af7186c | ||
|
354bbebbee | ||
|
a70fab1e87 | ||
|
b9c93091cd | ||
|
4349f8f303 | ||
|
5088e20f25 | ||
|
3f81aa7403 | ||
|
8885d1dbeb | ||
|
a6ba75d528 | ||
|
667cbb1332 | ||
|
d1bae875f7 | ||
|
c5cf529413 | ||
|
62b9f2785f | ||
|
3b85f87502 | ||
|
87d3d14504 | ||
|
5637573fd0 | ||
|
48255ae6ee | ||
|
ea02986170 | ||
|
f4fbc15ac6 | ||
|
a02c4b42a4 | ||
|
1ff47441ce | ||
|
2cc8568077 | ||
|
408687ec6b | ||
|
308abffb0b | ||
|
6743b3fe83 | ||
|
ac0113e445 | ||
|
0f0a28c3d9 | ||
|
79f2d70211 | ||
|
8a06c0f7ec | ||
|
c54da62005 | ||
|
e5923202af | ||
|
eb6f78406e | ||
|
d61f87f649 | ||
|
33dcce7525 | ||
|
b1d86c3a37 | ||
|
822dee6e70 | ||
|
f6dac83777 | ||
|
d3c557ca22 | ||
|
853a99852e | ||
|
8f24ac4fcd | ||
|
8b09cfb8c9 | ||
|
18ae950d2e | ||
|
69dfbda847 | ||
|
4ec2fcdb8a | ||
|
08879d31ba | ||
|
66d09450d3 | ||
|
74f7c07a76 | ||
|
ae3d0a3e49 | ||
|
61e8d7d7a2 | ||
|
62c5440605 | ||
|
0aa90b9453 | ||
|
855bc2f8e7 | ||
|
d8f05492c3 | ||
|
4a264f34fa | ||
|
5a1413e758 | ||
|
84dbeeb0ce | ||
|
d868dc0945 | ||
|
beecf9c229 | ||
|
e39ba46398 | ||
|
e6b6a3cee5 | ||
|
b5483f6ad3 | ||
|
a751218d53 | ||
|
2af5e6eeef | ||
|
013c43f9f2 | ||
|
7e08a1f33c | ||
|
e592b56d7a | ||
|
a2479f71fe | ||
|
7d3b993b98 | ||
|
90623101a3 | ||
|
e2eca79b25 | ||
|
8c0ee8f024 | ||
|
69cae3ae55 | ||
|
8a06298385 | ||
|
acc3c294d8 | ||
|
dbf7dba421 | ||
|
65813f290d | ||
|
3491fbb99d | ||
|
cb6b3d5f85 | ||
|
956d4e09c3 | ||
|
6a7c35e7bc | ||
|
090aecb5f5 | ||
|
b653d63d3d | ||
|
258dbf4a98 | ||
|
53335077ff | ||
|
ecfb3e2f95 | ||
|
f512e6724e | ||
|
de9efb0727 | ||
|
9075fa8ac8 | ||
|
768bd892c8 | ||
|
9d9483e20f | ||
|
935453796e | ||
|
c2d3f5da16 | ||
|
9e6f9d16e4 | ||
|
fad016f92f | ||
|
30df6684cb | ||
|
4aa911420a | ||
|
19555a7046 | ||
|
e5c409a8fc | ||
|
3adf3d2fdb | ||
|
0923d5a23e | ||
|
76b8cdc385 | ||
|
0a27da83eb | ||
|
17d6e2be85 | ||
|
7381f3eba9 | ||
|
7f2ef1b8e1 | ||
|
9dccae2402 | ||
|
073afd5b6e | ||
|
4167d85be2 | ||
|
ee28d1307d | ||
|
7562215666 | ||
|
0203b918e9 | ||
|
ae7c664418 | ||
|
f13e0991fb | ||
|
deae94b658 | ||
|
c38c752520 | ||
|
28e7df2527 | ||
|
cb0b42e44b | ||
|
a3674c4dfe | ||
|
27480561ee | ||
|
6ea7152423 | ||
|
dab95f7a86 | ||
|
adf34805a8 | ||
|
93e926465f | ||
|
5b0be91f93 | ||
|
01e7b604da | ||
|
974a550d22 | ||
|
58d175444b | ||
|
29d8861e96 | ||
|
eb832c750f | ||
|
134770644a | ||
|
a9f21c9371 | ||
|
781947beeb | ||
|
9760cd2f97 | ||
|
d317e9ec32 | ||
|
534f7fcadb | ||
|
fb3f7a1d4b | ||
|
bf2c3e3561 | ||
|
b670f81dcd | ||
|
7aac1cdf67 | ||
|
fa0ac8a16c | ||
|
0990b1f0b4 | ||
|
c1922670c8 | ||
|
81cd89d66f | ||
|
f5c202543c | ||
|
034f437c6b | ||
|
8550ba6138 | ||
|
a51501025b | ||
|
a9d26e4586 | ||
|
949691935f | ||
|
4835b05304 | ||
|
cce5a73dd2 | ||
|
3152f635dd | ||
|
12e8651017 | ||
|
f88286c848 | ||
|
39cf0533d9 | ||
|
75dfdcc220 | ||
|
c3a3bdf525 |
137
.ci/php-cs-fixer/composer.lock
generated
137
.ci/php-cs-fixer/composer.lock
generated
@@ -402,16 +402,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "friendsofphp/php-cs-fixer",
|
"name": "friendsofphp/php-cs-fixer",
|
||||||
"version": "v3.87.1",
|
"version": "v3.88.2",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
"url": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer.git",
|
||||||
"reference": "2f5170365e2a422d0c5421f9c8818b2c078105f6"
|
"reference": "a8d15584bafb0f0d9d938827840060fd4a3ebc99"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/2f5170365e2a422d0c5421f9c8818b2c078105f6",
|
"url": "https://api.github.com/repos/PHP-CS-Fixer/PHP-CS-Fixer/zipball/a8d15584bafb0f0d9d938827840060fd4a3ebc99",
|
||||||
"reference": "2f5170365e2a422d0c5421f9c8818b2c078105f6",
|
"reference": "a8d15584bafb0f0d9d938827840060fd4a3ebc99",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -438,12 +438,13 @@
|
|||||||
"symfony/polyfill-mbstring": "^1.33",
|
"symfony/polyfill-mbstring": "^1.33",
|
||||||
"symfony/polyfill-php80": "^1.33",
|
"symfony/polyfill-php80": "^1.33",
|
||||||
"symfony/polyfill-php81": "^1.33",
|
"symfony/polyfill-php81": "^1.33",
|
||||||
|
"symfony/polyfill-php84": "^1.33",
|
||||||
"symfony/process": "^5.4.47 || ^6.4.24 || ^7.2",
|
"symfony/process": "^5.4.47 || ^6.4.24 || ^7.2",
|
||||||
"symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0"
|
"symfony/stopwatch": "^5.4.45 || ^6.4.24 || ^7.0"
|
||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"facile-it/paraunit": "^1.3.1 || ^2.7",
|
"facile-it/paraunit": "^1.3.1 || ^2.7",
|
||||||
"infection/infection": "^0.29.14",
|
"infection/infection": "^0.31.0",
|
||||||
"justinrainbow/json-schema": "^6.5",
|
"justinrainbow/json-schema": "^6.5",
|
||||||
"keradus/cli-executor": "^2.2",
|
"keradus/cli-executor": "^2.2",
|
||||||
"mikey179/vfsstream": "^1.6.12",
|
"mikey179/vfsstream": "^1.6.12",
|
||||||
@@ -451,7 +452,6 @@
|
|||||||
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6",
|
"php-cs-fixer/phpunit-constraint-isidenticalstring": "^1.6",
|
||||||
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6",
|
"php-cs-fixer/phpunit-constraint-xmlmatchesxsd": "^1.6",
|
||||||
"phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34",
|
"phpunit/phpunit": "^9.6.25 || ^10.5.53 || ^11.5.34",
|
||||||
"symfony/polyfill-php84": "^1.33",
|
|
||||||
"symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2",
|
"symfony/var-dumper": "^5.4.48 || ^6.4.24 || ^7.3.2",
|
||||||
"symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2"
|
"symfony/yaml": "^5.4.45 || ^6.4.24 || ^7.3.2"
|
||||||
},
|
},
|
||||||
@@ -494,7 +494,7 @@
|
|||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
"issues": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/issues",
|
||||||
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.87.1"
|
"source": "https://github.com/PHP-CS-Fixer/PHP-CS-Fixer/tree/v3.88.2"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -502,7 +502,7 @@
|
|||||||
"type": "github"
|
"type": "github"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-09-02T15:27:36+00:00"
|
"time": "2025-09-27T00:24:15+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "psr/container",
|
"name": "psr/container",
|
||||||
@@ -1252,16 +1252,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/console",
|
"name": "symfony/console",
|
||||||
"version": "v7.3.3",
|
"version": "v7.3.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/console.git",
|
"url": "https://github.com/symfony/console.git",
|
||||||
"reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7"
|
"reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/console/zipball/cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
|
"url": "https://api.github.com/repos/symfony/console/zipball/2b9c5fafbac0399a20a2e82429e2bd735dcfb7db",
|
||||||
"reference": "cb0102a1c5ac3807cf3fdf8bea96007df7fdbea7",
|
"reference": "2b9c5fafbac0399a20a2e82429e2bd735dcfb7db",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -1326,7 +1326,7 @@
|
|||||||
"terminal"
|
"terminal"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/console/tree/v7.3.3"
|
"source": "https://github.com/symfony/console/tree/v7.3.4"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -1346,7 +1346,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-25T06:35:40+00:00"
|
"time": "2025-09-22T15:31:00+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/deprecation-contracts",
|
"name": "symfony/deprecation-contracts",
|
||||||
@@ -2284,17 +2284,97 @@
|
|||||||
"time": "2024-09-09T11:45:10+00:00"
|
"time": "2024-09-09T11:45:10+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/process",
|
"name": "symfony/polyfill-php84",
|
||||||
"version": "v7.3.3",
|
"version": "v1.33.0",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/process.git",
|
"url": "https://github.com/symfony/polyfill-php84.git",
|
||||||
"reference": "32241012d521e2e8a9d713adb0812bb773b907f1"
|
"reference": "d8ced4d875142b6a7426000426b8abc631d6b191"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/process/zipball/32241012d521e2e8a9d713adb0812bb773b907f1",
|
"url": "https://api.github.com/repos/symfony/polyfill-php84/zipball/d8ced4d875142b6a7426000426b8abc631d6b191",
|
||||||
"reference": "32241012d521e2e8a9d713adb0812bb773b907f1",
|
"reference": "d8ced4d875142b6a7426000426b8abc631d6b191",
|
||||||
|
"shasum": ""
|
||||||
|
},
|
||||||
|
"require": {
|
||||||
|
"php": ">=7.2"
|
||||||
|
},
|
||||||
|
"type": "library",
|
||||||
|
"extra": {
|
||||||
|
"thanks": {
|
||||||
|
"url": "https://github.com/symfony/polyfill",
|
||||||
|
"name": "symfony/polyfill"
|
||||||
|
}
|
||||||
|
},
|
||||||
|
"autoload": {
|
||||||
|
"files": [
|
||||||
|
"bootstrap.php"
|
||||||
|
],
|
||||||
|
"psr-4": {
|
||||||
|
"Symfony\\Polyfill\\Php84\\": ""
|
||||||
|
},
|
||||||
|
"classmap": [
|
||||||
|
"Resources/stubs"
|
||||||
|
]
|
||||||
|
},
|
||||||
|
"notification-url": "https://packagist.org/downloads/",
|
||||||
|
"license": [
|
||||||
|
"MIT"
|
||||||
|
],
|
||||||
|
"authors": [
|
||||||
|
{
|
||||||
|
"name": "Nicolas Grekas",
|
||||||
|
"email": "p@tchwork.com"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "Symfony Community",
|
||||||
|
"homepage": "https://symfony.com/contributors"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"description": "Symfony polyfill backporting some PHP 8.4+ features to lower PHP versions",
|
||||||
|
"homepage": "https://symfony.com",
|
||||||
|
"keywords": [
|
||||||
|
"compatibility",
|
||||||
|
"polyfill",
|
||||||
|
"portable",
|
||||||
|
"shim"
|
||||||
|
],
|
||||||
|
"support": {
|
||||||
|
"source": "https://github.com/symfony/polyfill-php84/tree/v1.33.0"
|
||||||
|
},
|
||||||
|
"funding": [
|
||||||
|
{
|
||||||
|
"url": "https://symfony.com/sponsor",
|
||||||
|
"type": "custom"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/fabpot",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://github.com/nicolas-grekas",
|
||||||
|
"type": "github"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"url": "https://tidelift.com/funding/github/packagist/symfony/symfony",
|
||||||
|
"type": "tidelift"
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"time": "2025-06-24T13:30:11+00:00"
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"name": "symfony/process",
|
||||||
|
"version": "v7.3.4",
|
||||||
|
"source": {
|
||||||
|
"type": "git",
|
||||||
|
"url": "https://github.com/symfony/process.git",
|
||||||
|
"reference": "f24f8f316367b30810810d4eb30c543d7003ff3b"
|
||||||
|
},
|
||||||
|
"dist": {
|
||||||
|
"type": "zip",
|
||||||
|
"url": "https://api.github.com/repos/symfony/process/zipball/f24f8f316367b30810810d4eb30c543d7003ff3b",
|
||||||
|
"reference": "f24f8f316367b30810810d4eb30c543d7003ff3b",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2326,7 +2406,7 @@
|
|||||||
"description": "Executes commands in sub-processes",
|
"description": "Executes commands in sub-processes",
|
||||||
"homepage": "https://symfony.com",
|
"homepage": "https://symfony.com",
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/process/tree/v7.3.3"
|
"source": "https://github.com/symfony/process/tree/v7.3.4"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2346,7 +2426,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-18T09:42:54+00:00"
|
"time": "2025-09-11T10:12:26+00:00"
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/service-contracts",
|
"name": "symfony/service-contracts",
|
||||||
@@ -2495,16 +2575,16 @@
|
|||||||
},
|
},
|
||||||
{
|
{
|
||||||
"name": "symfony/string",
|
"name": "symfony/string",
|
||||||
"version": "v7.3.3",
|
"version": "v7.3.4",
|
||||||
"source": {
|
"source": {
|
||||||
"type": "git",
|
"type": "git",
|
||||||
"url": "https://github.com/symfony/string.git",
|
"url": "https://github.com/symfony/string.git",
|
||||||
"reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c"
|
"reference": "f96476035142921000338bad71e5247fbc138872"
|
||||||
},
|
},
|
||||||
"dist": {
|
"dist": {
|
||||||
"type": "zip",
|
"type": "zip",
|
||||||
"url": "https://api.github.com/repos/symfony/string/zipball/17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
|
"url": "https://api.github.com/repos/symfony/string/zipball/f96476035142921000338bad71e5247fbc138872",
|
||||||
"reference": "17a426cce5fd1f0901fefa9b2a490d0038fd3c9c",
|
"reference": "f96476035142921000338bad71e5247fbc138872",
|
||||||
"shasum": ""
|
"shasum": ""
|
||||||
},
|
},
|
||||||
"require": {
|
"require": {
|
||||||
@@ -2519,7 +2599,6 @@
|
|||||||
},
|
},
|
||||||
"require-dev": {
|
"require-dev": {
|
||||||
"symfony/emoji": "^7.1",
|
"symfony/emoji": "^7.1",
|
||||||
"symfony/error-handler": "^6.4|^7.0",
|
|
||||||
"symfony/http-client": "^6.4|^7.0",
|
"symfony/http-client": "^6.4|^7.0",
|
||||||
"symfony/intl": "^6.4|^7.0",
|
"symfony/intl": "^6.4|^7.0",
|
||||||
"symfony/translation-contracts": "^2.5|^3.0",
|
"symfony/translation-contracts": "^2.5|^3.0",
|
||||||
@@ -2562,7 +2641,7 @@
|
|||||||
"utf8"
|
"utf8"
|
||||||
],
|
],
|
||||||
"support": {
|
"support": {
|
||||||
"source": "https://github.com/symfony/string/tree/v7.3.3"
|
"source": "https://github.com/symfony/string/tree/v7.3.4"
|
||||||
},
|
},
|
||||||
"funding": [
|
"funding": [
|
||||||
{
|
{
|
||||||
@@ -2582,7 +2661,7 @@
|
|||||||
"type": "tidelift"
|
"type": "tidelift"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"time": "2025-08-25T06:35:40+00:00"
|
"time": "2025-09-11T14:36:48+00:00"
|
||||||
}
|
}
|
||||||
],
|
],
|
||||||
"packages-dev": [],
|
"packages-dev": [],
|
||||||
|
@@ -7,30 +7,26 @@ parameters:
|
|||||||
- ../bootstrap/app.php
|
- ../bootstrap/app.php
|
||||||
universalObjectCratesClasses:
|
universalObjectCratesClasses:
|
||||||
- Illuminate\Database\Eloquent\Model
|
- Illuminate\Database\Eloquent\Model
|
||||||
# TODO: slowly remove these parameters and fix the issues found.
|
|
||||||
reportUnmatchedIgnoredErrors: true
|
reportUnmatchedIgnoredErrors: true
|
||||||
ignoreErrors:
|
ignoreErrors:
|
||||||
# TODO: slowly remove these exceptions and fix the issues found.
|
# all errors below I will never fix.
|
||||||
- '#Dynamic call to static method#' # all the Laravel ORM things depend on this.
|
- '#expects view-string\|null, string given#'
|
||||||
- identifier: varTag.nativeType
|
- '#expects view-string, string given#'
|
||||||
- identifier: varTag.type
|
- "#Parameter \\#[1-2] \\$num[1-2] of function bc[a-z]+ expects numeric-string, [a-z\\-|&]+ given#"
|
||||||
|
- identifier: missingType.generics # not interesting enough to fix.
|
||||||
-
|
-
|
||||||
identifier: larastan.noEnvCallsOutsideOfConfig
|
identifier: larastan.noEnvCallsOutsideOfConfig
|
||||||
path: ../app/Console/Commands/System/CreatesDatabase.php
|
path: ../app/Console/Commands/System/CreatesDatabase.php
|
||||||
- identifier: missingType.iterableValue # not interesting enough to fix.
|
- identifier: missingType.iterableValue # not interesting enough to fix.
|
||||||
- identifier: missingType.generics # not interesting enough to fix.
|
- identifier: varTag.type # needs a custom extension for every repository, not gonna happen.
|
||||||
- "#Parameter \\#[1-2] \\$num[1-2] of function bc[a-z]+ expects numeric-string, [a-z\\-|&]+ given#"
|
- '#Dynamic call to static method Illuminate#'
|
||||||
- '#expects view-string, string given#'
|
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::before#' # is custom scope
|
||||||
- '#expects view-string\|null, string given#'
|
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::after#' # is custom scope
|
||||||
|
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::withTrashed#' # is to allow soft delete
|
||||||
# phpstan can't handle this so we ignore them.
|
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::accountTypeIn#' # is a custom scope
|
||||||
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::before#'
|
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\BelongsTo::withTrashed#' # is to allow soft delete
|
||||||
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::after#'
|
|
||||||
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::withTrashed#'
|
|
||||||
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::accountTypeIn#'
|
|
||||||
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\BelongsTo::withTrashed#'
|
|
||||||
|
|
||||||
# The level 8 is the highest level. original was 5
|
# The level 8 is the highest level. original was 5
|
||||||
# 7 is more than enough, higher just leaves NULL things.
|
# 7 is more than enough, higher just leaves NULL things.
|
||||||
level: 7
|
level: 6
|
||||||
|
|
||||||
|
@@ -314,8 +314,9 @@ DEMO_USERNAME=
|
|||||||
DEMO_PASSWORD=
|
DEMO_PASSWORD=
|
||||||
|
|
||||||
#
|
#
|
||||||
# Disable or enable the running balance column data
|
# Disable or enable the running balance column data.
|
||||||
# Please disable this. It's a very experimental feature.
|
# If you enable this, please also run "php artisan firefly-iii:correct-database"
|
||||||
|
# This will take some time the first run.
|
||||||
#
|
#
|
||||||
USE_RUNNING_BALANCE=false
|
USE_RUNNING_BALANCE=false
|
||||||
|
|
||||||
|
4
.github/workflows/cleanup.yml
vendored
4
.github/workflows/cleanup.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
|||||||
timeout-minutes: 10
|
timeout-minutes: 10
|
||||||
steps:
|
steps:
|
||||||
- name: Prune cancelled/skipped runs
|
- name: Prune cancelled/skipped runs
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v8
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
script: |
|
script: |
|
||||||
@@ -45,7 +45,7 @@ jobs:
|
|||||||
}
|
}
|
||||||
|
|
||||||
- name: Prune runs older than 3 days
|
- name: Prune runs older than 3 days
|
||||||
uses: actions/github-script@v7
|
uses: actions/github-script@v8
|
||||||
with:
|
with:
|
||||||
github-token: ${{ secrets.GITHUB_TOKEN }}
|
github-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
script: |
|
script: |
|
||||||
|
4
.github/workflows/release.yml
vendored
4
.github/workflows/release.yml
vendored
@@ -250,7 +250,7 @@ jobs:
|
|||||||
fi
|
fi
|
||||||
|
|
||||||
echo "Merge all changes from $BRANCH_NAME back into '$MERGE_INTO' using a PR"
|
echo "Merge all changes from $BRANCH_NAME back into '$MERGE_INTO' using a PR"
|
||||||
PR_URL=$(gh pr create -B $MERGE_INTO -H $BRANCH_NAME --title "🤖 Automatic PR to merge all changes into the '$MERGE_INTO' branch." --body '🤖 Created by GitHub action')
|
PR_URL=$(gh pr create -B $MERGE_INTO -H $BRANCH_NAME --title "🤖 Automatic PR to merge all changes into the '$MERGE_INTO' branch." --body '🤖 This PR was created automatically by a GitHub action to merge the changed files into this branch. It will be merged automatically. `Share and enjoy`')
|
||||||
echo "PR URL is '$PR_URL'"
|
echo "PR URL is '$PR_URL'"
|
||||||
IFS='/' read -ra parts <<< "$PR_URL"
|
IFS='/' read -ra parts <<< "$PR_URL"
|
||||||
PR_NR=$(printf %s\\n "${parts[@]:(-1)}")
|
PR_NR=$(printf %s\\n "${parts[@]:(-1)}")
|
||||||
@@ -272,7 +272,7 @@ jobs:
|
|||||||
|
|
||||||
echo "Also merge everything into main since this is a release."
|
echo "Also merge everything into main since this is a release."
|
||||||
echo 'create PR'
|
echo 'create PR'
|
||||||
PR_URL=$(gh pr create -B main -H develop --title "🤖 Automatic PR to merge all changes into the main branch." --body "🤖 Created by GitHub action")
|
PR_URL=$(gh pr create -B main -H develop --title "🤖 Automatic PR to merge all changes into the main branch." --body '🤖 This PR was created automatically by a GitHub action to merge the changed files into this branch. It will be merged automatically. `Share and enjoy`')
|
||||||
echo "PR URL is '$PR_URL'"
|
echo "PR URL is '$PR_URL'"
|
||||||
|
|
||||||
IFS='/' read -ra parts <<< "$PR_URL"
|
IFS='/' read -ra parts <<< "$PR_URL"
|
||||||
|
2
.github/workflows/stale.yml
vendored
2
.github/workflows/stale.yml
vendored
@@ -15,7 +15,7 @@ jobs:
|
|||||||
actions: write
|
actions: write
|
||||||
runs-on: ubuntu-latest
|
runs-on: ubuntu-latest
|
||||||
steps:
|
steps:
|
||||||
- uses: actions/stale@v9
|
- uses: actions/stale@v10
|
||||||
with:
|
with:
|
||||||
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
repo-token: ${{ secrets.GITHUB_TOKEN }}
|
||||||
stale-issue-message: |
|
stale-issue-message: |
|
||||||
|
@@ -4,8 +4,10 @@ Over time, many people have contributed to Firefly III. Their efforts are not al
|
|||||||
Please find below all the people who contributed to the Firefly III code. Their names are mentioned in the year of their first contribution.
|
Please find below all the people who contributed to the Firefly III code. Their names are mentioned in the year of their first contribution.
|
||||||
|
|
||||||
## 2025
|
## 2025
|
||||||
|
- jreyesr
|
||||||
|
- codearena-bot
|
||||||
|
- Nicky De Maeyer
|
||||||
- Denis Iskandarov
|
- Denis Iskandarov
|
||||||
- =
|
|
||||||
- Lompi
|
- Lompi
|
||||||
- Jose Diaz-Gonzalez
|
- Jose Diaz-Gonzalez
|
||||||
- SoftBrix
|
- SoftBrix
|
||||||
|
@@ -84,13 +84,13 @@ class AccountController extends Controller
|
|||||||
$data = $request->getData();
|
$data = $request->getData();
|
||||||
$types = $data['types'];
|
$types = $data['types'];
|
||||||
$query = $data['query'];
|
$query = $data['query'];
|
||||||
$date = $data['date'] ?? today(config('app.timezone'));
|
$date = $data['date'];
|
||||||
$return = [];
|
$return = [];
|
||||||
$timer = Timer::getInstance();
|
$timer = Timer::getInstance();
|
||||||
$timer->start(sprintf('AC accounts "%s"', $query));
|
$timer->start(sprintf('AC accounts "%s"', $query));
|
||||||
$result = $this->repository->searchAccount((string) $query, $types, $this->parameters->get('limit'));
|
$result = $this->repository->searchAccount((string) $query, $types, $this->parameters->get('limit'));
|
||||||
|
|
||||||
// set date to subday + end-of-day for account balance. so it is at $date 23:59:59
|
// set date to end-of-day for account balance. so it is at $date 23:59:59
|
||||||
$date->endOfDay();
|
$date->endOfDay();
|
||||||
|
|
||||||
$allBalances = Steam::accountsBalancesOptimized($result, $date, $this->primaryCurrency, $this->convertToPrimary);
|
$allBalances = Steam::accountsBalancesOptimized($result, $date, $this->primaryCurrency, $this->convertToPrimary);
|
||||||
|
@@ -28,8 +28,10 @@ use FireflyIII\Api\V1\Controllers\Controller;
|
|||||||
use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
|
use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
|
||||||
use FireflyIII\Enums\UserRoleEnum;
|
use FireflyIII\Enums\UserRoleEnum;
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -96,6 +98,7 @@ class PiggyBankController extends Controller
|
|||||||
|
|
||||||
/** @var PiggyBank $piggy */
|
/** @var PiggyBank $piggy */
|
||||||
foreach ($piggies as $piggy) {
|
foreach ($piggies as $piggy) {
|
||||||
|
/** @var TransactionCurrency $currency */
|
||||||
$currency = $piggy->transactionCurrency;
|
$currency = $piggy->transactionCurrency;
|
||||||
$currentAmount = $this->piggyRepository->getCurrentAmount($piggy);
|
$currentAmount = $this->piggyRepository->getCurrentAmount($piggy);
|
||||||
$objectGroup = $piggy->objectGroups()->first();
|
$objectGroup = $piggy->objectGroups()->first();
|
||||||
@@ -105,8 +108,8 @@ class PiggyBankController extends Controller
|
|||||||
'name_with_balance' => sprintf(
|
'name_with_balance' => sprintf(
|
||||||
'%s (%s / %s)',
|
'%s (%s / %s)',
|
||||||
$piggy->name,
|
$piggy->name,
|
||||||
app('amount')->formatAnything($currency, $currentAmount, false),
|
Amount::formatAnything($currency, $currentAmount, false),
|
||||||
app('amount')->formatAnything($currency, $piggy->target_amount, false),
|
Amount::formatAnything($currency, $piggy->target_amount, false),
|
||||||
),
|
),
|
||||||
'currency_id' => (string) $currency->id,
|
'currency_id' => (string) $currency->id,
|
||||||
'currency_name' => $currency->name,
|
'currency_name' => $currency->name,
|
||||||
|
@@ -24,10 +24,10 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Autocomplete;
|
namespace FireflyIII\Api\V1\Controllers\Autocomplete;
|
||||||
|
|
||||||
use FireflyIII\Models\TransactionGroup;
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
|
use FireflyIII\Api\V1\Requests\Autocomplete\AutocompleteRequest;
|
||||||
use FireflyIII\Enums\UserRoleEnum;
|
use FireflyIII\Enums\UserRoleEnum;
|
||||||
|
use FireflyIII\Models\TransactionGroup;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||||
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
|
use FireflyIII\Repositories\TransactionGroup\TransactionGroupRepositoryInterface;
|
||||||
|
@@ -31,9 +31,7 @@ use FireflyIII\Enums\TransactionTypeEnum;
|
|||||||
use FireflyIII\Enums\UserRoleEnum;
|
use FireflyIII\Enums\UserRoleEnum;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Support\Facades\Amount;
|
|
||||||
use FireflyIII\Support\Http\Api\AccountBalanceGrouped;
|
use FireflyIII\Support\Http\Api\AccountBalanceGrouped;
|
||||||
use FireflyIII\Support\Http\Api\CleansChartData;
|
use FireflyIII\Support\Http\Api\CleansChartData;
|
||||||
use FireflyIII\Support\Http\Api\CollectsAccountsFromFilter;
|
use FireflyIII\Support\Http\Api\CollectsAccountsFromFilter;
|
||||||
|
@@ -31,10 +31,10 @@ use FireflyIII\Enums\UserRoleEnum;
|
|||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Models\BudgetLimit;
|
use FireflyIII\Models\BudgetLimit;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
|
||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
|
use FireflyIII\Repositories\Budget\OperationsRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Http\Api\CleansChartData;
|
use FireflyIII\Support\Http\Api\CleansChartData;
|
||||||
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
use FireflyIII\Support\Http\Api\ExchangeRateConverter;
|
||||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
@@ -114,7 +114,7 @@ class BudgetController extends Controller
|
|||||||
// get all limits:
|
// get all limits:
|
||||||
$limits = $this->blRepository->getBudgetLimits($budget, $start, $end);
|
$limits = $this->blRepository->getBudgetLimits($budget, $start, $end);
|
||||||
$rows = [];
|
$rows = [];
|
||||||
$spent = $this->opsRepository->listExpenses($start, $end, null, new Collection([$budget]));
|
$spent = $this->opsRepository->listExpenses($start, $end, null, new Collection()->push($budget));
|
||||||
$expenses = $this->processExpenses($budget->id, $spent, $start, $end);
|
$expenses = $this->processExpenses($budget->id, $spent, $start, $end);
|
||||||
$converter = new ExchangeRateConverter();
|
$converter = new ExchangeRateConverter();
|
||||||
$currencies = [$this->primaryCurrency->id => $this->primaryCurrency];
|
$currencies = [$this->primaryCurrency->id => $this->primaryCurrency];
|
||||||
@@ -133,9 +133,9 @@ class BudgetController extends Controller
|
|||||||
$row['pc_left'] = '0';
|
$row['pc_left'] = '0';
|
||||||
$row['pc_overspent'] = '0';
|
$row['pc_overspent'] = '0';
|
||||||
|
|
||||||
if (null !== $limit) {
|
if ($limit instanceof BudgetLimit) {
|
||||||
$row['budgeted'] = $limit->amount;
|
$row['budgeted'] = $limit->amount;
|
||||||
$row['left'] = bcsub($row['budgeted'], bcmul($row['spent'], '-1'));
|
$row['left'] = bcsub((string) $row['budgeted'], bcmul((string) $row['spent'], '-1'));
|
||||||
$row['overspent'] = bcmul($row['left'], '-1');
|
$row['overspent'] = bcmul($row['left'], '-1');
|
||||||
$row['left'] = 1 === bccomp($row['left'], '0') ? $row['left'] : '0';
|
$row['left'] = 1 === bccomp($row['left'], '0') ? $row['left'] : '0';
|
||||||
$row['overspent'] = 1 === bccomp($row['overspent'], '0') ? $row['overspent'] : '0';
|
$row['overspent'] = 1 === bccomp($row['overspent'], '0') ? $row['overspent'] : '0';
|
||||||
@@ -143,7 +143,7 @@ class BudgetController extends Controller
|
|||||||
|
|
||||||
// convert data if necessary.
|
// convert data if necessary.
|
||||||
if (true === $this->convertToPrimary && $currencyId !== $this->primaryCurrency->id) {
|
if (true === $this->convertToPrimary && $currencyId !== $this->primaryCurrency->id) {
|
||||||
$currencies[$currencyId] ??= TransactionCurrency::find($currencyId);
|
$currencies[$currencyId] ??= Amount::getTransactionCurrencyById($currencyId);
|
||||||
$row['pc_budgeted'] = $converter->convert($currencies[$currencyId], $this->primaryCurrency, $start, $row['budgeted']);
|
$row['pc_budgeted'] = $converter->convert($currencies[$currencyId], $this->primaryCurrency, $start, $row['budgeted']);
|
||||||
$row['pc_spent'] = $converter->convert($currencies[$currencyId], $this->primaryCurrency, $start, $row['spent']);
|
$row['pc_spent'] = $converter->convert($currencies[$currencyId], $this->primaryCurrency, $start, $row['spent']);
|
||||||
$row['pc_left'] = $converter->convert($currencies[$currencyId], $this->primaryCurrency, $start, $row['left']);
|
$row['pc_left'] = $converter->convert($currencies[$currencyId], $this->primaryCurrency, $start, $row['left']);
|
||||||
@@ -208,7 +208,7 @@ class BudgetController extends Controller
|
|||||||
// */
|
// */
|
||||||
// private function noBudgetLimits(Budget $budget, Carbon $start, Carbon $end): array
|
// private function noBudgetLimits(Budget $budget, Carbon $start, Carbon $end): array
|
||||||
// {
|
// {
|
||||||
// $spent = $this->opsRepository->listExpenses($start, $end, null, new Collection([$budget]));
|
// $spent = $this->opsRepository->listExpenses($start, $end, null, new Collection()->push($budget));
|
||||||
//
|
//
|
||||||
// return $this->processExpenses($budget->id, $spent, $start, $end);
|
// return $this->processExpenses($budget->id, $spent, $start, $end);
|
||||||
// }
|
// }
|
||||||
@@ -231,7 +231,7 @@ class BudgetController extends Controller
|
|||||||
* @var array $block
|
* @var array $block
|
||||||
*/
|
*/
|
||||||
foreach ($spent as $currencyId => $block) {
|
foreach ($spent as $currencyId => $block) {
|
||||||
$this->currencies[$currencyId] ??= TransactionCurrency::find($currencyId);
|
$this->currencies[$currencyId] ??= Amount::getTransactionCurrencyById($currencyId);
|
||||||
$return[$currencyId] ??= [
|
$return[$currencyId] ??= [
|
||||||
'currency_id' => (string)$currencyId,
|
'currency_id' => (string)$currencyId,
|
||||||
'currency_code' => $block['currency_code'],
|
'currency_code' => $block['currency_code'],
|
||||||
@@ -250,67 +250,15 @@ class BudgetController extends Controller
|
|||||||
// var_dump($return);
|
// var_dump($return);
|
||||||
/** @var array $journal */
|
/** @var array $journal */
|
||||||
foreach ($currentBudgetArray['transaction_journals'] as $journal) {
|
foreach ($currentBudgetArray['transaction_journals'] as $journal) {
|
||||||
$return[$currencyId]['spent'] = bcadd($return[$currencyId]['spent'], (string)$journal['amount']);
|
/** @var numeric-string $amount */
|
||||||
|
$amount = (string)$journal['amount'];
|
||||||
|
$return[$currencyId]['spent'] = bcadd($return[$currencyId]['spent'], $amount);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
return $return;
|
return $return;
|
||||||
}
|
}
|
||||||
|
|
||||||
// /**
|
|
||||||
// * Function that processes each budget limit (per budget).
|
|
||||||
// *
|
|
||||||
// * If you have a budget limit in EUR, only transactions in EUR will be considered.
|
|
||||||
// * If you have a budget limit in GBP, only transactions in GBP will be considered.
|
|
||||||
// *
|
|
||||||
// * If you have a budget limit in EUR, and a transaction in GBP, it will not be considered for the EUR budget limit.
|
|
||||||
// *
|
|
||||||
// * @throws FireflyException
|
|
||||||
// */
|
|
||||||
// private function budgetLimits(Budget $budget, Collection $limits): array
|
|
||||||
// {
|
|
||||||
// Log::debug(sprintf('Now in budgetLimits(#%d)', $budget->id));
|
|
||||||
// $data = [];
|
|
||||||
//
|
|
||||||
// /** @var BudgetLimit $limit */
|
|
||||||
// foreach ($limits as $limit) {
|
|
||||||
// $data = array_merge($data, $this->processLimit($budget, $limit));
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return $data;
|
|
||||||
// }
|
|
||||||
|
|
||||||
// /**
|
|
||||||
// * @throws FireflyException
|
|
||||||
// */
|
|
||||||
// private function processLimit(Budget $budget, BudgetLimit $limit): array
|
|
||||||
// {
|
|
||||||
// Log::debug(sprintf('Created new ExchangeRateConverter in %s', __METHOD__));
|
|
||||||
// $end = clone $limit->end_date;
|
|
||||||
// $end->endOfDay();
|
|
||||||
// $spent = $this->opsRepository->listExpenses($limit->start_date, $end, null, new Collection([$budget]));
|
|
||||||
// $limitCurrencyId = $limit->transaction_currency_id;
|
|
||||||
//
|
|
||||||
// /** @var array $entry */
|
|
||||||
// // only spent the entry where the entry's currency matches the budget limit's currency
|
|
||||||
// // so $filtered will only have 1 or 0 entries
|
|
||||||
// $filtered = array_filter($spent, fn ($entry) => $entry['currency_id'] === $limitCurrencyId);
|
|
||||||
// $result = $this->processExpenses($budget->id, $filtered, $limit->start_date, $end);
|
|
||||||
// if (1 === count($result)) {
|
|
||||||
// $compare = bccomp($limit->amount, (string)app('steam')->positive($result[$limitCurrencyId]['spent']));
|
|
||||||
// $result[$limitCurrencyId]['budgeted'] = $limit->amount;
|
|
||||||
// if (1 === $compare) {
|
|
||||||
// // convert this amount into the primary currency:
|
|
||||||
// $result[$limitCurrencyId]['left'] = bcadd($limit->amount, (string)$result[$limitCurrencyId]['spent']);
|
|
||||||
// }
|
|
||||||
// if ($compare <= 0) {
|
|
||||||
// $result[$limitCurrencyId]['overspent'] = app('steam')->positive(bcadd($limit->amount, (string)$result[$limitCurrencyId]['spent']));
|
|
||||||
// }
|
|
||||||
// }
|
|
||||||
//
|
|
||||||
// return $result;
|
|
||||||
// }
|
|
||||||
|
|
||||||
private function filterLimit(int $currencyId, Collection $limits): ?BudgetLimit
|
private function filterLimit(int $currencyId, Collection $limits): ?BudgetLimit
|
||||||
{
|
{
|
||||||
$amount = '0';
|
$amount = '0';
|
||||||
|
@@ -107,11 +107,11 @@ class CategoryController extends Controller
|
|||||||
$type = $journal['transaction_type_type'];
|
$type = $journal['transaction_type_type'];
|
||||||
$currency = $currencies[$journalCurrencyId] ?? $this->currencyRepos->find($journalCurrencyId);
|
$currency = $currencies[$journalCurrencyId] ?? $this->currencyRepos->find($journalCurrencyId);
|
||||||
$currencies[$journalCurrencyId] = $currency;
|
$currencies[$journalCurrencyId] = $currency;
|
||||||
$currencyId = (int)$currency->id;
|
$currencyId = $currency->id;
|
||||||
$currencyName = (string)$currency->name;
|
$currencyName = $currency->name;
|
||||||
$currencyCode = (string)$currency->code;
|
$currencyCode = $currency->code;
|
||||||
$currencySymbol = (string)$currency->symbol;
|
$currencySymbol = $currency->symbol;
|
||||||
$currencyDecimalPlaces = (int)$currency->decimal_places;
|
$currencyDecimalPlaces = $currency->decimal_places;
|
||||||
$amount = Steam::positive((string)$journal['amount']);
|
$amount = Steam::positive((string)$journal['amount']);
|
||||||
$pcAmount = null;
|
$pcAmount = null;
|
||||||
|
|
||||||
@@ -120,11 +120,11 @@ class CategoryController extends Controller
|
|||||||
$pcAmount = $amount;
|
$pcAmount = $amount;
|
||||||
}
|
}
|
||||||
if ($this->convertToPrimary && $journalCurrencyId !== $this->primaryCurrency->id) {
|
if ($this->convertToPrimary && $journalCurrencyId !== $this->primaryCurrency->id) {
|
||||||
$currencyId = (int)$this->primaryCurrency->id;
|
$currencyId = $this->primaryCurrency->id;
|
||||||
$currencyName = (string)$this->primaryCurrency->name;
|
$currencyName = $this->primaryCurrency->name;
|
||||||
$currencyCode = (string)$this->primaryCurrency->code;
|
$currencyCode = $this->primaryCurrency->code;
|
||||||
$currencySymbol = (string)$this->primaryCurrency->symbol;
|
$currencySymbol = $this->primaryCurrency->symbol;
|
||||||
$currencyDecimalPlaces = (int)$this->primaryCurrency->decimal_places;
|
$currencyDecimalPlaces = $this->primaryCurrency->decimal_places;
|
||||||
$pcAmount = $converter->convert($currency, $this->primaryCurrency, $journal['date'], $amount);
|
$pcAmount = $converter->convert($currency, $this->primaryCurrency, $journal['date'], $amount);
|
||||||
Log::debug(sprintf('Converted %s %s to %s %s', $journal['currency_code'], $amount, $this->primaryCurrency->code, $pcAmount));
|
Log::debug(sprintf('Converted %s %s to %s %s', $journal['currency_code'], $amount, $this->primaryCurrency->code, $pcAmount));
|
||||||
}
|
}
|
||||||
@@ -141,10 +141,10 @@ class CategoryController extends Controller
|
|||||||
'currency_symbol' => $currencySymbol,
|
'currency_symbol' => $currencySymbol,
|
||||||
'currency_decimal_places' => $currencyDecimalPlaces,
|
'currency_decimal_places' => $currencyDecimalPlaces,
|
||||||
'primary_currency_id' => (string)$this->primaryCurrency->id,
|
'primary_currency_id' => (string)$this->primaryCurrency->id,
|
||||||
'primary_currency_name' => (string)$this->primaryCurrency->name,
|
'primary_currency_name' => $this->primaryCurrency->name,
|
||||||
'primary_currency_code' => (string)$this->primaryCurrency->code,
|
'primary_currency_code' => $this->primaryCurrency->code,
|
||||||
'primary_currency_symbol' => (string)$this->primaryCurrency->symbol,
|
'primary_currency_symbol' => $this->primaryCurrency->symbol,
|
||||||
'primary_currency_decimal_places' => (int)$this->primaryCurrency->decimal_places,
|
'primary_currency_decimal_places' => $this->primaryCurrency->decimal_places,
|
||||||
'period' => null,
|
'period' => null,
|
||||||
'start_date' => $start->toAtomString(),
|
'start_date' => $start->toAtomString(),
|
||||||
'end_date' => $end->toAtomString(),
|
'end_date' => $end->toAtomString(),
|
||||||
|
@@ -27,7 +27,6 @@ namespace FireflyIII\Api\V1\Controllers;
|
|||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use Carbon\Exceptions\InvalidFormatException;
|
use Carbon\Exceptions\InvalidFormatException;
|
||||||
use FireflyIII\Exceptions\BadHttpHeaderException;
|
use FireflyIII\Exceptions\BadHttpHeaderException;
|
||||||
use FireflyIII\Models\Preference;
|
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Support\Facades\Amount;
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Facades\Steam;
|
use FireflyIII\Support\Facades\Steam;
|
||||||
@@ -68,6 +67,8 @@ abstract class Controller extends BaseController
|
|||||||
|
|
||||||
protected bool $convertToPrimary = false;
|
protected bool $convertToPrimary = false;
|
||||||
protected TransactionCurrency $primaryCurrency;
|
protected TransactionCurrency $primaryCurrency;
|
||||||
|
|
||||||
|
/** @deprecated use Request classes */
|
||||||
protected ParameterBag $parameters;
|
protected ParameterBag $parameters;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -99,7 +100,8 @@ abstract class Controller extends BaseController
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Method to grab all parameters from the URL.
|
* @deprecated use Request classes
|
||||||
|
* Method to grab all parameters from the URL
|
||||||
*/
|
*/
|
||||||
private function getParameters(): ParameterBag
|
private function getParameters(): ParameterBag
|
||||||
{
|
{
|
||||||
@@ -157,7 +159,6 @@ abstract class Controller extends BaseController
|
|||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
|
|
||||||
/** @var Preference $pageSize */
|
|
||||||
$pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data;
|
$pageSize = (int)app('preferences')->getForUser($user, 'listPageSize', 50)->data;
|
||||||
$bag->set($integer, $pageSize);
|
$bag->set($integer, $pageSize);
|
||||||
}
|
}
|
||||||
@@ -234,8 +235,6 @@ abstract class Controller extends BaseController
|
|||||||
$baseUrl = sprintf('%s/api/v1', request()->getSchemeAndHttpHost());
|
$baseUrl = sprintf('%s/api/v1', request()->getSchemeAndHttpHost());
|
||||||
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
$manager->setSerializer(new JsonApiSerializer($baseUrl));
|
||||||
|
|
||||||
// $transformer->collectMetaData(new Collection([$object]));
|
|
||||||
|
|
||||||
$resource = new Item($object, $transformer, $key);
|
$resource = new Item($object, $transformer, $key);
|
||||||
|
|
||||||
return $manager->createData($resource)->toArray();
|
return $manager->createData($resource)->toArray();
|
||||||
|
@@ -61,6 +61,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -100,6 +101,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -112,6 +114,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -124,6 +127,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -136,6 +140,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -148,6 +153,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -160,6 +166,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -172,6 +179,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*
|
*
|
||||||
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
|
||||||
@@ -184,6 +192,7 @@ class ExportController extends Controller
|
|||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
* @throws DatetimeException
|
||||||
* @throws FireflyException
|
* @throws FireflyException
|
||||||
*/
|
*/
|
||||||
public function transactions(ExportRequest $request): LaravelResponse
|
public function transactions(ExportRequest $request): LaravelResponse
|
||||||
|
@@ -76,7 +76,7 @@ class BudgetController extends Controller
|
|||||||
|
|
||||||
/** @var Budget $budget */
|
/** @var Budget $budget */
|
||||||
foreach ($budgets as $budget) {
|
foreach ($budgets as $budget) {
|
||||||
$expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection([$budget]));
|
$expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection()->push($budget));
|
||||||
|
|
||||||
/** @var array $expense */
|
/** @var array $expense */
|
||||||
foreach ($expenses as $expense) {
|
foreach ($expenses as $expense) {
|
||||||
|
@@ -76,7 +76,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
/** @var Category $category */
|
/** @var Category $category */
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
$expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection([$category]));
|
$expenses = $this->opsRepository->sumExpenses($start, $end, $assetAccounts, new Collection()->push($category));
|
||||||
|
|
||||||
/** @var array $expense */
|
/** @var array $expense */
|
||||||
foreach ($expenses as $expense) {
|
foreach ($expenses as $expense) {
|
||||||
|
@@ -76,7 +76,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
/** @var Category $category */
|
/** @var Category $category */
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
$expenses = $this->opsRepository->sumIncome($start, $end, $assetAccounts, new Collection([$category]));
|
$expenses = $this->opsRepository->sumIncome($start, $end, $assetAccounts, new Collection()->push($category));
|
||||||
|
|
||||||
/** @var array $expense */
|
/** @var array $expense */
|
||||||
foreach ($expenses as $expense) {
|
foreach ($expenses as $expense) {
|
||||||
|
@@ -76,7 +76,7 @@ class CategoryController extends Controller
|
|||||||
|
|
||||||
/** @var Category $category */
|
/** @var Category $category */
|
||||||
foreach ($categories as $category) {
|
foreach ($categories as $category) {
|
||||||
$expenses = $this->opsRepository->sumTransfers($start, $end, $assetAccounts, new Collection([$category]));
|
$expenses = $this->opsRepository->sumTransfers($start, $end, $assetAccounts, new Collection()->push($category));
|
||||||
|
|
||||||
/** @var array $expense */
|
/** @var array $expense */
|
||||||
foreach ($expenses as $expense) {
|
foreach ($expenses as $expense) {
|
||||||
|
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Account;
|
namespace FireflyIII\Api\V1\Controllers\Models\Account;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Api\V1\Requests\PaginationRequest;
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
@@ -70,25 +70,25 @@ class ListController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function attachments(Account $account, PaginationRequest $request): JsonResponse
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
|
||||||
public function attachments(Account $account): JsonResponse
|
|
||||||
{
|
{
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
$pageSize = $this->parameters->get('limit');
|
[
|
||||||
|
'limit' => $limit,
|
||||||
|
'offset' => $offset,
|
||||||
|
'page' => $page,
|
||||||
|
] = $request->attributes->all();
|
||||||
$collection = $this->repository->getAttachments($account);
|
$collection = $this->repository->getAttachments($account);
|
||||||
|
|
||||||
$count = $collection->count();
|
$count = $collection->count();
|
||||||
$attachments = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
$attachments = $collection->slice($offset, $limit);
|
||||||
|
|
||||||
// make paginator:
|
// make paginator:
|
||||||
$paginator = new LengthAwarePaginator($attachments, $count, $pageSize, $this->parameters->get('page'));
|
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
|
||||||
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]).$this->buildParams());
|
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]).$this->buildParams());
|
||||||
|
|
||||||
/** @var AttachmentTransformer $transformer */
|
/** @var AttachmentTransformer $transformer */
|
||||||
$transformer = app(AttachmentTransformer::class);
|
$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));
|
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
|
||||||
@@ -96,9 +96,6 @@ class ListController extends Controller
|
|||||||
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
|
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
|
||||||
public function piggyBanks(Account $account): JsonResponse
|
public function piggyBanks(Account $account): JsonResponse
|
||||||
{
|
{
|
||||||
// create some objects:
|
// create some objects:
|
||||||
@@ -135,8 +132,6 @@ class ListController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Show all transaction groups related to the account.
|
* Show all transaction groups related to the account.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Account $account): JsonResponse
|
public function transactions(Request $request, Account $account): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -152,7 +147,7 @@ class ListController extends Controller
|
|||||||
// use new group collector:
|
// use new group collector:
|
||||||
/** @var GroupCollectorInterface $collector */
|
/** @var GroupCollectorInterface $collector */
|
||||||
$collector = app(GroupCollectorInterface::class);
|
$collector = app(GroupCollectorInterface::class);
|
||||||
$collector->setUser($admin)->setAccounts(new Collection([$account]))
|
$collector->setUser($admin)->setAccounts(new Collection()->push($account))
|
||||||
->withAPIInformation()->setLimit($pageSize)->setPage($this->parameters->get('page'))->setTypes($types)
|
->withAPIInformation()->setLimit($pageSize)->setPage($this->parameters->get('page'))->setTypes($types)
|
||||||
;
|
;
|
||||||
|
|
||||||
|
@@ -26,7 +26,6 @@ namespace FireflyIII\Api\V1\Controllers\Models\Account;
|
|||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Models\Account\ShowRequest;
|
use FireflyIII\Api\V1\Requests\Models\Account\ShowRequest;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\AccountFilter;
|
use FireflyIII\Support\Http\Api\AccountFilter;
|
||||||
@@ -68,46 +67,49 @@ class ShowController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(ShowRequest $request): JsonResponse
|
public function index(ShowRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
$params = $request->getParameters();
|
[
|
||||||
$this->parameters->set('type', $params['type']);
|
'types' => $types,
|
||||||
|
'page' => $page,
|
||||||
// types to get, page size:
|
'limit' => $limit,
|
||||||
$types = $this->mapAccountTypes($params['type']);
|
'offset' => $offset,
|
||||||
|
'sort' => $sort,
|
||||||
|
'start' => $start,
|
||||||
|
'end' => $end,
|
||||||
|
'date' => $date,
|
||||||
|
]
|
||||||
|
= $request->attributes->all();
|
||||||
|
|
||||||
// get list of accounts. Count it and split it.
|
// get list of accounts. Count it and split it.
|
||||||
$this->repository->resetAccountOrder();
|
$this->repository->resetAccountOrder();
|
||||||
$collection = $this->repository->getAccountsByType($types, $params['sort']);
|
$collection = $this->repository->getAccountsByType($types, $sort);
|
||||||
$count = $collection->count();
|
$count = $collection->count();
|
||||||
|
|
||||||
// continue sort:
|
// continue sort:
|
||||||
// TODO if the user sorts on DB dependent field there must be no slice before enrichment, only after.
|
// TODO if the user sorts on DB dependent field there must be no slice before enrichment, only after.
|
||||||
// TODO still need to figure out how to do this easily.
|
// TODO still need to figure out how to do this easily.
|
||||||
$accounts = $collection->slice(($this->parameters->get('page') - 1) * $params['limit'], $params['limit']);
|
$accounts = $collection->slice($offset, $limit);
|
||||||
|
|
||||||
// enrich
|
// enrich
|
||||||
/** @var User $admin */
|
/** @var User $admin */
|
||||||
$admin = auth()->user();
|
$admin = auth()->user();
|
||||||
$enrichment = new AccountEnrichment();
|
$enrichment = new AccountEnrichment();
|
||||||
$enrichment->setSort($params['sort']);
|
$enrichment->setSort($sort);
|
||||||
$enrichment->setDate($this->parameters->get('date'));
|
$enrichment->setDate($date);
|
||||||
$enrichment->setStart($this->parameters->get('start'));
|
$enrichment->setStart($start);
|
||||||
$enrichment->setEnd($this->parameters->get('end'));
|
$enrichment->setEnd($end);
|
||||||
$enrichment->setUser($admin);
|
$enrichment->setUser($admin);
|
||||||
$accounts = $enrichment->enrich($accounts);
|
$accounts = $enrichment->enrich($accounts);
|
||||||
|
|
||||||
// make paginator:
|
// make paginator:
|
||||||
$paginator = new LengthAwarePaginator($accounts, $count, $params['limit'], $this->parameters->get('page'));
|
$paginator = new LengthAwarePaginator($accounts, $count, $limit, $page);
|
||||||
$paginator->setPath(route('api.v1.accounts.index').$this->buildParams());
|
$paginator->setPath(route('api.v1.accounts.index').$this->buildParams());
|
||||||
|
|
||||||
/** @var AccountTransformer $transformer */
|
/** @var AccountTransformer $transformer */
|
||||||
$transformer = app(AccountTransformer::class);
|
$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));
|
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
|
||||||
@@ -126,23 +128,25 @@ class ShowController extends Controller
|
|||||||
// get list of accounts. Count it and split it.
|
// get list of accounts. Count it and split it.
|
||||||
$this->repository->resetAccountOrder();
|
$this->repository->resetAccountOrder();
|
||||||
$account->refresh();
|
$account->refresh();
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
|
['start' => $start,
|
||||||
|
'end' => $end,
|
||||||
|
'date' => $date,] = $request->attributes->all();
|
||||||
|
|
||||||
// enrich
|
// enrich
|
||||||
/** @var User $admin */
|
/** @var User $admin */
|
||||||
$admin = auth()->user();
|
$admin = auth()->user();
|
||||||
$enrichment = new AccountEnrichment();
|
$enrichment = new AccountEnrichment();
|
||||||
$enrichment->setDate($this->parameters->get('date'));
|
$enrichment->setDate($date);
|
||||||
$enrichment->setStart($this->parameters->get('start'));
|
$enrichment->setStart($start);
|
||||||
$enrichment->setEnd($this->parameters->get('end'));
|
$enrichment->setEnd($end);
|
||||||
$enrichment->setUser($admin);
|
$enrichment->setUser($admin);
|
||||||
$account = $enrichment->enrichSingle($account);
|
$account = $enrichment->enrichSingle($account);
|
||||||
|
|
||||||
|
|
||||||
/** @var AccountTransformer $transformer */
|
/** @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);
|
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
|
||||||
}
|
}
|
||||||
|
@@ -119,8 +119,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/listAttachment
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/attachments/listAttachment
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\AvailableBudget;
|
namespace FireflyIII\Api\V1\Controllers\Models\AvailableBudget;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\AvailableBudget;
|
use FireflyIII\Models\AvailableBudget;
|
||||||
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\AvailableBudgetRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\AvailableBudgetEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\AvailableBudgetEnrichment;
|
||||||
@@ -67,8 +66,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/available_budgets/getAvailableBudget
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/available_budgets/getAvailableBudget
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Bill;
|
namespace FireflyIII\Api\V1\Controllers\Models\Bill;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||||
@@ -71,8 +70,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listAttachmentByBill
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listAttachmentByBill
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function attachments(Bill $bill): JsonResponse
|
public function attachments(Bill $bill): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -102,8 +99,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listRuleByBill
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listRuleByBill
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function rules(Bill $bill): JsonResponse
|
public function rules(Bill $bill): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -135,8 +130,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listTransactionByBill
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listTransactionByBill
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Bill $bill): JsonResponse
|
public function transactions(Request $request, Bill $bill): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Bill;
|
namespace FireflyIII\Api\V1\Controllers\Models\Bill;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
use FireflyIII\Repositories\Bill\BillRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\SubscriptionEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\SubscriptionEnrichment;
|
||||||
@@ -65,8 +64,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listBill
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/bills/listBill
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -26,7 +26,6 @@ namespace FireflyIII\Api\V1\Controllers\Models\Budget;
|
|||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Enums\TransactionTypeEnum;
|
use FireflyIII\Enums\TransactionTypeEnum;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
||||||
@@ -73,8 +72,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listAttachmentByBudget
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listAttachmentByBudget
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function attachments(Budget $budget): JsonResponse
|
public function attachments(Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -104,8 +101,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listBudgetLimitByBudget
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listBudgetLimitByBudget
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function budgetLimits(Budget $budget): JsonResponse
|
public function budgetLimits(Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -140,8 +135,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionByBudget
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionByBudget
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Budget $budget): JsonResponse
|
public function transactions(Request $request, Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -202,8 +195,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionWithoutBudget
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionWithoutBudget
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function withoutBudget(Request $request): JsonResponse
|
public function withoutBudget(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Budget;
|
namespace FireflyIII\Api\V1\Controllers\Models\Budget;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetLimitRepositoryInterface;
|
||||||
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
use FireflyIII\Repositories\Budget\BudgetRepositoryInterface;
|
||||||
@@ -69,8 +68,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listBudget
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listBudget
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -67,7 +67,9 @@ class StoreController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function store(StoreRequest $request): JsonResponse
|
public function store(StoreRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$budget = $this->repository->store($request->getAll());
|
$data = $request->getAll();
|
||||||
|
$data['fire_webhooks'] ??= true;
|
||||||
|
$budget = $this->repository->store($data);
|
||||||
$budget->refresh();
|
$budget->refresh();
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
|
|
||||||
|
@@ -57,15 +57,10 @@ class UpdateController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* This endpoint is documented at:
|
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/updateBudget
|
|
||||||
*
|
|
||||||
* Update a budget.
|
|
||||||
*/
|
|
||||||
public function update(UpdateRequest $request, Budget $budget): JsonResponse
|
public function update(UpdateRequest $request, Budget $budget): JsonResponse
|
||||||
{
|
{
|
||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
|
$data['fire_webhooks'] ??= true;
|
||||||
$budget = $this->repository->update($budget, $data);
|
$budget = $this->repository->update($budget, $data);
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
|
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\BudgetLimit;
|
namespace FireflyIII\Api\V1\Controllers\Models\BudgetLimit;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Models\BudgetLimit;
|
use FireflyIII\Models\BudgetLimit;
|
||||||
@@ -49,8 +48,6 @@ class ListController extends Controller
|
|||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionByBudgetLimit
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/budgets/listTransactionByBudgetLimit
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse
|
public function transactions(Request $request, Budget $budget, BudgetLimit $budgetLimit): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -70,6 +70,7 @@ class StoreController extends Controller
|
|||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
$data['start_date'] = $data['start'];
|
$data['start_date'] = $data['start'];
|
||||||
$data['end_date'] = $data['end'];
|
$data['end_date'] = $data['end'];
|
||||||
|
$data['fire_webhooks'] ??= true;
|
||||||
$data['budget_id'] = $budget->id;
|
$data['budget_id'] = $budget->id;
|
||||||
|
|
||||||
$budgetLimit = $this->blRepository->store($data);
|
$budgetLimit = $this->blRepository->store($data);
|
||||||
|
@@ -77,6 +77,7 @@ class UpdateController extends Controller
|
|||||||
throw new FireflyException('20028: The budget limit does not belong to the budget.');
|
throw new FireflyException('20028: The budget limit does not belong to the budget.');
|
||||||
}
|
}
|
||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
|
$data['fire_webhooks'] ??= true;
|
||||||
$data['budget_id'] = $budget->id;
|
$data['budget_id'] = $budget->id;
|
||||||
$budgetLimit = $this->blRepository->update($budgetLimit, $data);
|
$budgetLimit = $this->blRepository->update($budgetLimit, $data);
|
||||||
$manager = $this->getManager();
|
$manager = $this->getManager();
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Category;
|
namespace FireflyIII\Api\V1\Controllers\Models\Category;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Category;
|
use FireflyIII\Models\Category;
|
||||||
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
||||||
@@ -68,8 +67,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listAttachmentByCategory
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listAttachmentByCategory
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function attachments(Category $category): JsonResponse
|
public function attachments(Category $category): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -99,8 +96,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listTransactionByCategory
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listTransactionByCategory
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Category $category): JsonResponse
|
public function transactions(Request $request, Category $category): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Category;
|
namespace FireflyIII\Api\V1\Controllers\Models\Category;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Category;
|
use FireflyIII\Models\Category;
|
||||||
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
use FireflyIII\Repositories\Category\CategoryRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\CategoryEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\CategoryEnrichment;
|
||||||
@@ -65,8 +64,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listCategory
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/categories/listCategory
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -72,7 +72,7 @@ class DestroyController extends Controller
|
|||||||
public function destroySingleByDate(TransactionCurrency $from, TransactionCurrency $to, Carbon $date): JsonResponse
|
public function destroySingleByDate(TransactionCurrency $from, TransactionCurrency $to, Carbon $date): JsonResponse
|
||||||
{
|
{
|
||||||
$exchangeRate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
$exchangeRate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
if (null !== $exchangeRate) {
|
if ($exchangeRate instanceof CurrencyExchangeRate) {
|
||||||
$this->repository->deleteRate($exchangeRate);
|
$this->repository->deleteRate($exchangeRate);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -95,7 +95,7 @@ class ShowController extends Controller
|
|||||||
$transformer->setParameters($this->parameters);
|
$transformer->setParameters($this->parameters);
|
||||||
|
|
||||||
$exchangeRate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
$exchangeRate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
if (null === $exchangeRate) {
|
if (!$exchangeRate instanceof CurrencyExchangeRate) {
|
||||||
throw new NotFoundHttpException();
|
throw new NotFoundHttpException();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -33,6 +33,7 @@ use FireflyIII\Enums\UserRoleEnum;
|
|||||||
use FireflyIII\Models\CurrencyExchangeRate;
|
use FireflyIII\Models\CurrencyExchangeRate;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Repositories\ExchangeRate\ExchangeRateRepositoryInterface;
|
use FireflyIII\Repositories\ExchangeRate\ExchangeRateRepositoryInterface;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\Transformers\ExchangeRateTransformer;
|
use FireflyIII\Transformers\ExchangeRateTransformer;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@@ -69,7 +70,7 @@ class StoreController extends Controller
|
|||||||
foreach ($data as $date => $rate) {
|
foreach ($data as $date => $rate) {
|
||||||
$date = Carbon::createFromFormat('Y-m-d', $date);
|
$date = Carbon::createFromFormat('Y-m-d', $date);
|
||||||
$existing = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
$existing = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
if (null !== $existing) {
|
if ($existing instanceof CurrencyExchangeRate) {
|
||||||
// update existing rate.
|
// update existing rate.
|
||||||
$existing = $this->repository->updateExchangeRate($existing, $rate);
|
$existing = $this->repository->updateExchangeRate($existing, $rate);
|
||||||
$collection->push($existing);
|
$collection->push($existing);
|
||||||
@@ -98,12 +99,9 @@ class StoreController extends Controller
|
|||||||
$from = $request->getFromCurrency();
|
$from = $request->getFromCurrency();
|
||||||
$collection = new Collection();
|
$collection = new Collection();
|
||||||
foreach ($data['rates'] as $key => $rate) {
|
foreach ($data['rates'] as $key => $rate) {
|
||||||
$to = TransactionCurrency::where('code', $key)->first();
|
$to = Amount::getTransactionCurrencyByCode($key);
|
||||||
if (null === $to) {
|
|
||||||
continue; // should not happen.
|
|
||||||
}
|
|
||||||
$existing = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
$existing = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
if (null !== $existing) {
|
if ($existing instanceof CurrencyExchangeRate) {
|
||||||
// update existing rate.
|
// update existing rate.
|
||||||
$existing = $this->repository->updateExchangeRate($existing, $rate);
|
$existing = $this->repository->updateExchangeRate($existing, $rate);
|
||||||
$collection->push($existing);
|
$collection->push($existing);
|
||||||
|
@@ -74,7 +74,7 @@ class UpdateController extends Controller
|
|||||||
public function updateByDate(UpdateRequest $request, TransactionCurrency $from, TransactionCurrency $to, Carbon $date): JsonResponse
|
public function updateByDate(UpdateRequest $request, TransactionCurrency $from, TransactionCurrency $to, Carbon $date): JsonResponse
|
||||||
{
|
{
|
||||||
$exchangeRate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
$exchangeRate = $this->repository->getSpecificRateOnDate($from, $to, $date);
|
||||||
if (null === $exchangeRate) {
|
if (!$exchangeRate instanceof CurrencyExchangeRate) {
|
||||||
throw new NotFoundHttpException();
|
throw new NotFoundHttpException();
|
||||||
}
|
}
|
||||||
$date = $request->getDate();
|
$date = $request->getDate();
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\ObjectGroup;
|
namespace FireflyIII\Api\V1\Controllers\Models\ObjectGroup;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\ObjectGroup;
|
use FireflyIII\Models\ObjectGroup;
|
||||||
use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface;
|
use FireflyIII\Repositories\ObjectGroup\ObjectGroupRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\PiggyBankEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\PiggyBankEnrichment;
|
||||||
@@ -68,8 +67,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/listBillByObjectGroup
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/listBillByObjectGroup
|
||||||
*
|
*
|
||||||
* List all bills in this object group
|
* List all bills in this object group
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function bills(ObjectGroup $objectGroup): JsonResponse
|
public function bills(ObjectGroup $objectGroup): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -109,8 +106,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/listPiggyBankByObjectGroup
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/object_groups/listPiggyBankByObjectGroup
|
||||||
*
|
*
|
||||||
* List all piggies under the object group.
|
* List all piggies under the object group.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function piggyBanks(ObjectGroup $objectGroup): JsonResponse
|
public function piggyBanks(ObjectGroup $objectGroup): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\PiggyBank;
|
namespace FireflyIII\Api\V1\Controllers\Models\PiggyBank;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\AccountEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\AccountEnrichment;
|
||||||
@@ -67,8 +66,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAccountByPiggyBank
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAccountByPiggyBank
|
||||||
*
|
*
|
||||||
* List single resource.
|
* List single resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function accounts(PiggyBank $piggyBank): JsonResponse
|
public function accounts(PiggyBank $piggyBank): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -105,8 +102,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAttachmentByPiggyBank
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listAttachmentByPiggyBank
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function attachments(PiggyBank $piggyBank): JsonResponse
|
public function attachments(PiggyBank $piggyBank): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -136,8 +131,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listEventByPiggyBank
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listEventByPiggyBank
|
||||||
*
|
*
|
||||||
* List single resource.
|
* List single resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function piggyBankEvents(PiggyBank $piggyBank): JsonResponse
|
public function piggyBankEvents(PiggyBank $piggyBank): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\PiggyBank;
|
namespace FireflyIII\Api\V1\Controllers\Models\PiggyBank;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\PiggyBank;
|
use FireflyIII\Models\PiggyBank;
|
||||||
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
use FireflyIII\Repositories\PiggyBank\PiggyBankRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\PiggyBankEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\PiggyBankEnrichment;
|
||||||
@@ -65,8 +64,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listPiggyBank
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/piggy_banks/listPiggyBank
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -68,10 +68,6 @@ class UpdateController extends Controller
|
|||||||
$data = $request->getAll();
|
$data = $request->getAll();
|
||||||
$piggyBank = $this->repository->update($piggyBank, $data);
|
$piggyBank = $this->repository->update($piggyBank, $data);
|
||||||
|
|
||||||
if (array_key_exists('current_amount', $data) && '' !== $data['current_amount']) {
|
|
||||||
$this->repository->setCurrentAmount($piggyBank, $data['current_amount']);
|
|
||||||
}
|
|
||||||
|
|
||||||
// enrich
|
// enrich
|
||||||
/** @var User $admin */
|
/** @var User $admin */
|
||||||
$admin = auth()->user();
|
$admin = auth()->user();
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Recurrence;
|
namespace FireflyIII\Api\V1\Controllers\Models\Recurrence;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Recurrence;
|
use FireflyIII\Models\Recurrence;
|
||||||
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
|
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
|
||||||
@@ -68,8 +67,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/listTransactionByRecurrence
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/listTransactionByRecurrence
|
||||||
*
|
*
|
||||||
* Show transactions for this recurrence.
|
* Show transactions for this recurrence.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Recurrence $recurrence): JsonResponse
|
public function transactions(Request $request, Recurrence $recurrence): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Recurrence;
|
namespace FireflyIII\Api\V1\Controllers\Models\Recurrence;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Recurrence;
|
use FireflyIII\Models\Recurrence;
|
||||||
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
|
use FireflyIII\Repositories\Recurring\RecurringRepositoryInterface;
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\RecurringEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\RecurringEnrichment;
|
||||||
@@ -65,8 +64,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/listRecurrence
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/recurrences/listRecurrence
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -87,9 +87,7 @@ class TriggerController extends Controller
|
|||||||
|
|
||||||
// enrich groups and return them:
|
// enrich groups and return them:
|
||||||
|
|
||||||
if (0 === $groups->count()) {
|
$paginator = new LengthAwarePaginator(new Collection(), 0, 1);
|
||||||
$paginator = new LengthAwarePaginator(new Collection(), 0, 1);
|
|
||||||
}
|
|
||||||
if ($groups->count() > 0) {
|
if ($groups->count() > 0) {
|
||||||
/** @var User $admin */
|
/** @var User $admin */
|
||||||
$admin = auth()->user();
|
$admin = auth()->user();
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Rule;
|
namespace FireflyIII\Api\V1\Controllers\Models\Rule;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Rule;
|
use FireflyIII\Models\Rule;
|
||||||
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
use FireflyIII\Repositories\Rule\RuleRepositoryInterface;
|
||||||
use FireflyIII\Transformers\RuleTransformer;
|
use FireflyIII\Transformers\RuleTransformer;
|
||||||
@@ -67,8 +66,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/listRule
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rules/listRule
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -75,7 +75,7 @@ class TriggerController extends Controller
|
|||||||
|
|
||||||
/** @var RuleEngineInterface $ruleEngine */
|
/** @var RuleEngineInterface $ruleEngine */
|
||||||
$ruleEngine = app(RuleEngineInterface::class);
|
$ruleEngine = app(RuleEngineInterface::class);
|
||||||
$ruleEngine->setRules(new Collection([$rule]));
|
$ruleEngine->setRules(new Collection()->push($rule));
|
||||||
|
|
||||||
// overrule the rule(s) if necessary.
|
// overrule the rule(s) if necessary.
|
||||||
if (array_key_exists('start', $parameters) && null !== $parameters['start']) {
|
if (array_key_exists('start', $parameters) && null !== $parameters['start']) {
|
||||||
@@ -129,7 +129,7 @@ class TriggerController extends Controller
|
|||||||
|
|
||||||
/** @var RuleEngineInterface $ruleEngine */
|
/** @var RuleEngineInterface $ruleEngine */
|
||||||
$ruleEngine = app(RuleEngineInterface::class);
|
$ruleEngine = app(RuleEngineInterface::class);
|
||||||
$ruleEngine->setRules(new Collection([$rule]));
|
$ruleEngine->setRules(new Collection()->push($rule));
|
||||||
|
|
||||||
// overrule the rule(s) if necessary.
|
// overrule the rule(s) if necessary.
|
||||||
if (array_key_exists('start', $parameters) && null !== $parameters['start']) {
|
if (array_key_exists('start', $parameters) && null !== $parameters['start']) {
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\RuleGroup;
|
namespace FireflyIII\Api\V1\Controllers\Models\RuleGroup;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\RuleGroup;
|
use FireflyIII\Models\RuleGroup;
|
||||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||||
use FireflyIII\Transformers\RuleTransformer;
|
use FireflyIII\Transformers\RuleTransformer;
|
||||||
@@ -64,8 +63,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/listRuleByGroup
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/listRuleByGroup
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function rules(RuleGroup $group): JsonResponse
|
public function rules(RuleGroup $group): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\RuleGroup;
|
namespace FireflyIII\Api\V1\Controllers\Models\RuleGroup;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\RuleGroup;
|
use FireflyIII\Models\RuleGroup;
|
||||||
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
|
||||||
use FireflyIII\Transformers\RuleGroupTransformer;
|
use FireflyIII\Transformers\RuleGroupTransformer;
|
||||||
@@ -66,8 +65,6 @@ class ShowController extends Controller
|
|||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/listRuleGroup
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/rule_groups/listRuleGroup
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Tag;
|
namespace FireflyIII\Api\V1\Controllers\Models\Tag;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Tag;
|
use FireflyIII\Models\Tag;
|
||||||
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
|
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
|
||||||
@@ -71,8 +70,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listAttachmentByTag
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listAttachmentByTag
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function attachments(Tag $tag): JsonResponse
|
public function attachments(Tag $tag): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -102,8 +99,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listTransactionByTag
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listTransactionByTag
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, Tag $tag): JsonResponse
|
public function transactions(Request $request, Tag $tag): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Tag;
|
namespace FireflyIII\Api\V1\Controllers\Models\Tag;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\Tag;
|
use FireflyIII\Models\Tag;
|
||||||
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
|
use FireflyIII\Repositories\Tag\TagRepositoryInterface;
|
||||||
use FireflyIII\Transformers\TagTransformer;
|
use FireflyIII\Transformers\TagTransformer;
|
||||||
@@ -67,8 +66,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listTag
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/tags/listTag
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Transaction;
|
namespace FireflyIII\Api\V1\Controllers\Models\Transaction;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\TransactionGroup;
|
use FireflyIII\Models\TransactionGroup;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\Journal\JournalAPIRepositoryInterface;
|
use FireflyIII\Repositories\Journal\JournalAPIRepositoryInterface;
|
||||||
@@ -69,8 +68,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listAttachmentByTransaction
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listAttachmentByTransaction
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function attachments(TransactionGroup $transactionGroup): JsonResponse
|
public function attachments(TransactionGroup $transactionGroup): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -101,8 +98,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listEventByTransaction
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listEventByTransaction
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function piggyBankEvents(TransactionGroup $transactionGroup): JsonResponse
|
public function piggyBankEvents(TransactionGroup $transactionGroup): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -144,8 +139,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listLinksByJournal
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listLinksByJournal
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactionLinks(TransactionJournal $transactionJournal): JsonResponse
|
public function transactionLinks(TransactionJournal $transactionJournal): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\Transaction;
|
namespace FireflyIII\Api\V1\Controllers\Models\Transaction;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\TransactionGroup;
|
use FireflyIII\Models\TransactionGroup;
|
||||||
use FireflyIII\Models\TransactionJournal;
|
use FireflyIII\Models\TransactionJournal;
|
||||||
@@ -52,8 +51,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listTransaction
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/transactions/listTransaction
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(Request $request): JsonResponse
|
public function index(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
@@ -32,6 +31,7 @@ use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
|||||||
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
use FireflyIII\Repositories\User\UserRepositoryInterface;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
@@ -71,8 +70,6 @@ class ListController extends Controller
|
|||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listAccountByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listAccountByCurrency
|
||||||
* Display a list of accounts.
|
* Display a list of accounts.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function accounts(Request $request, TransactionCurrency $currency): JsonResponse
|
public function accounts(Request $request, TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -103,11 +100,18 @@ class ListController extends Controller
|
|||||||
$count = $collection->count();
|
$count = $collection->count();
|
||||||
$accounts = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
$accounts = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
||||||
|
|
||||||
|
// #11007 go to the end of the previous day.
|
||||||
|
$this->parameters->set('start', $this->parameters->get('start')?->subSecond());
|
||||||
|
// #11018 also end of the day.
|
||||||
|
$this->parameters->set('end', $this->parameters->get('end')?->endOfDay());
|
||||||
|
|
||||||
// enrich
|
// enrich
|
||||||
/** @var User $admin */
|
/** @var User $admin */
|
||||||
$admin = auth()->user();
|
$admin = auth()->user();
|
||||||
$enrichment = new AccountEnrichment();
|
$enrichment = new AccountEnrichment();
|
||||||
$enrichment->setDate($this->parameters->get('date'));
|
$enrichment->setDate($this->parameters->get('date'));
|
||||||
|
$enrichment->setStart($this->parameters->get('start'));
|
||||||
|
$enrichment->setEnd($this->parameters->get('end'));
|
||||||
$enrichment->setUser($admin);
|
$enrichment->setUser($admin);
|
||||||
$accounts = $enrichment->enrich($accounts);
|
$accounts = $enrichment->enrich($accounts);
|
||||||
|
|
||||||
@@ -129,8 +133,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listAvailableBudgetByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listAvailableBudgetByCurrency
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function availableBudgets(TransactionCurrency $currency): JsonResponse
|
public function availableBudgets(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -164,8 +166,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listBillByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listBillByCurrency
|
||||||
*
|
*
|
||||||
* List all bills
|
* List all bills
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function bills(TransactionCurrency $currency): JsonResponse
|
public function bills(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -211,8 +211,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listBudgetLimitByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listBudgetLimitByCurrency
|
||||||
*
|
*
|
||||||
* List all budget limits
|
* List all budget limits
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function budgetLimits(TransactionCurrency $currency): JsonResponse
|
public function budgetLimits(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -249,8 +247,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listRecurrenceByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listRecurrenceByCurrency
|
||||||
*
|
*
|
||||||
* List all recurring transactions.
|
* List all recurring transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function recurrences(TransactionCurrency $currency): JsonResponse
|
public function recurrences(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -302,8 +298,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listRuleByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listRuleByCurrency
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function rules(TransactionCurrency $currency): JsonResponse
|
public function rules(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -347,8 +341,6 @@ class ListController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listTransactionByCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listTransactionByCurrency
|
||||||
*
|
*
|
||||||
* Show all transactions.
|
* Show all transactions.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, TransactionCurrency $currency): JsonResponse
|
public function transactions(Request $request, TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\AccountFilter;
|
use FireflyIII\Support\Http\Api\AccountFilter;
|
||||||
@@ -69,8 +68,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/listCurrency
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -99,8 +96,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/getCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/getCurrency
|
||||||
*
|
*
|
||||||
* Show a currency.
|
* Show a currency.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function show(TransactionCurrency $currency): JsonResponse
|
public function show(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -123,8 +118,6 @@ class ShowController extends Controller
|
|||||||
|
|
||||||
/**
|
/**
|
||||||
* Show a currency.
|
* Show a currency.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function showPrimary(): JsonResponse
|
public function showPrimary(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -26,7 +26,6 @@ namespace FireflyIII\Api\V1\Controllers\Models\TransactionCurrency;
|
|||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Models\TransactionCurrency\StoreRequest;
|
use FireflyIII\Api\V1\Requests\Models\TransactionCurrency\StoreRequest;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
use FireflyIII\Repositories\Currency\CurrencyRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\AccountFilter;
|
use FireflyIII\Support\Http\Api\AccountFilter;
|
||||||
use FireflyIII\Support\Http\Api\TransactionFilter;
|
use FireflyIII\Support\Http\Api\TransactionFilter;
|
||||||
@@ -66,8 +65,6 @@ class StoreController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/storeCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/storeCurrency
|
||||||
*
|
*
|
||||||
* Store new currency.
|
* Store new currency.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function store(StoreRequest $request): JsonResponse
|
public function store(StoreRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -98,9 +98,6 @@ class UpdateController extends Controller
|
|||||||
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
|
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
|
||||||
public function makePrimary(TransactionCurrency $currency): JsonResponse
|
public function makePrimary(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
@@ -127,8 +124,6 @@ class UpdateController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/enableCurrency
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/currencies/enableCurrency
|
||||||
*
|
*
|
||||||
* Enable a currency.
|
* Enable a currency.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function enable(TransactionCurrency $currency): JsonResponse
|
public function enable(TransactionCurrency $currency): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLink;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLink;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\TransactionJournalLink;
|
use FireflyIII\Models\TransactionJournalLink;
|
||||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||||
use FireflyIII\Transformers\TransactionLinkTransformer;
|
use FireflyIII\Transformers\TransactionLinkTransformer;
|
||||||
@@ -69,8 +68,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/links/listTransactionLink
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/links/listTransactionLink
|
||||||
*
|
*
|
||||||
* List all transaction links there are.
|
* List all transaction links there are.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(Request $request): JsonResponse
|
public function index(Request $request): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -24,10 +24,10 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLink;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLink;
|
||||||
|
|
||||||
use FireflyIII\Models\TransactionJournal;
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Models\TransactionLink\StoreRequest;
|
use FireflyIII\Api\V1\Requests\Models\TransactionLink\StoreRequest;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
|
use FireflyIII\Models\TransactionJournal;
|
||||||
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
|
||||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\TransactionFilter;
|
use FireflyIII\Support\Http\Api\TransactionFilter;
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
use FireflyIII\Models\LinkType;
|
use FireflyIII\Models\LinkType;
|
||||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||||
@@ -68,8 +67,6 @@ class ListController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/links/listTransactionByLinkType
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/links/listTransactionByLinkType
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function transactions(Request $request, LinkType $linkType): JsonResponse
|
public function transactions(Request $request, LinkType $linkType): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Models\LinkType;
|
use FireflyIII\Models\LinkType;
|
||||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||||
use FireflyIII\Support\Http\Api\TransactionFilter;
|
use FireflyIII\Support\Http\Api\TransactionFilter;
|
||||||
@@ -67,8 +66,6 @@ class ShowController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/links/listLinkType
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/links/listLinkType
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Models\TransactionLinkType\StoreRequest;
|
use FireflyIII\Api\V1\Requests\Models\TransactionLinkType\StoreRequest;
|
||||||
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
use FireflyIII\Repositories\LinkType\LinkTypeRepositoryInterface;
|
||||||
@@ -33,6 +32,7 @@ use FireflyIII\Support\Http\Api\TransactionFilter;
|
|||||||
use FireflyIII\Transformers\LinkTypeTransformer;
|
use FireflyIII\Transformers\LinkTypeTransformer;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
use League\Fractal\Resource\Item;
|
use League\Fractal\Resource\Item;
|
||||||
|
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
namespace FireflyIII\Api\V1\Controllers\Models\TransactionLinkType;
|
||||||
|
|
||||||
use Illuminate\Support\Facades\Validator;
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Models\TransactionLinkType\UpdateRequest;
|
use FireflyIII\Api\V1\Requests\Models\TransactionLinkType\UpdateRequest;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
@@ -35,6 +34,7 @@ use FireflyIII\Support\Http\Api\TransactionFilter;
|
|||||||
use FireflyIII\Transformers\LinkTypeTransformer;
|
use FireflyIII\Transformers\LinkTypeTransformer;
|
||||||
use FireflyIII\User;
|
use FireflyIII\User;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
|
use Illuminate\Support\Facades\Validator;
|
||||||
use Illuminate\Validation\ValidationException;
|
use Illuminate\Validation\ValidationException;
|
||||||
use League\Fractal\Resource\Item;
|
use League\Fractal\Resource\Item;
|
||||||
|
|
||||||
|
@@ -25,7 +25,7 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Models\UserGroup;
|
namespace FireflyIII\Api\V1\Controllers\Models\UserGroup;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Data\DateRequest;
|
use FireflyIII\Api\V1\Requests\PaginationRequest;
|
||||||
use FireflyIII\Repositories\UserGroup\UserGroupRepositoryInterface;
|
use FireflyIII\Repositories\UserGroup\UserGroupRepositoryInterface;
|
||||||
use FireflyIII\Transformers\UserGroupTransformer;
|
use FireflyIII\Transformers\UserGroupTransformer;
|
||||||
use Illuminate\Http\JsonResponse;
|
use Illuminate\Http\JsonResponse;
|
||||||
@@ -52,17 +52,19 @@ class IndexController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
public function index(DateRequest $request): JsonResponse
|
public function index(PaginationRequest $request): JsonResponse
|
||||||
{
|
{
|
||||||
$administrations = $this->repository->get();
|
$administrations = $this->repository->get();
|
||||||
$pageSize = $this->parameters->get('limit');
|
[
|
||||||
|
'page' => $page,
|
||||||
|
'limit' => $limit,
|
||||||
|
'offset' => $offset,
|
||||||
|
] = $request->attributes->all();
|
||||||
$count = $administrations->count();
|
$count = $administrations->count();
|
||||||
$administrations = $administrations->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
|
$administrations = $administrations->slice($offset, $limit);
|
||||||
$paginator = new LengthAwarePaginator($administrations, $count, $pageSize, $this->parameters->get('page'));
|
$paginator = new LengthAwarePaginator($administrations, $count, $limit, $page);
|
||||||
$transformer = new UserGroupTransformer();
|
$transformer = new UserGroupTransformer();
|
||||||
|
|
||||||
$transformer->setParameters($this->parameters); // give params to transformer
|
|
||||||
|
|
||||||
return response()
|
return response()
|
||||||
->json($this->jsonApiList(self::RESOURCE_KEY, $paginator, $transformer))
|
->json($this->jsonApiList(self::RESOURCE_KEY, $paginator, $transformer))
|
||||||
->header('Content-Type', self::CONTENT_TYPE)
|
->header('Content-Type', self::CONTENT_TYPE)
|
||||||
|
@@ -25,7 +25,6 @@ declare(strict_types=1);
|
|||||||
namespace FireflyIII\Api\V1\Controllers\Search;
|
namespace FireflyIII\Api\V1\Controllers\Search;
|
||||||
|
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Support\JsonApi\Enrichments\TransactionGroupEnrichment;
|
use FireflyIII\Support\JsonApi\Enrichments\TransactionGroupEnrichment;
|
||||||
use FireflyIII\Support\Search\SearchInterface;
|
use FireflyIII\Support\Search\SearchInterface;
|
||||||
use FireflyIII\Transformers\TransactionGroupTransformer;
|
use FireflyIII\Transformers\TransactionGroupTransformer;
|
||||||
@@ -42,8 +41,6 @@ class TransactionController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/search/searchTransactions
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/search/searchTransactions
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function search(Request $request, SearchInterface $searcher): JsonResponse
|
public function search(Request $request, SearchInterface $searcher): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -24,10 +24,10 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Controllers\Summary;
|
namespace FireflyIII\Api\V1\Controllers\Summary;
|
||||||
|
|
||||||
use Exception;
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use Exception;
|
||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Api\V1\Requests\Data\DateRequest;
|
use FireflyIII\Api\V1\Requests\Summary\BasicRequest;
|
||||||
use FireflyIII\Enums\AccountTypeEnum;
|
use FireflyIII\Enums\AccountTypeEnum;
|
||||||
use FireflyIII\Enums\TransactionTypeEnum;
|
use FireflyIII\Enums\TransactionTypeEnum;
|
||||||
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
|
||||||
@@ -88,34 +88,25 @@ class BasicController extends Controller
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
public function basic(BasicRequest $request): JsonResponse
|
||||||
* This endpoint is documented at:
|
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/summary/getBasicSummary
|
|
||||||
*
|
|
||||||
* @throws Exception
|
|
||||||
*/
|
|
||||||
public function basic(DateRequest $request): JsonResponse
|
|
||||||
{
|
{
|
||||||
// parameters for boxes:
|
// parameters for boxes:
|
||||||
$dates = $request->getAll();
|
['start' => $start, 'end' => $end, 'code' => $code] = $request->attributes->all();
|
||||||
$start = $dates['start'];
|
|
||||||
$end = $dates['end'];
|
|
||||||
$code = $request->get('currency_code');
|
|
||||||
// balance information:
|
// balance information:
|
||||||
$balanceData = $this->getBalanceInformation($start, $end);
|
$balanceData = $this->getBalanceInformation($start, $end);
|
||||||
$billData = $this->getSubscriptionInformation($start, $end);
|
$billData = $this->getSubscriptionInformation($start, $end);
|
||||||
$spentData = $this->getLeftToSpendInfo($start, $end);
|
$spentData = $this->getLeftToSpendInfo($start, $end);
|
||||||
$netWorthData = $this->getNetWorthInfo($end);
|
$netWorthData = $this->getNetWorthInfo($end);
|
||||||
// $balanceData = [];
|
// $balanceData = [];
|
||||||
// $billData = [];
|
// $billData = [];
|
||||||
// $spentData = [];
|
// $spentData = [];
|
||||||
// $netWorthData = [];
|
// $netWorthData = [];
|
||||||
$total = array_merge($balanceData, $billData, $spentData, $netWorthData);
|
$total = array_merge($balanceData, $billData, $spentData, $netWorthData);
|
||||||
|
|
||||||
// give new keys
|
// give new keys
|
||||||
$return = [];
|
$return = [];
|
||||||
foreach ($total as $entry) {
|
foreach ($total as $entry) {
|
||||||
if (null === $code || ($code === $entry['currency_code'])) {
|
if ('' === $code || ($code === $entry['currency_code'])) {
|
||||||
$return[$entry['key']] = $entry;
|
$return[$entry['key']] = $entry;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
@@ -589,8 +580,6 @@ class BasicController extends Controller
|
|||||||
|
|
||||||
private function getNetWorthInfo(Carbon $end): array
|
private function getNetWorthInfo(Carbon $end): array
|
||||||
{
|
{
|
||||||
$end->endOfDay();
|
|
||||||
|
|
||||||
/** @var User $user */
|
/** @var User $user */
|
||||||
$user = auth()->user();
|
$user = auth()->user();
|
||||||
Log::debug(sprintf('getNetWorthInfo up until "%s".', $end->format('Y-m-d H:i:s')));
|
Log::debug(sprintf('getNetWorthInfo up until "%s".', $end->format('Y-m-d H:i:s')));
|
||||||
|
@@ -133,7 +133,6 @@ class ConfigurationController extends Controller
|
|||||||
*/
|
*/
|
||||||
public function show(string $configKey): JsonResponse
|
public function show(string $configKey): JsonResponse
|
||||||
{
|
{
|
||||||
$data = [];
|
|
||||||
$dynamic = $this->getDynamicConfiguration();
|
$dynamic = $this->getDynamicConfiguration();
|
||||||
$shortKey = str_replace('configuration.', '', $configKey);
|
$shortKey = str_replace('configuration.', '', $configKey);
|
||||||
if (str_starts_with($configKey, 'configuration.')) {
|
if (str_starts_with($configKey, 'configuration.')) {
|
||||||
|
@@ -90,8 +90,6 @@ class UserController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/users/listUser
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/users/listUser
|
||||||
*
|
*
|
||||||
* Display a listing of the resource.
|
* Display a listing of the resource.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -49,8 +49,6 @@ class PreferencesController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/preferences/listPreference
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/preferences/listPreference
|
||||||
*
|
*
|
||||||
* List all of them.
|
* List all of them.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -62,8 +62,6 @@ class MessageController extends Controller
|
|||||||
/**
|
/**
|
||||||
* This endpoint is documented at:
|
* This endpoint is documented at:
|
||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/webhooks/getWebhookMessages
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/webhooks/getWebhookMessages
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(Webhook $webhook): JsonResponse
|
public function index(Webhook $webhook): JsonResponse
|
||||||
{
|
{
|
||||||
|
@@ -27,7 +27,6 @@ namespace FireflyIII\Api\V1\Controllers\Webhook;
|
|||||||
use FireflyIII\Api\V1\Controllers\Controller;
|
use FireflyIII\Api\V1\Controllers\Controller;
|
||||||
use FireflyIII\Enums\WebhookTrigger;
|
use FireflyIII\Enums\WebhookTrigger;
|
||||||
use FireflyIII\Events\RequestedSendWebhookMessages;
|
use FireflyIII\Events\RequestedSendWebhookMessages;
|
||||||
use FireflyIII\Exceptions\FireflyException;
|
|
||||||
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
|
use FireflyIII\Generator\Webhook\MessageGeneratorInterface;
|
||||||
use FireflyIII\Models\TransactionGroup;
|
use FireflyIII\Models\TransactionGroup;
|
||||||
use FireflyIII\Models\Webhook;
|
use FireflyIII\Models\Webhook;
|
||||||
@@ -70,8 +69,6 @@ class ShowController extends Controller
|
|||||||
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/webhooks/listWebhook
|
* https://api-docs.firefly-iii.org/?urls.primaryName=2.0.0%20(v1)#/webhooks/listWebhook
|
||||||
*
|
*
|
||||||
* Display a listing of the webhooks of the user.
|
* Display a listing of the webhooks of the user.
|
||||||
*
|
|
||||||
* @throws FireflyException
|
|
||||||
*/
|
*/
|
||||||
public function index(): JsonResponse
|
public function index(): JsonResponse
|
||||||
{
|
{
|
||||||
@@ -158,18 +155,23 @@ class ShowController extends Controller
|
|||||||
Log::debug(sprintf('Now in triggerTransaction(%d, %d)', $webhook->id, $group->id));
|
Log::debug(sprintf('Now in triggerTransaction(%d, %d)', $webhook->id, $group->id));
|
||||||
Log::channel('audit')->info(sprintf('User triggers webhook #%d on transaction group #%d.', $webhook->id, $group->id));
|
Log::channel('audit')->info(sprintf('User triggers webhook #%d on transaction group #%d.', $webhook->id, $group->id));
|
||||||
|
|
||||||
/** @var MessageGeneratorInterface $engine */
|
|
||||||
$engine = app(MessageGeneratorInterface::class);
|
|
||||||
$engine->setUser(auth()->user());
|
|
||||||
|
|
||||||
// tell the generator which trigger it should look for
|
/** @var \FireflyIII\Models\WebhookTrigger $trigger */
|
||||||
$engine->setTrigger(WebhookTrigger::tryFrom($webhook->trigger));
|
foreach ($webhook->webhookTriggers as $trigger) {
|
||||||
// tell the generator which objects to process
|
/** @var MessageGeneratorInterface $engine */
|
||||||
$engine->setObjects(new Collection([$group]));
|
$engine = app(MessageGeneratorInterface::class);
|
||||||
// set the webhook to trigger
|
$engine->setUser(auth()->user());
|
||||||
$engine->setWebhooks(new Collection([$webhook]));
|
|
||||||
// tell the generator to generate the messages
|
// tell the generator which trigger it should look for
|
||||||
$engine->generateMessages();
|
$engine->setTrigger(WebhookTrigger::tryFrom((int)$trigger->key));
|
||||||
|
// tell the generator which objects to process
|
||||||
|
$engine->setObjects(new Collection()->push($group));
|
||||||
|
// set the webhook to trigger
|
||||||
|
$engine->setWebhooks(new Collection()->push($webhook));
|
||||||
|
// tell the generator to generate the messages
|
||||||
|
$engine->generateMessages();
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// trigger event to send them:
|
// trigger event to send them:
|
||||||
Log::debug('send event RequestedSendWebhookMessages from ShowController::triggerTransaction()');
|
Log::debug('send event RequestedSendWebhookMessages from ShowController::triggerTransaction()');
|
||||||
|
97
app/Api/V1/Requests/AggregateFormRequest.php
Normal file
97
app/Api/V1/Requests/AggregateFormRequest.php
Normal file
@@ -0,0 +1,97 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025 https://github.com/ctrl-f5
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V1\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Http\Request;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
use RuntimeException;
|
||||||
|
|
||||||
|
abstract class AggregateFormRequest extends ApiRequest
|
||||||
|
{
|
||||||
|
/**
|
||||||
|
* @var ApiRequest[]
|
||||||
|
*/
|
||||||
|
protected array $requests = [];
|
||||||
|
|
||||||
|
/** @return class-string[] */
|
||||||
|
abstract protected function getRequests(): array;
|
||||||
|
|
||||||
|
public function initialize(array $query = [], array $request = [], array $attributes = [], array $cookies = [], array $files = [], array $server = [], $content = null): void
|
||||||
|
{
|
||||||
|
parent::initialize($query, $request, $attributes, $cookies, $files, $server, $content);
|
||||||
|
|
||||||
|
// instantiate all subrequests and share current requests' bags with them
|
||||||
|
Log::debug('Initializing AggregateFormRequest.');
|
||||||
|
foreach ($this->getRequests() as $config) {
|
||||||
|
$requestClass = is_array($config) ? array_shift($config) : $config;
|
||||||
|
|
||||||
|
if (!is_a($requestClass, Request::class, true)) {
|
||||||
|
throw new RuntimeException('getRequests() must return class-strings of subclasses of Request');
|
||||||
|
}
|
||||||
|
Log::debug(sprintf('Initializing subrequest %s', $requestClass));
|
||||||
|
|
||||||
|
$instance = $this->requests[] = new $requestClass();
|
||||||
|
$instance->request = $this->request;
|
||||||
|
$instance->query = $this->query;
|
||||||
|
$instance->attributes = $this->attributes;
|
||||||
|
$instance->cookies = $this->cookies;
|
||||||
|
$instance->files = $this->files;
|
||||||
|
$instance->server = $this->server;
|
||||||
|
$instance->headers = $this->headers;
|
||||||
|
|
||||||
|
if ($instance instanceof ApiRequest) {
|
||||||
|
$instance->handleConfig(is_array($config) ? $config : []);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
Log::debug('Done initializing AggregateFormRequest.');
|
||||||
|
}
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
// check all subrequests for rules and combine them
|
||||||
|
return array_reduce(
|
||||||
|
$this->requests,
|
||||||
|
static fn (array $rules, FormRequest $request) => $rules
|
||||||
|
+ (
|
||||||
|
method_exists($request, 'rules')
|
||||||
|
? $request->rules()
|
||||||
|
: []
|
||||||
|
),
|
||||||
|
[],
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withValidator(Validator $validator): void
|
||||||
|
{
|
||||||
|
// register all subrequests' validators
|
||||||
|
foreach ($this->requests as $request) {
|
||||||
|
if (method_exists($request, 'withValidator')) {
|
||||||
|
Log::debug(sprintf('Process withValidator from class %s', get_class($request)));
|
||||||
|
$request->withValidator($validator);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
@@ -1,8 +1,7 @@
|
|||||||
<?php
|
<?php
|
||||||
|
|
||||||
/*
|
/*
|
||||||
* BudgetRepositoryInterface.php
|
* Copyright (c) 2025 https://github.com/ctrl-f5
|
||||||
* Copyright (c) 2023 james@firefly-iii.org
|
|
||||||
*
|
*
|
||||||
* This file is part of Firefly III (https://github.com/firefly-iii).
|
* This file is part of Firefly III (https://github.com/firefly-iii).
|
||||||
*
|
*
|
||||||
@@ -22,18 +21,23 @@
|
|||||||
|
|
||||||
declare(strict_types=1);
|
declare(strict_types=1);
|
||||||
|
|
||||||
namespace FireflyIII\Repositories\UserGroups\Budget;
|
namespace FireflyIII\Api\V1\Requests;
|
||||||
|
|
||||||
use Illuminate\Support\Collection;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
|
||||||
/**
|
class ApiRequest extends FormRequest
|
||||||
* Interface BudgetRepositoryInterface
|
|
||||||
*
|
|
||||||
* @deprecated
|
|
||||||
*/
|
|
||||||
interface BudgetRepositoryInterface
|
|
||||||
{
|
{
|
||||||
public function getActiveBudgets(): Collection;
|
use ChecksLogin;
|
||||||
|
use ConvertsDataTypes;
|
||||||
|
|
||||||
public function getBudgets(): Collection;
|
protected string $required = '';
|
||||||
|
|
||||||
|
public function handleConfig(array $config): void
|
||||||
|
{
|
||||||
|
if (in_array('required', $config, true)) {
|
||||||
|
$this->required = 'required';
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
@@ -48,10 +48,12 @@ class AutocompleteRequest extends FormRequest
|
|||||||
// remove 'initial balance' from allowed types. its internal
|
// remove 'initial balance' from allowed types. its internal
|
||||||
$array = array_diff($array, [AccountTypeEnum::INITIAL_BALANCE->value, AccountTypeEnum::RECONCILIATION->value]);
|
$array = array_diff($array, [AccountTypeEnum::INITIAL_BALANCE->value, AccountTypeEnum::RECONCILIATION->value]);
|
||||||
|
|
||||||
|
$date = $this->getCarbonDate('date') ?? today(config('app.timezone'));
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'types' => $array,
|
'types' => $array,
|
||||||
'query' => $this->convertString('query'),
|
'query' => $this->convertString('query'),
|
||||||
'date' => $this->getCarbonDate('date'),
|
'date' => $date->endOfDay(),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,13 +24,13 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Chart;
|
namespace FireflyIII\Api\V1\Requests\Chart;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Enums\UserRoleEnum;
|
use FireflyIII\Enums\UserRoleEnum;
|
||||||
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class ChartRequest
|
* Class ChartRequest
|
||||||
|
@@ -24,12 +24,12 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Data\Bulk;
|
namespace FireflyIII\Api\V1\Requests\Data\Bulk;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class MoveTransactionsRequest
|
* Class MoveTransactionsRequest
|
||||||
|
@@ -24,8 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Data\Bulk;
|
namespace FireflyIII\Api\V1\Requests\Data\Bulk;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use JsonException;
|
|
||||||
use FireflyIII\Enums\ClauseType;
|
use FireflyIII\Enums\ClauseType;
|
||||||
use FireflyIII\Rules\IsValidBulkClause;
|
use FireflyIII\Rules\IsValidBulkClause;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
@@ -33,6 +31,8 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
|
|||||||
use FireflyIII\Validation\Api\Data\Bulk\ValidatesBulkTransactionQuery;
|
use FireflyIII\Validation\Api\Data\Bulk\ValidatesBulkTransactionQuery;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
use JsonException;
|
||||||
|
|
||||||
use function Safe\json_decode;
|
use function Safe\json_decode;
|
||||||
|
|
||||||
|
@@ -1,73 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/*
|
|
||||||
* DateRequest.php
|
|
||||||
* Copyright (c) 2021 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/>.
|
|
||||||
*/
|
|
||||||
|
|
||||||
declare(strict_types=1);
|
|
||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Data;
|
|
||||||
|
|
||||||
use FireflyIII\Exceptions\ValidationException;
|
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Request class for end points that require date parameters.
|
|
||||||
*
|
|
||||||
* Class DateRequest
|
|
||||||
*/
|
|
||||||
class DateRequest extends FormRequest
|
|
||||||
{
|
|
||||||
use ChecksLogin;
|
|
||||||
use ConvertsDataTypes;
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Get all data from the request.
|
|
||||||
*/
|
|
||||||
public function getAll(): array
|
|
||||||
{
|
|
||||||
$start = $this->getCarbonDate('start');
|
|
||||||
$end = $this->getCarbonDate('end');
|
|
||||||
$start->startOfDay();
|
|
||||||
$end->endOfDay();
|
|
||||||
if ($start->diffInYears($end, true) > 5) {
|
|
||||||
throw new ValidationException('Date range out of range.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return [
|
|
||||||
'start' => $start,
|
|
||||||
'end' => $end,
|
|
||||||
'date' => $this->getCarbonDate('date'),
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The rules that the incoming request must be matched against.
|
|
||||||
*/
|
|
||||||
public function rules(): array
|
|
||||||
{
|
|
||||||
return [
|
|
||||||
'date' => 'date|after:1970-01-02|before:2038-01-17',
|
|
||||||
'start' => 'date|after:1970-01-02|before:2038-01-17|before:end|required_with:end',
|
|
||||||
'end' => 'date|after:1970-01-02|before:2038-01-17|after:start|required_with:start',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
}
|
|
57
app/Api/V1/Requests/DateRangeRequest.php
Normal file
57
app/Api/V1/Requests/DateRangeRequest.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025 https://github.com/ctrl-f5
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V1\Requests;
|
||||||
|
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
|
class DateRangeRequest extends ApiRequest
|
||||||
|
{
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'start' => sprintf('date|after:1970-01-02|before:2038-01-17|before:end|required_with:end|%s', $this->required),
|
||||||
|
'end' => sprintf('date|after:1970-01-02|before:2038-01-17|after:start|required_with:start|%s', $this->required),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withValidator(Validator $validator): void
|
||||||
|
{
|
||||||
|
$validator->after(
|
||||||
|
function (Validator $validator): void {
|
||||||
|
if ($validator->failed()) {
|
||||||
|
// set null values
|
||||||
|
$this->attributes->set('start', null);
|
||||||
|
$this->attributes->set('end', null);
|
||||||
|
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$start = $this->getCarbonDate('start')?->startOfDay();
|
||||||
|
$end = $this->getCarbonDate('end')?->endOfDay();
|
||||||
|
|
||||||
|
$this->attributes->set('start', $start);
|
||||||
|
$this->attributes->set('end', $end);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
58
app/Api/V1/Requests/DateRequest.php
Normal file
58
app/Api/V1/Requests/DateRequest.php
Normal file
@@ -0,0 +1,58 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
/*
|
||||||
|
* Copyright (c) 2025 https://github.com/ctrl-f5
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V1\Requests;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
|
class DateRequest extends ApiRequest
|
||||||
|
{
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'date' => 'date|after:1970-01-02|before:2038-01-17|'.$this->required,
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withValidator(Validator $validator): void
|
||||||
|
{
|
||||||
|
$validator->after(
|
||||||
|
function (Validator $validator): void {
|
||||||
|
if ($validator->failed()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$date = $this->getCarbonDate('date')?->endOfDay();
|
||||||
|
|
||||||
|
// if we also have a range, date must be in that range
|
||||||
|
$start = $this->attributes->get('start');
|
||||||
|
$end = $this->attributes->get('end');
|
||||||
|
if ($date instanceof Carbon && $start instanceof Carbon && $end instanceof Carbon && !$date->between($start, $end)) {
|
||||||
|
$validator->errors()->add('date', (string)trans('validation.between_date'));
|
||||||
|
}
|
||||||
|
|
||||||
|
$this->attributes->set('date', $date);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
57
app/Api/V1/Requests/Models/Account/AccountTypeApiRequest.php
Normal file
57
app/Api/V1/Requests/Models/Account/AccountTypeApiRequest.php
Normal file
@@ -0,0 +1,57 @@
|
|||||||
|
<?php
|
||||||
|
|
||||||
|
declare(strict_types=1);
|
||||||
|
/*
|
||||||
|
* AccountTypeApiRequest.php
|
||||||
|
* Copyright (c) 2025 https://github.com/ctrl-f5
|
||||||
|
*
|
||||||
|
* 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/>.
|
||||||
|
*/
|
||||||
|
|
||||||
|
namespace FireflyIII\Api\V1\Requests\Models\Account;
|
||||||
|
|
||||||
|
use FireflyIII\Api\V1\Requests\ApiRequest;
|
||||||
|
use FireflyIII\Support\Http\Api\AccountFilter;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
|
class AccountTypeApiRequest extends ApiRequest
|
||||||
|
{
|
||||||
|
use AccountFilter;
|
||||||
|
|
||||||
|
public function rules(): array
|
||||||
|
{
|
||||||
|
return [
|
||||||
|
'type' => sprintf('in:%s', implode(',', array_keys($this->types))),
|
||||||
|
];
|
||||||
|
}
|
||||||
|
|
||||||
|
public function withValidator(Validator $validator): void
|
||||||
|
{
|
||||||
|
$validator->after(
|
||||||
|
function (Validator $validator): void {
|
||||||
|
if ($validator->failed()) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
|
||||||
|
$type = $this->convertString('type', 'all');
|
||||||
|
$this->attributes->add([
|
||||||
|
'type' => $type,
|
||||||
|
'types' => $this->mapAccountTypes($type),
|
||||||
|
]);
|
||||||
|
}
|
||||||
|
);
|
||||||
|
}
|
||||||
|
}
|
@@ -23,77 +23,21 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Account;
|
namespace FireflyIII\Api\V1\Requests\Models\Account;
|
||||||
|
|
||||||
use Carbon\Carbon;
|
use FireflyIII\Api\V1\Requests\AggregateFormRequest;
|
||||||
|
use FireflyIII\Api\V1\Requests\DateRangeRequest;
|
||||||
|
use FireflyIII\Api\V1\Requests\DateRequest;
|
||||||
|
use FireflyIII\Api\V1\Requests\PaginationRequest;
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Rules\IsValidSortInstruction;
|
|
||||||
use FireflyIII\Support\Facades\Preferences;
|
|
||||||
use FireflyIII\Support\Http\Api\AccountFilter;
|
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
|
||||||
use FireflyIII\User;
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
|
||||||
|
|
||||||
class ShowRequest extends FormRequest
|
class ShowRequest extends AggregateFormRequest
|
||||||
{
|
{
|
||||||
use AccountFilter;
|
protected function getRequests(): array
|
||||||
use ConvertsDataTypes;
|
|
||||||
|
|
||||||
public function getParameters(): array
|
|
||||||
{
|
{
|
||||||
$limit = $this->convertInteger('limit');
|
|
||||||
if (0 === $limit) {
|
|
||||||
// get default for user:
|
|
||||||
/** @var User $user */
|
|
||||||
$user = auth()->user();
|
|
||||||
$limit = (int)Preferences::getForUser($user, 'listPageSize', 50)->data;
|
|
||||||
}
|
|
||||||
|
|
||||||
$page = $this->convertInteger('page');
|
|
||||||
$page = min(max(1, $page), 2 ** 16);
|
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'type' => $this->convertString('type', 'all'),
|
[PaginationRequest::class, 'sort_class' => Account::class],
|
||||||
'limit' => $limit,
|
DateRangeRequest::class,
|
||||||
'sort' => $this->convertSortParameters('sort', Account::class),
|
DateRequest::class,
|
||||||
'page' => $page,
|
AccountTypeApiRequest::class,
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
public function rules(): array
|
|
||||||
{
|
|
||||||
$keys = implode(',', array_keys($this->types));
|
|
||||||
|
|
||||||
return [
|
|
||||||
'date' => 'date',
|
|
||||||
'start' => 'date|present_with:end|before_or_equal:end|before:2038-01-17|after:1970-01-02',
|
|
||||||
'end' => 'date|present_with:start|after_or_equal:start|before:2038-01-17|after:1970-01-02',
|
|
||||||
'sort' => ['nullable', new IsValidSortInstruction(Account::class)],
|
|
||||||
'type' => sprintf('in:%s', $keys),
|
|
||||||
'limit' => 'numeric|min:1|max:131337',
|
|
||||||
'page' => 'numeric|min:1|max:131337',
|
|
||||||
];
|
|
||||||
}
|
|
||||||
|
|
||||||
public function withValidator(Validator $validator): void
|
|
||||||
{
|
|
||||||
$validator->after(
|
|
||||||
function (Validator $validator): void {
|
|
||||||
if (count($validator->failed()) > 0) {
|
|
||||||
return;
|
|
||||||
}
|
|
||||||
$data = $validator->getData();
|
|
||||||
|
|
||||||
|
|
||||||
if (array_key_exists('date', $data) && array_key_exists('start', $data) && array_key_exists('end', $data)) {
|
|
||||||
// assume valid dates, before we got here.
|
|
||||||
$start = Carbon::parse($data['start'], config('app.timezone'))->startOfDay();
|
|
||||||
$end = Carbon::parse($data['end'], config('app.timezone'))->endOfDay();
|
|
||||||
$date = Carbon::parse($data['date'], config('app.timezone'));
|
|
||||||
if (!$date->between($start, $end)) {
|
|
||||||
$validator->errors()->add('date', (string)trans('validation.between_date'));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
);
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Account;
|
namespace FireflyIII\Api\V1\Requests\Models\Account;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\Account;
|
use FireflyIII\Models\Account;
|
||||||
use FireflyIII\Models\Location;
|
use FireflyIII\Models\Location;
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
@@ -36,6 +35,7 @@ use FireflyIII\Support\Request\ChecksLogin;
|
|||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
|
@@ -24,13 +24,13 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\AvailableBudget;
|
namespace FireflyIII\Api\V1\Requests\Models\AvailableBudget;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class Request
|
* Class Request
|
||||||
|
@@ -24,15 +24,15 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Bill;
|
namespace FireflyIII\Api\V1\Requests\Models\Bill;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use ValueError;
|
|
||||||
use TypeError;
|
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
use TypeError;
|
||||||
|
use ValueError;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Bill;
|
namespace FireflyIII\Api\V1\Requests\Models\Bill;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\Bill;
|
use FireflyIII\Models\Bill;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
@@ -32,6 +31,7 @@ use FireflyIII\Support\Request\ChecksLogin;
|
|||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Budget;
|
namespace FireflyIII\Api\V1\Requests\Models\Budget;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
@@ -32,6 +31,7 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
|
|||||||
use FireflyIII\Validation\AutoBudget\ValidatesAutoBudgetRequest;
|
use FireflyIII\Validation\AutoBudget\ValidatesAutoBudgetRequest;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
@@ -48,17 +48,20 @@ class StoreRequest extends FormRequest
|
|||||||
public function getAll(): array
|
public function getAll(): array
|
||||||
{
|
{
|
||||||
$fields = [
|
$fields = [
|
||||||
'name' => ['name', 'convertString'],
|
'name' => ['name', 'convertString'],
|
||||||
'active' => ['active', 'boolean'],
|
'active' => ['active', 'boolean'],
|
||||||
'order' => ['active', 'convertInteger'],
|
'order' => ['active', 'convertInteger'],
|
||||||
'notes' => ['notes', 'convertString'],
|
'notes' => ['notes', 'convertString'],
|
||||||
|
|
||||||
// auto budget currency:
|
// auto budget currency:
|
||||||
'currency_id' => ['auto_budget_currency_id', 'convertInteger'],
|
'currency_id' => ['auto_budget_currency_id', 'convertInteger'],
|
||||||
'currency_code' => ['auto_budget_currency_code', 'convertString'],
|
'currency_code' => ['auto_budget_currency_code', 'convertString'],
|
||||||
'auto_budget_type' => ['auto_budget_type', 'convertString'],
|
'auto_budget_type' => ['auto_budget_type', 'convertString'],
|
||||||
'auto_budget_amount' => ['auto_budget_amount', 'convertString'],
|
'auto_budget_amount' => ['auto_budget_amount', 'convertString'],
|
||||||
'auto_budget_period' => ['auto_budget_period', 'convertString'],
|
'auto_budget_period' => ['auto_budget_period', 'convertString'],
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => ['fire_webhooks', 'boolean'],
|
||||||
];
|
];
|
||||||
|
|
||||||
return $this->getAllData($fields);
|
return $this->getAllData($fields);
|
||||||
@@ -70,15 +73,18 @@ class StoreRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'name' => 'required|min:1|max:255|uniqueObjectForUser:budgets,name',
|
'name' => 'required|min:1|max:255|uniqueObjectForUser:budgets,name',
|
||||||
'active' => [new IsBoolean()],
|
'active' => [new IsBoolean()],
|
||||||
'currency_id' => 'exists:transaction_currencies,id',
|
'currency_id' => 'exists:transaction_currencies,id',
|
||||||
'currency_code' => 'exists:transaction_currencies,code',
|
'currency_code' => 'exists:transaction_currencies,code',
|
||||||
'notes' => 'nullable|min:1|max:32768',
|
'notes' => 'nullable|min:1|max:32768',
|
||||||
// auto budget info
|
// auto budget info
|
||||||
'auto_budget_type' => 'in:reset,rollover,adjusted,none',
|
'auto_budget_type' => 'in:reset,rollover,adjusted,none',
|
||||||
'auto_budget_amount' => ['required_if:auto_budget_type,reset', 'required_if:auto_budget_type,rollover', 'required_if:auto_budget_type,adjusted', new IsValidPositiveAmount()],
|
'auto_budget_amount' => ['required_if:auto_budget_type,reset', 'required_if:auto_budget_type,rollover', 'required_if:auto_budget_type,adjusted', new IsValidPositiveAmount()],
|
||||||
'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly|required_if:auto_budget_type,reset|required_if:auto_budget_type,rollover|required_if:auto_budget_type,adjusted',
|
'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly|required_if:auto_budget_type,reset|required_if:auto_budget_type,rollover|required_if:auto_budget_type,adjusted',
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => [new IsBoolean()],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Budget;
|
namespace FireflyIII\Api\V1\Requests\Models\Budget;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\Budget;
|
use FireflyIII\Models\Budget;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
@@ -33,6 +32,7 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
|
|||||||
use FireflyIII\Validation\AutoBudget\ValidatesAutoBudgetRequest;
|
use FireflyIII\Validation\AutoBudget\ValidatesAutoBudgetRequest;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
@@ -50,15 +50,18 @@ class UpdateRequest extends FormRequest
|
|||||||
{
|
{
|
||||||
// this is the way:
|
// this is the way:
|
||||||
$fields = [
|
$fields = [
|
||||||
'name' => ['name', 'convertString'],
|
'name' => ['name', 'convertString'],
|
||||||
'active' => ['active', 'boolean'],
|
'active' => ['active', 'boolean'],
|
||||||
'order' => ['order', 'convertInteger'],
|
'order' => ['order', 'convertInteger'],
|
||||||
'notes' => ['notes', 'convertString'],
|
'notes' => ['notes', 'convertString'],
|
||||||
'currency_id' => ['auto_budget_currency_id', 'convertInteger'],
|
'currency_id' => ['auto_budget_currency_id', 'convertInteger'],
|
||||||
'currency_code' => ['auto_budget_currency_code', 'convertString'],
|
'currency_code' => ['auto_budget_currency_code', 'convertString'],
|
||||||
'auto_budget_type' => ['auto_budget_type', 'convertString'],
|
'auto_budget_type' => ['auto_budget_type', 'convertString'],
|
||||||
'auto_budget_amount' => ['auto_budget_amount', 'convertString'],
|
'auto_budget_amount' => ['auto_budget_amount', 'convertString'],
|
||||||
'auto_budget_period' => ['auto_budget_period', 'convertString'],
|
'auto_budget_period' => ['auto_budget_period', 'convertString'],
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => ['fire_webhooks', 'boolean'],
|
||||||
];
|
];
|
||||||
$allData = $this->getAllData($fields);
|
$allData = $this->getAllData($fields);
|
||||||
if (array_key_exists('auto_budget_type', $allData)) {
|
if (array_key_exists('auto_budget_type', $allData)) {
|
||||||
@@ -83,14 +86,17 @@ class UpdateRequest extends FormRequest
|
|||||||
$budget = $this->route()->parameter('budget');
|
$budget = $this->route()->parameter('budget');
|
||||||
|
|
||||||
return [
|
return [
|
||||||
'name' => sprintf('min:1|max:100|uniqueObjectForUser:budgets,name,%d', $budget->id),
|
'name' => sprintf('min:1|max:100|uniqueObjectForUser:budgets,name,%d', $budget->id),
|
||||||
'active' => [new IsBoolean()],
|
'active' => [new IsBoolean()],
|
||||||
'notes' => 'nullable|min:1|max:32768',
|
'notes' => 'nullable|min:1|max:32768',
|
||||||
'auto_budget_type' => 'in:reset,rollover,adjusted,none',
|
'auto_budget_type' => 'in:reset,rollover,adjusted,none',
|
||||||
'auto_budget_currency_id' => 'exists:transaction_currencies,id',
|
'auto_budget_currency_id' => 'exists:transaction_currencies,id',
|
||||||
'auto_budget_currency_code' => 'exists:transaction_currencies,code',
|
'auto_budget_currency_code' => 'exists:transaction_currencies,code',
|
||||||
'auto_budget_amount' => ['nullable', new IsValidPositiveAmount()],
|
'auto_budget_amount' => ['nullable', new IsValidPositiveAmount()],
|
||||||
'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly',
|
'auto_budget_period' => 'in:daily,weekly,monthly,quarterly,half_year,yearly',
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => [new IsBoolean()],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -24,10 +24,16 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\BudgetLimit;
|
namespace FireflyIII\Api\V1\Requests\Models\BudgetLimit;
|
||||||
|
|
||||||
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Factory\TransactionCurrencyFactory;
|
||||||
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
@@ -49,6 +55,9 @@ class StoreRequest extends FormRequest
|
|||||||
'currency_id' => $this->convertInteger('currency_id'),
|
'currency_id' => $this->convertInteger('currency_id'),
|
||||||
'currency_code' => $this->convertString('currency_code'),
|
'currency_code' => $this->convertString('currency_code'),
|
||||||
'notes' => $this->stringWithNewlines('notes'),
|
'notes' => $this->stringWithNewlines('notes'),
|
||||||
|
|
||||||
|
// for webhooks:
|
||||||
|
'fire_webhooks' => $this->boolean('fire_webhooks', true),
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -58,12 +67,59 @@ class StoreRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'start' => 'required|before:end|date',
|
'start' => 'required|before:end|date',
|
||||||
'end' => 'required|after:start|date',
|
'end' => 'required|after:start|date',
|
||||||
'amount' => ['required', new IsValidPositiveAmount()],
|
'amount' => ['required', new IsValidPositiveAmount()],
|
||||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||||
'notes' => 'nullable|min:0|max:32768',
|
'notes' => 'nullable|min:0|max:32768',
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => [new IsBoolean()],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Configure the validator instance.
|
||||||
|
*/
|
||||||
|
public function withValidator(Validator $validator): void
|
||||||
|
{
|
||||||
|
$budget = $this->route()->parameter('budget');
|
||||||
|
$validator->after(
|
||||||
|
static function (Validator $validator) use ($budget): void {
|
||||||
|
if (0 !== count($validator->failed())) {
|
||||||
|
return;
|
||||||
|
}
|
||||||
|
$data = $validator->getData();
|
||||||
|
|
||||||
|
// if no currency has been provided, use the user's default currency:
|
||||||
|
/** @var TransactionCurrencyFactory $factory */
|
||||||
|
$factory = app(TransactionCurrencyFactory::class);
|
||||||
|
$currency = $factory->find($data['currency_id'] ?? null, $data['currency_code'] ?? null);
|
||||||
|
if (null === $currency) {
|
||||||
|
$currency = Amount::getPrimaryCurrency();
|
||||||
|
}
|
||||||
|
$currency->enabled = true;
|
||||||
|
$currency->save();
|
||||||
|
|
||||||
|
// validator already concluded start and end are valid dates:
|
||||||
|
$start = Carbon::parse($data['start'], config('app.timezone'));
|
||||||
|
$end = Carbon::parse($data['end'], config('app.timezone'));
|
||||||
|
|
||||||
|
// find limit with same date range and currency.
|
||||||
|
$limit = $budget->budgetlimits()
|
||||||
|
->where('budget_limits.start_date', $start->format('Y-m-d'))
|
||||||
|
->where('budget_limits.end_date', $end->format('Y-m-d'))
|
||||||
|
->where('budget_limits.transaction_currency_id', $currency->id)
|
||||||
|
->first(['budget_limits.*'])
|
||||||
|
;
|
||||||
|
if (null !== $limit) {
|
||||||
|
$validator->errors()->add('start', trans('validation.limit_exists'));
|
||||||
|
}
|
||||||
|
}
|
||||||
|
);
|
||||||
|
if ($validator->fails()) {
|
||||||
|
Log::channel('audit')->error(sprintf('Validation errors in %s', self::class), $validator->errors()->toArray());
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@@ -24,13 +24,14 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\BudgetLimit;
|
namespace FireflyIII\Api\V1\Requests\Models\BudgetLimit;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
@@ -46,12 +47,15 @@ class UpdateRequest extends FormRequest
|
|||||||
public function getAll(): array
|
public function getAll(): array
|
||||||
{
|
{
|
||||||
$fields = [
|
$fields = [
|
||||||
'start' => ['start', 'date'],
|
'start' => ['start', 'date'],
|
||||||
'end' => ['end', 'date'],
|
'end' => ['end', 'date'],
|
||||||
'amount' => ['amount', 'convertString'],
|
'amount' => ['amount', 'convertString'],
|
||||||
'currency_id' => ['currency_id', 'convertInteger'],
|
'currency_id' => ['currency_id', 'convertInteger'],
|
||||||
'currency_code' => ['currency_code', 'convertString'],
|
'currency_code' => ['currency_code', 'convertString'],
|
||||||
'notes' => ['notes', 'stringWithNewlines'],
|
'notes' => ['notes', 'stringWithNewlines'],
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => ['fire_webhooks', 'boolean'],
|
||||||
];
|
];
|
||||||
if (false === $this->has('notes')) {
|
if (false === $this->has('notes')) {
|
||||||
// ignore notes, not submitted.
|
// ignore notes, not submitted.
|
||||||
@@ -67,12 +71,15 @@ class UpdateRequest extends FormRequest
|
|||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
'start' => 'date|after:1970-01-02|before:2038-01-17',
|
||||||
'end' => 'date|after:1970-01-02|before:2038-01-17',
|
'end' => 'date|after:1970-01-02|before:2038-01-17',
|
||||||
'amount' => ['nullable', new IsValidPositiveAmount()],
|
'amount' => ['nullable', new IsValidPositiveAmount()],
|
||||||
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
'currency_id' => 'numeric|exists:transaction_currencies,id',
|
||||||
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
'currency_code' => 'min:3|max:51|exists:transaction_currencies,code',
|
||||||
'notes' => 'nullable|min:0|max:32768',
|
'notes' => 'nullable|min:0|max:32768',
|
||||||
|
|
||||||
|
// webhooks
|
||||||
|
'fire_webhooks' => [new IsBoolean()],
|
||||||
];
|
];
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -28,8 +28,8 @@ use Carbon\Carbon;
|
|||||||
use Carbon\Exceptions\InvalidFormatException;
|
use Carbon\Exceptions\InvalidFormatException;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
class StoreByCurrenciesRequest extends FormRequest
|
class StoreByCurrenciesRequest extends FormRequest
|
||||||
{
|
{
|
||||||
@@ -58,8 +58,8 @@ class StoreByCurrenciesRequest extends FormRequest
|
|||||||
$data = $validator->getData();
|
$data = $validator->getData();
|
||||||
foreach ($data as $date => $rate) {
|
foreach ($data as $date => $rate) {
|
||||||
try {
|
try {
|
||||||
$date = Carbon::createFromFormat('Y-m-d', $date);
|
Carbon::createFromFormat('Y-m-d', $date);
|
||||||
} catch (InvalidFormatException $e) {
|
} catch (InvalidFormatException) {
|
||||||
$validator->errors()->add('date', trans('validation.date', ['attribute' => 'date']));
|
$validator->errors()->add('date', trans('validation.date', ['attribute' => 'date']));
|
||||||
|
|
||||||
return;
|
return;
|
||||||
|
@@ -24,17 +24,22 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\CurrencyExchangeRate;
|
namespace FireflyIII\Api\V1\Requests\Models\CurrencyExchangeRate;
|
||||||
|
|
||||||
|
use FireflyIII\Exceptions\FireflyException;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
class StoreByDateRequest extends FormRequest
|
class StoreByDateRequest extends FormRequest
|
||||||
{
|
{
|
||||||
use ChecksLogin;
|
use ChecksLogin;
|
||||||
use ConvertsDataTypes;
|
use ConvertsDataTypes;
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array<string, mixed>
|
||||||
|
*/
|
||||||
public function getAll(): array
|
public function getAll(): array
|
||||||
{
|
{
|
||||||
return [
|
return [
|
||||||
@@ -45,11 +50,13 @@ class StoreByDateRequest extends FormRequest
|
|||||||
|
|
||||||
public function getFromCurrency(): TransactionCurrency
|
public function getFromCurrency(): TransactionCurrency
|
||||||
{
|
{
|
||||||
return TransactionCurrency::where('code', $this->get('from'))->first();
|
return Amount::getTransactionCurrencyByCode((string)$this->get('from'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The rules that the incoming request must be matched against.
|
* The rules that the incoming request must be matched against.
|
||||||
|
*
|
||||||
|
* @return array<string, string>
|
||||||
*/
|
*/
|
||||||
public function rules(): array
|
public function rules(): array
|
||||||
{
|
{
|
||||||
@@ -79,8 +86,10 @@ class StoreByDateRequest extends FormRequest
|
|||||||
|
|
||||||
continue;
|
continue;
|
||||||
}
|
}
|
||||||
$to = TransactionCurrency::where('code', $key)->first();
|
|
||||||
if (null === $to) {
|
try {
|
||||||
|
Amount::getTransactionCurrencyByCode((string)$key);
|
||||||
|
} catch (FireflyException) {
|
||||||
$validator->errors()->add(sprintf('rates.%s', $key), trans('validation.invalid_currency_code', ['code' => $key]));
|
$validator->errors()->add(sprintf('rates.%s', $key), trans('validation.invalid_currency_code', ['code' => $key]));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@@ -26,6 +26,7 @@ namespace FireflyIII\Api\V1\Requests\Models\CurrencyExchangeRate;
|
|||||||
|
|
||||||
use Carbon\Carbon;
|
use Carbon\Carbon;
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
@@ -42,7 +43,7 @@ class StoreRequest extends FormRequest
|
|||||||
|
|
||||||
public function getFromCurrency(): TransactionCurrency
|
public function getFromCurrency(): TransactionCurrency
|
||||||
{
|
{
|
||||||
return TransactionCurrency::where('code', $this->get('from'))->first();
|
return Amount::getTransactionCurrencyByCode((string) $this->get('from'));
|
||||||
}
|
}
|
||||||
|
|
||||||
public function getRate(): string
|
public function getRate(): string
|
||||||
@@ -52,7 +53,7 @@ class StoreRequest extends FormRequest
|
|||||||
|
|
||||||
public function getToCurrency(): TransactionCurrency
|
public function getToCurrency(): TransactionCurrency
|
||||||
{
|
{
|
||||||
return TransactionCurrency::where('code', $this->get('to'))->first();
|
return Amount::getTransactionCurrencyByCode((string) $this->get('to'));
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@@ -24,14 +24,15 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\PiggyBank;
|
namespace FireflyIII\Api\V1\Requests\Models\PiggyBank;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\TransactionCurrency;
|
use FireflyIII\Models\TransactionCurrency;
|
||||||
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
|
||||||
use FireflyIII\Rules\IsValidZeroOrMoreAmount;
|
use FireflyIII\Rules\IsValidZeroOrMoreAmount;
|
||||||
|
use FireflyIII\Support\Facades\Amount;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
use FireflyIII\Support\Request\ConvertsDataTypes;
|
use FireflyIII\Support\Request\ConvertsDataTypes;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
@@ -96,7 +97,7 @@ class StoreRequest extends FormRequest
|
|||||||
// validate start before end only if both are there.
|
// validate start before end only if both are there.
|
||||||
$data = $validator->getData();
|
$data = $validator->getData();
|
||||||
$currency = $this->getCurrencyFromData($validator, $data);
|
$currency = $this->getCurrencyFromData($validator, $data);
|
||||||
if (null === $currency) {
|
if (!$currency instanceof TransactionCurrency) {
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
$targetAmount = (string) ($data['target_amount'] ?? '0');
|
$targetAmount = (string) ($data['target_amount'] ?? '0');
|
||||||
@@ -135,16 +136,10 @@ class StoreRequest extends FormRequest
|
|||||||
private function getCurrencyFromData(Validator $validator, array $data): ?TransactionCurrency
|
private function getCurrencyFromData(Validator $validator, array $data): ?TransactionCurrency
|
||||||
{
|
{
|
||||||
if (array_key_exists('transaction_currency_code', $data) && '' !== (string) $data['transaction_currency_code']) {
|
if (array_key_exists('transaction_currency_code', $data) && '' !== (string) $data['transaction_currency_code']) {
|
||||||
$currency = TransactionCurrency::whereCode($data['transaction_currency_code'])->first();
|
return Amount::getTransactionCurrencyByCode((string) $data['transaction_currency_code']);
|
||||||
if (null !== $currency) {
|
|
||||||
return $currency;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
if (array_key_exists('transaction_currency_id', $data) && '' !== (string) $data['transaction_currency_id']) {
|
if (array_key_exists('transaction_currency_id', $data) && '' !== (string) $data['transaction_currency_id']) {
|
||||||
$currency = TransactionCurrency::find((int) $data['transaction_currency_id']);
|
return Amount::getTransactionCurrencyById((int) $data['transaction_currency_id']);
|
||||||
if (null !== $currency) {
|
|
||||||
return $currency;
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
$validator->errors()->add('transaction_currency_id', trans('validation.require_currency_id_code'));
|
$validator->errors()->add('transaction_currency_id', trans('validation.require_currency_id_code'));
|
||||||
|
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Recurrence;
|
namespace FireflyIII\Api\V1\Requests\Models\Recurrence;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Rules\BelongsUser;
|
use FireflyIII\Rules\BelongsUser;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidPositiveAmount;
|
use FireflyIII\Rules\IsValidPositiveAmount;
|
||||||
@@ -36,6 +35,7 @@ use FireflyIII\Validation\RecurrenceValidation;
|
|||||||
use FireflyIII\Validation\TransactionValidation;
|
use FireflyIII\Validation\TransactionValidation;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Recurrence;
|
namespace FireflyIII\Api\V1\Requests\Models\Recurrence;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\Recurrence;
|
use FireflyIII\Models\Recurrence;
|
||||||
use FireflyIII\Rules\BelongsUser;
|
use FireflyIII\Rules\BelongsUser;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
@@ -37,6 +36,7 @@ use FireflyIII\Validation\RecurrenceValidation;
|
|||||||
use FireflyIII\Validation\TransactionValidation;
|
use FireflyIII\Validation\TransactionValidation;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Rule;
|
namespace FireflyIII\Api\V1\Requests\Models\Rule;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidActionExpression;
|
use FireflyIII\Rules\IsValidActionExpression;
|
||||||
use FireflyIII\Support\Request\ChecksLogin;
|
use FireflyIII\Support\Request\ChecksLogin;
|
||||||
@@ -32,6 +31,7 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
|
|||||||
use FireflyIII\Support\Request\GetRuleConfiguration;
|
use FireflyIII\Support\Request\GetRuleConfiguration;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Rule;
|
namespace FireflyIII\Api\V1\Requests\Models\Rule;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\Rule;
|
use FireflyIII\Models\Rule;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
use FireflyIII\Rules\IsValidActionExpression;
|
use FireflyIII\Rules\IsValidActionExpression;
|
||||||
@@ -33,6 +32,7 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
|
|||||||
use FireflyIII\Support\Request\GetRuleConfiguration;
|
use FireflyIII\Support\Request\GetRuleConfiguration;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class UpdateRequest
|
* Class UpdateRequest
|
||||||
|
@@ -24,7 +24,6 @@ declare(strict_types=1);
|
|||||||
|
|
||||||
namespace FireflyIII\Api\V1\Requests\Models\Transaction;
|
namespace FireflyIII\Api\V1\Requests\Models\Transaction;
|
||||||
|
|
||||||
use Illuminate\Validation\Validator;
|
|
||||||
use FireflyIII\Models\Location;
|
use FireflyIII\Models\Location;
|
||||||
use FireflyIII\Rules\BelongsUser;
|
use FireflyIII\Rules\BelongsUser;
|
||||||
use FireflyIII\Rules\IsBoolean;
|
use FireflyIII\Rules\IsBoolean;
|
||||||
@@ -40,6 +39,7 @@ use FireflyIII\Validation\GroupValidation;
|
|||||||
use FireflyIII\Validation\TransactionValidation;
|
use FireflyIII\Validation\TransactionValidation;
|
||||||
use Illuminate\Foundation\Http\FormRequest;
|
use Illuminate\Foundation\Http\FormRequest;
|
||||||
use Illuminate\Support\Facades\Log;
|
use Illuminate\Support\Facades\Log;
|
||||||
|
use Illuminate\Validation\Validator;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Class StoreRequest
|
* Class StoreRequest
|
||||||
@@ -183,6 +183,7 @@ class StoreRequest extends FormRequest
|
|||||||
// basic fields for group:
|
// basic fields for group:
|
||||||
'group_title' => 'min:1|max:1000|nullable',
|
'group_title' => 'min:1|max:1000|nullable',
|
||||||
'error_if_duplicate_hash' => [new IsBoolean()],
|
'error_if_duplicate_hash' => [new IsBoolean()],
|
||||||
|
'fire_webhooks' => [new IsBoolean()],
|
||||||
'apply_rules' => [new IsBoolean()],
|
'apply_rules' => [new IsBoolean()],
|
||||||
|
|
||||||
// location rules
|
// location rules
|
||||||
|
Some files were not shown because too many files have changed in this diff Show More
Reference in New Issue
Block a user