Compare commits

...

116 Commits

Author SHA1 Message Date
github-actions[bot]
ff568653c8 Merge pull request #11940 from firefly-iii/release-1773385883
🤖 Automatically merge the PR into the develop branch.
2026-03-13 08:11:30 +01:00
JC5
21447a9b2f 🤖 Auto commit for release 'develop' on 2026-03-13 2026-03-13 08:11:23 +01:00
James Cole
238bfc819e Catch a null pointer. 2026-03-13 08:05:04 +01:00
James Cole
3fab4668fc Move copyright. 2026-03-13 04:14:46 +01:00
James Cole
190050d6cf Rate limit mail message. 2026-03-13 04:12:32 +01:00
James Cole
45d623e0c1 Fix some linting issues 2026-03-13 04:05:38 +01:00
github-actions[bot]
93fe8dbf42 Merge pull request #11938 from firefly-iii/release-1773370546
🤖 Automatically merge the PR into the develop branch.
2026-03-13 03:55:56 +01:00
JC5
63c49f740f 🤖 Auto commit for release 'develop' on 2026-03-13 2026-03-13 03:55:47 +01:00
James Cole
bc23bc0173 Fix reference to IP. 2026-03-13 03:50:02 +01:00
James Cole
1611cb3819 Add link to Firefly III in emails 2026-03-13 03:40:07 +01:00
Sander Dorigo
c520e79b85 Expand changelog 2026-03-12 08:42:26 +01:00
Sander Dorigo
51e005f305 Finally fix often reported enum issue in rule engine 2026-03-12 08:41:15 +01:00
James Cole
133449640d Fix phpstan issues by adding properties. 2026-03-09 20:56:09 +01:00
James Cole
c5a126eb61 Merge branch 'main' into develop 2026-03-09 20:39:56 +01:00
James Cole
4222d8ffdd Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop
# Conflicts:
#	app/Http/Controllers/Transaction/MassController.php
2026-03-09 20:39:35 +01:00
James Cole
28ff0a8423 Fix a bunch of phpstan issues. 2026-03-09 20:38:58 +01:00
James Cole
4c0e599b01 Merge pull request #11920 from firefly-iii/dependabot/github_actions/crazy-max/ghaction-import-gpg-7 2026-03-09 06:39:06 +01:00
dependabot[bot]
10d2137723 Bump crazy-max/ghaction-import-gpg from 6 to 7
Bumps [crazy-max/ghaction-import-gpg](https://github.com/crazy-max/ghaction-import-gpg) from 6 to 7.
- [Release notes](https://github.com/crazy-max/ghaction-import-gpg/releases)
- [Commits](https://github.com/crazy-max/ghaction-import-gpg/compare/v6...v7)

---
updated-dependencies:
- dependency-name: crazy-max/ghaction-import-gpg
  dependency-version: '7'
  dependency-type: direct:production
  update-type: version-update:semver-major
...

Signed-off-by: dependabot[bot] <support@github.com>
2026-03-09 03:53:55 +00:00
github-actions[bot]
f9b7149fc7 Merge pull request #11919 from firefly-iii/release-1773028359
🤖 Automatically merge the PR into the develop branch.
2026-03-09 04:52:46 +01:00
JC5
7c3fb7a95a 🤖 Auto commit for release 'develop' on 2026-03-09 2026-03-09 04:52:39 +01:00
James Cole
91b7ee06d8 Fix moar phpstan issues. 2026-03-08 17:44:19 +01:00
James Cole
84ea19d14c Fix a bunch of phpstan errors. 2026-03-08 17:08:51 +01:00
James Cole
9950f79a6b Merge branch 'main' into develop 2026-03-08 11:57:21 +01:00
James Cole
e3df7675d3 Fix https://github.com/firefly-iii/firefly-iii/issues/11916 2026-03-08 11:56:53 +01:00
James Cole
15094097bc Update various templates. 2026-03-07 13:42:11 +01:00
github-actions[bot]
a07dc4dbc8 Merge pull request #11904 from firefly-iii/release-1772875617
🤖 Automatically merge the PR into the develop branch.
2026-03-07 10:27:06 +01:00
JC5
c86562554b 🤖 Auto commit for release 'develop' on 2026-03-07 2026-03-07 10:26:58 +01:00
James Cole
19b548a417 Fix null type issues. 2026-03-07 10:20:06 +01:00
James Cole
71698b36e2 Fix various phpstan issues. 2026-03-07 10:17:07 +01:00
github-actions[bot]
f65ee4d419 Merge pull request #11901 from firefly-iii/release-1772861474
🤖 Automatically merge the PR into the develop branch.
2026-03-07 06:31:23 +01:00
JC5
535fd9777a 🤖 Auto commit for release 'develop' on 2026-03-07 2026-03-07 06:31:14 +01:00
James Cole
5d1fde9cf7 Clean up more errors. 2026-03-07 06:26:08 +01:00
James Cole
922f1e7c1a Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2026-03-07 06:25:45 +01:00
github-actions[bot]
ef5c35c04d Merge pull request #11900 from firefly-iii/release-1772860900
🤖 Automatically merge the PR into the develop branch.
2026-03-07 06:21:47 +01:00
JC5
4dfbdc644c 🤖 Auto commit for release 'develop' on 2026-03-07 2026-03-07 06:21:40 +01:00
James Cole
4a3f45e125 Add empty array 2026-03-07 06:15:55 +01:00
github-actions[bot]
a08f776ffa Merge pull request #11897 from firefly-iii/release-1772828319
🤖 Automatically merge the PR into the develop branch.
2026-03-06 21:18:48 +01:00
JC5
e246c1f4b7 🤖 Auto commit for release 'develop' on 2026-03-06 2026-03-06 21:18:39 +01:00
github-actions[bot]
f2d1e8e184 Merge pull request #11896 from firefly-iii/release-1772825547
🤖 Automatically merge the PR into the develop branch.
2026-03-06 20:32:37 +01:00
JC5
19d8f46f24 🤖 Auto commit for release 'develop' on 2026-03-06 2026-03-06 20:32:27 +01:00
James Cole
9ac991edd7 Fix phpstan issues. 2026-03-06 20:25:07 +01:00
github-actions[bot]
e85f06792b Merge pull request #11889 from firefly-iii/release-1772807505
🤖 Automatically merge the PR into the develop branch.
2026-03-06 15:31:55 +01:00
JC5
b66f95f1dc 🤖 Auto commit for release 'develop' on 2026-03-06 2026-03-06 15:31:45 +01:00
James Cole
4d63146524 Fix more phpstan issues. 2026-03-06 15:24:35 +01:00
James Cole
695f990236 Correct phpstan errors. 2026-03-06 15:18:49 +01:00
James Cole
e882530a69 Clean up various phpstan issues. 2026-03-06 13:52:11 +01:00
James Cole
993a2491e9 Clean up some phpstan issues. 2026-03-06 11:46:04 +01:00
James Cole
f6ea517b5d Fix https://github.com/orgs/firefly-iii/discussions/11879 2026-03-06 11:41:18 +01:00
github-actions[bot]
6f4143bb79 Merge pull request #11888 from firefly-iii/develop
🤖 Automatically merge the PR into the main branch.
2026-03-06 10:07:42 +01:00
github-actions[bot]
4a2c77c6b7 Merge pull request #11887 from firefly-iii/release-1772788047
🤖 Automatically merge the PR into the develop branch.
2026-03-06 10:07:36 +01:00
JC5
0e62f980b0 🤖 Auto commit for release 'v6.5.4' on 2026-03-06 2026-03-06 10:07:27 +01:00
James Cole
41533fd922 Clean up changelog. 2026-03-06 10:01:32 +01:00
James Cole
d6b5fbe341 Expand changelog. 2026-03-06 08:02:30 +01:00
github-actions[bot]
1047e3290b Merge pull request #11886 from firefly-iii/release-1772780441
🤖 Automatically merge the PR into the develop branch.
2026-03-06 08:00:49 +01:00
JC5
8ac4c535b4 🤖 Auto commit for release 'develop' on 2026-03-06 2026-03-06 08:00:41 +01:00
James Cole
2c997d8d95 Removed last phpstan errors 2026-03-06 07:55:04 +01:00
James Cole
419382f9e0 Remove broken code. 2026-03-06 07:45:28 +01:00
James Cole
12f19c6c34 Remove all "@phpstan-ignore-line" entries. 2026-03-06 07:39:12 +01:00
github-actions[bot]
705138aa27 Merge pull request #11885 from firefly-iii/release-1772775428
🤖 Automatically merge the PR into the develop branch.
2026-03-06 06:37:15 +01:00
JC5
36d20137b2 🤖 Auto commit for release 'develop' on 2026-03-06 2026-03-06 06:37:08 +01:00
James Cole
7f08a3f594 Use safe function. 2026-03-06 06:21:36 +01:00
James Cole
a897229958 Add changelog for v6.5.4 2026-03-06 06:12:15 +01:00
James Cole
1fa4632be5 Fix transaction search. 2026-03-06 06:03:12 +01:00
James Cole
221a00a23b Add debug info to track available budget creation. 2026-03-06 05:36:05 +01:00
James Cole
09c3318408 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2026-03-05 20:50:32 +01:00
Sander Dorigo
25ba87babb Better validation for webhook URLs 2026-03-05 10:11:09 +01:00
James Cole
d7e9a42f58 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2026-03-04 20:24:25 +01:00
James Cole
8fd6d99c11 Fix date issues in piggy banks for #11873 2026-03-04 20:21:12 +01:00
github-actions[bot]
463ae00ec2 Merge pull request #11876 from firefly-iii/release-1772642273
🤖 Automatically merge the PR into the develop branch.
2026-03-04 17:38:02 +01:00
JC5
969460d271 🤖 Auto commit for release 'develop' on 2026-03-04 2026-03-04 17:37:53 +01:00
James Cole
8ecfa4b619 Fix #11873 2026-03-04 17:31:42 +01:00
James Cole
55ae86ad62 Merge branch 'main' into develop 2026-03-04 17:28:57 +01:00
github-actions[bot]
5e68d948f3 Merge pull request #11874 from firefly-iii/release-1772634907
🤖 Automatically merge the PR into the develop branch.
2026-03-04 15:35:20 +01:00
JC5
77cae13b95 🤖 Auto commit for release 'develop' on 2026-03-04 2026-03-04 15:35:07 +01:00
Sander Dorigo
49d8a3c32e Catch not numeric numbers 2026-03-04 15:25:32 +01:00
github-actions[bot]
0ad4db8a71 Merge pull request #11872 from firefly-iii/release-1772618461
🤖 Automatically merge the PR into the develop branch.
2026-03-04 11:01:10 +01:00
JC5
ed9754c8d4 🤖 Auto commit for release 'develop' on 2026-03-04 2026-03-04 11:01:01 +01:00
James Cole
7315825475 Update CI workflow to manage environment file
Copy .env.example to .env before running CI and remove .env afterward.

Signed-off-by: James Cole <james@firefly-iii.org>
2026-03-04 10:55:56 +01:00
James Cole
eea23ed756 Update composer update command in CI workflow
Removed the '--no-plugins' option from composer update command.

Signed-off-by: James Cole <james@firefly-iii.org>
2026-03-04 10:42:51 +01:00
James Cole
04875728b4 Remove staticMethod.notFound from ignoreErrors
Signed-off-by: James Cole <james@firefly-iii.org>
2026-03-04 10:42:22 +01:00
James Cole
1fa51a92c6 Ignore staticMethod.notFound error in PHPStan
Signed-off-by: James Cole <james@firefly-iii.org>
2026-03-04 10:24:47 +01:00
Sander Dorigo
f8687d4fc1 New config 2026-03-04 10:01:24 +01:00
James Cole
9b5cf09cc0 Update release.yml to enforce error handling
Removed '|| true' from Mago format, PHPCS, and lint commands to ensure they fail the workflow if errors occur.

Signed-off-by: James Cole <james@firefly-iii.org>
2026-03-04 09:26:08 +01:00
github-actions[bot]
268377ad3a Merge pull request #11870 from firefly-iii/develop
🤖 Automatically merge the PR into the main branch.
2026-03-04 07:52:49 +01:00
github-actions[bot]
93500b8156 Merge pull request #11869 from firefly-iii/release-1772607152
🤖 Automatically merge the PR into the develop branch.
2026-03-04 07:52:42 +01:00
JC5
8a3fb50607 🤖 Auto commit for release 'v6.5.3' on 2026-03-04 2026-03-04 07:52:32 +01:00
github-actions[bot]
8a8567c3e4 Merge pull request #11868 from firefly-iii/release-1772605365
🤖 Automatically merge the PR into the develop branch.
2026-03-04 07:22:52 +01:00
JC5
7922671463 🤖 Auto commit for release 'develop' on 2026-03-04 2026-03-04 07:22:45 +01:00
James Cole
3baa1ccd78 Update changelog. 2026-03-04 07:17:36 +01:00
James Cole
4beef8be86 Merge branch 'main' into develop 2026-03-04 07:14:11 +01:00
github-actions[bot]
0aea8875d4 Merge pull request #11867 from firefly-iii/release-1772603927
🤖 Automatically merge the PR into the develop branch.
2026-03-04 06:58:56 +01:00
JC5
773e2ac262 🤖 Auto commit for release 'develop' on 2026-03-04 2026-03-04 06:58:47 +01:00
James Cole
912a9f1ea7 Fix workflow for now. 2026-03-04 06:53:52 +01:00
James Cole
5a7cf58802 Merge branch 'main' into develop 2026-03-04 06:52:26 +01:00
James Cole
63ab0fba8d Fix calls to isset 2026-03-04 06:52:20 +01:00
James Cole
42f4eb448d Expand release workflow. 2026-03-04 06:44:28 +01:00
James Cole
b07b0dc69a Expand release thing. 2026-03-04 06:40:32 +01:00
James Cole
41ed650336 Fix all errors. 2026-03-04 06:38:33 +01:00
James Cole
7d67fe52f9 Fix phpstan issues. 2026-03-04 06:34:04 +01:00
James Cole
48f039a275 Add some logging. 2026-03-04 06:13:25 +01:00
James Cole
8cace91ae1 Merge branch 'develop' of github.com:firefly-iii/firefly-iii into develop 2026-03-04 06:13:04 +01:00
James Cole
bf5eef61e4 Merge pull request #11862 from dakennguyen/return-primary-currency-info
Return currency info for tag journals
2026-03-04 06:11:36 +01:00
James Cole
fdeffc2978 More fixes. 2026-03-03 20:38:28 +01:00
James Cole
f72fe58271 Fix more issues. 2026-03-03 20:37:35 +01:00
James Cole
99c9123770 More clean up according to Mago. 2026-03-03 20:35:51 +01:00
James Cole
47b02b30ea Code cleanup as recommended by Mago. 2026-03-03 20:33:02 +01:00
Khoa Nguyen
5f171e36ab Return currency info for tag journals 2026-03-03 18:19:29 +01:00
James Cole
a352ae54b6 Different word 2026-03-03 17:24:38 +01:00
James Cole
72b746d437 Fix spelling 2026-03-03 17:23:48 +01:00
James Cole
18afac99af Merge branch 'main' into develop 2026-03-03 17:23:26 +01:00
James Cole
3c6e03dbb0 Enhance README with digital sovereignty message
Added a section highlighting the importance of digital sovereignty and Firefly III's European roots.

Signed-off-by: James Cole <james@firefly-iii.org>
2026-03-03 16:38:29 +01:00
James Cole
ea8d98481f Add image 2026-03-03 16:32:10 +01:00
James Cole
afd0dd0758 Fix bad class call. 2026-03-03 16:30:17 +01:00
github-actions[bot]
0ba2cb5274 Merge pull request #11860 from firefly-iii/develop
🤖 Automatically merge the PR into the main branch.
2026-03-03 06:42:14 +01:00
github-actions[bot]
7d8dc21722 Merge pull request #11859 from firefly-iii/release-1772516521
🤖 Automatically merge the PR into the develop branch.
2026-03-03 06:42:09 +01:00
JC5
43ea2ab88a 🤖 Auto commit for release 'v6.5.2' on 2026-03-03 2026-03-03 06:42:01 +01:00
715 changed files with 2938 additions and 2624 deletions

View File

@@ -1264,16 +1264,16 @@
},
{
"name": "symfony/console",
"version": "v8.0.6",
"version": "v8.0.7",
"source": {
"type": "git",
"url": "https://github.com/symfony/console.git",
"reference": "488285876e807a4777f074041d8bb508623419fa"
"reference": "15ed9008a4ebe2d6a78e4937f74e0c13ef2e618a"
},
"dist": {
"type": "zip",
"url": "https://api.github.com/repos/symfony/console/zipball/488285876e807a4777f074041d8bb508623419fa",
"reference": "488285876e807a4777f074041d8bb508623419fa",
"url": "https://api.github.com/repos/symfony/console/zipball/15ed9008a4ebe2d6a78e4937f74e0c13ef2e618a",
"reference": "15ed9008a4ebe2d6a78e4937f74e0c13ef2e618a",
"shasum": ""
},
"require": {
@@ -1330,7 +1330,7 @@
"terminal"
],
"support": {
"source": "https://github.com/symfony/console/tree/v8.0.6"
"source": "https://github.com/symfony/console/tree/v8.0.7"
},
"funding": [
{
@@ -1350,7 +1350,7 @@
"type": "tidelift"
}
],
"time": "2026-02-25T16:59:43+00:00"
"time": "2026-03-06T14:06:22+00:00"
},
{
"name": "symfony/deprecation-contracts",

View File

@@ -1,30 +1,66 @@
parameters:
ergebnis:
noExtends:
enabled: false
final:
enabled: false
noParameterWithNullDefaultValue:
enabled: false
noParameterWithNullableTypeDeclaration:
enabled: false
noCompact:
enabled: false
noSwitch:
enabled: false
noNullableReturnTypeDeclaration:
enabled: false
finalInAbstractClass:
enabled: false
noConstructorParameterWithDefaultValue:
enabled: false
noNamedArgument:
enabled: false
noParameterWithContainerTypeDeclaration:
enabled: false
paths:
- ../app
- ../database
- ../routes
- ../config
- ../bootstrap/app.php
- ../bootstrap/providers.php
universalObjectCratesClasses:
- Illuminate\Database\Eloquent\Model
reportUnmatchedIgnoredErrors: true
ignoreErrors:
# all errors below I will never fix.
- '#expects view-string\|null, string given#'
- '#expects view-string, string given#'
- "#Parameter \\#[1-2] \\$num[1-2] of function bc[a-z]+ expects numeric-string, [a-z\\-|&]+ given#"
# ignore everything but things that BREAK
- identifier: property.deprecated
- identifier: method.deprecated
- identifier: cast.useless
- identifier: argument.type
# all errors below I will (probably) never fix.
- identifier: property.unusedType # one false positive
- identifier: varTag.nativeType # dont even know what im supposed to fix.
- identifier: method.notFound # way too many false positives
- identifier: catch.neverThrown # plenty of errors that are thrown undocumented
- identifier: staticMethod.dynamicName # dont care
- identifier: arguments.count # one false positive
- identifier: property.notFound # false positives
- identifier: method.dynamicName # i dont care
- identifier: staticMethod.dynamicCall # many false positives.
- identifier: argument.templateType # no clue how to fix single occurrence.
# - '#expects view-string\|null, string given#'
# - '#expects view-string, string given#'
# - "#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
path: ../app/Console/Commands/System/CreatesDatabase.php
- identifier: missingType.iterableValue # not interesting enough to fix.
- identifier: varTag.type # needs a custom extension for every repository, not gonna happen.
- '#Dynamic call to static method Illuminate#'
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::before#' # is custom scope
- '#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
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::accountTypeIn#' # is a custom scope
- '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\BelongsTo::withTrashed#' # is to allow soft delete
# - '#Dynamic call to static method Illuminate#'
# - '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::before#' # is custom scope
# - '#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
# - '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\HasMany::accountTypeIn#' # is a custom scope
# - '#Call to an undefined method Illuminate\\Database\\Eloquent\\Relations\\BelongsTo::withTrashed#' # is to allow soft delete
# The level 8 is the highest level. original was 5
# 7 is more than enough, higher just leaves NULL things.

BIN
.github/assets/img/europe.png vendored Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 3.6 KiB

View File

@@ -33,7 +33,7 @@ jobs:
with:
fetch-depth: 0
- name: Import GPG key
uses: crazy-max/ghaction-import-gpg@v6
uses: crazy-max/ghaction-import-gpg@v7
with:
gpg_private_key: ${{ secrets.GPG_PRIVATE_KEY }}
passphrase: ${{ secrets.PASSPHRASE }}
@@ -174,12 +174,24 @@ jobs:
uses: nhedger/setup-mago@v1
- name: Run CI
run: |
cp .env.example .env
# install all packages etc.
rm -rf vendor composer.lock
composer update --no-scripts --no-plugins -q
mago format || true
# mago analyze --reporting-format=github || true
composer update --no-scripts -q
# format code.
echo "Will now run Mago Format"
mago format
sudo chown -R runner:docker resources/lang
.ci/phpcs.sh || true
echo "Will now run PHPCS"
.ci/phpcs.sh
# lint and check
echo "Will now run Mago Lint"
mago lint
echo "Will now run PHPstan"
.ci/phpstan.sh
rm .env
- name: Calculate variables
run: |

View File

@@ -41,7 +41,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class AccountController
*/
class AccountController extends Controller
final class AccountController extends Controller
{
use AccountFilter;
@@ -80,16 +80,16 @@ class AccountController extends Controller
public function accounts(AutocompleteApiRequest $request): JsonResponse
{
// Log::debug('Before All.');
['types' => $types, 'query' => $query, 'date' => $date, 'limit' => $limit] = $request->attributes->all();
['types' => $types, 'query' => $query, 'date' => $date, 'limit' => $limit] = $request->attributes->all();
$date ??= today(config('app.timezone'));
// set date to end-of-day for account balance. so it is at $date 23:59:59
$date->endOfDay();
$return = [];
$result = $this->repository->searchAccount((string) $query, $types, $limit);
$allBalances = Steam::accountsBalancesOptimized($result, $date, $this->primaryCurrency, $this->convertToPrimary);
$return = [];
$result = $this->repository->searchAccount((string) $query, $types, $limit);
$allBalances = Steam::accountsBalancesOptimized($result, $date, $this->primaryCurrency, $this->convertToPrimary);
/** @var Account $account */
foreach ($result as $account) {

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class BillController
*/
class BillController extends Controller
final class BillController extends Controller
{
private BillRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_SUBSCRIPTIONS];
@@ -63,7 +63,7 @@ class BillController extends Controller
public function bills(AutocompleteApiRequest $request): JsonResponse
{
$result = $this->repository->searchBill($request->attributes->get('query'), $request->attributes->get('limit'));
$filtered = $result->map(static fn (Bill $item): array => ['id' => (string) $item->id, 'name' => $item->name, 'active' => $item->active]);
$filtered = $result->map(static fn (Bill $item): array => ['id' => (string) $item->id, 'name' => $item->name, 'active' => $item->active]);
return response()->api($filtered->toArray());
}

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class BudgetController
*/
class BudgetController extends Controller
final class BudgetController extends Controller
{
private BudgetRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_BUDGETS];
@@ -63,7 +63,7 @@ class BudgetController extends Controller
public function budgets(AutocompleteApiRequest $request): JsonResponse
{
$result = $this->repository->searchBudget($request->attributes->get('query'), $request->attributes->get('limit'));
$filtered = $result->map(static fn (Budget $item): array => ['id' => (string) $item->id, 'name' => $item->name, 'active' => $item->active]);
$filtered = $result->map(static fn (Budget $item): array => ['id' => (string) $item->id, 'name' => $item->name, 'active' => $item->active]);
return response()->api($filtered->toArray());
}

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class CategoryController
*/
class CategoryController extends Controller
final class CategoryController extends Controller
{
private CategoryRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
@@ -63,7 +63,7 @@ class CategoryController extends Controller
public function categories(AutocompleteApiRequest $request): JsonResponse
{
$result = $this->repository->searchCategory($request->attributes->get('query'), $request->attributes->get('limit'));
$filtered = $result->map(static fn (Category $item): array => ['id' => (string) $item->id, 'name' => $item->name]);
$filtered = $result->map(static fn (Category $item): array => ['id' => (string) $item->id, 'name' => $item->name]);
return response()->api($filtered->toArray());
}

View File

@@ -37,7 +37,7 @@ use Illuminate\Http\Request;
/**
* Class CurrencyController
*/
class CurrencyController extends Controller
final class CurrencyController extends Controller
{
private CurrencyRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class ObjectGroupController
*/
class ObjectGroupController extends Controller
final class ObjectGroupController extends Controller
{
private ObjectGroupRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
@@ -67,7 +67,7 @@ class ObjectGroupController extends Controller
/** @var ObjectGroup $objectGroup */
foreach ($result as $objectGroup) {
$return[] = ['id' => (string) $objectGroup->id, 'name' => $objectGroup->title, 'title' => $objectGroup->title];
$return[] = ['id' => (string) $objectGroup->id, 'name' => $objectGroup->title, 'title' => $objectGroup->title];
}
return response()->api($return);

View File

@@ -38,7 +38,7 @@ use Illuminate\Http\Request;
/**
* Class PiggyBankController
*/
class PiggyBankController extends Controller
final class PiggyBankController extends Controller
{
private AccountRepositoryInterface $accountRepository;
private PiggyBankRepositoryInterface $piggyRepository;

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class RecurrenceController
*/
class RecurrenceController extends Controller
final class RecurrenceController extends Controller
{
private RecurringRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_RECURRING];

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class RuleController
*/
class RuleController extends Controller
final class RuleController extends Controller
{
private RuleRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_RULES];

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class RuleGroupController
*/
class RuleGroupController extends Controller
final class RuleGroupController extends Controller
{
private RuleGroupRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_RULES];

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class TagController
*/
class TagController extends Controller
final class TagController extends Controller
{
private TagRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
@@ -63,7 +63,7 @@ class TagController extends Controller
/** @var Tag $tag */
foreach ($result as $tag) {
$array[] = ['id' => (string) $tag->id, 'name' => $tag->tag, 'tag' => $tag->tag];
$array[] = ['id' => (string) $tag->id, 'name' => $tag->tag, 'tag' => $tag->tag];
}
return response()->api($array);

View File

@@ -39,7 +39,7 @@ use Illuminate\Support\Collection;
/**
* Class TransactionController
*/
class TransactionController extends Controller
final class TransactionController extends Controller
{
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
private TransactionGroupRepositoryInterface $groupRepository;

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\Request;
/**
* Class TransactionTypeController
*/
class TransactionTypeController extends Controller
final class TransactionTypeController extends Controller
{
private TransactionTypeRepositoryInterface $repository;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];
@@ -62,7 +62,7 @@ class TransactionTypeController extends Controller
/** @var TransactionType $type */
foreach ($types as $type) {
// different key for consistency.
$array[] = ['id' => (string) $type->id, 'name' => $type->type, 'type' => $type->type];
$array[] = ['id' => (string) $type->id, 'name' => $type->type, 'type' => $type->type];
}
return response()->api($array);

View File

@@ -44,7 +44,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class AccountController
*/
class AccountController extends Controller
final class AccountController extends Controller
{
use ApiSupport;
use CleansChartData;

View File

@@ -40,7 +40,7 @@ use Illuminate\Http\Request;
/**
* Class BalanceController
*/
class BalanceController extends Controller
final class BalanceController extends Controller
{
use CleansChartData;
use CollectsAccountsFromFilter;

View File

@@ -47,7 +47,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class BudgetController
*/
class BudgetController extends Controller
final class BudgetController extends Controller
{
use CleansChartData;
use ValidatesUserGroupTrait;
@@ -220,7 +220,7 @@ class BudgetController extends Controller
'end_date' => $row['end'],
'yAxisID' => 0,
'type' => 'bar',
'entries' => ['budgeted' => $row['budgeted'], 'spent' => $row['spent'], 'left' => $row['left'], 'overspent' => $row['overspent']],
'entries' => ['budgeted' => $row['budgeted'], 'spent' => $row['spent'], 'left' => $row['left'], 'overspent' => $row['overspent']],
'pc_entries' => [
'budgeted' => $row['pc_budgeted'],
'spent' => $row['pc_spent'],

View File

@@ -45,7 +45,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class BudgetController
*/
class CategoryController extends Controller
final class CategoryController extends Controller
{
use CleansChartData;
use ValidatesUserGroupTrait;
@@ -153,8 +153,8 @@ class CategoryController extends Controller
'end_date' => $end->toAtomString(),
'yAxisID' => 0,
'type' => 'bar',
'entries' => ['spent' => '0', 'earned' => '0'],
'pc_entries' => ['spent' => '0', 'earned' => '0'],
'entries' => ['spent' => '0', 'earned' => '0'],
'pc_entries' => ['spent' => '0', 'earned' => '0'],
];
// add monies

View File

@@ -63,6 +63,8 @@ abstract class Controller extends BaseController
use ValidatesRequests;
use ValidatesUserGroupTrait;
protected array $acceptedRoles = [];
protected const string CONTENT_TYPE = 'application/vnd.api+json';
protected const string JSON_CONTENT_TYPE = 'application/json';
@@ -169,6 +171,9 @@ abstract class Controller extends BaseController
return $manager->createData($resource)->toArray();
}
/**
* @deprecated
*/
#[Deprecated(message: <<<'TXT'
use Request classes
Method to grab all parameters from the URL
@@ -222,11 +227,8 @@ abstract class Controller extends BaseController
$value = min(max(1, $value), 2 ** 16);
$bag->set($integer, $value);
}
if (
null === $value
&& 'limit' === $integer // @phpstan-ignore-line
&& auth()->check()
) {
// && 'limit' === $integer
if (null === $value && auth()->check()) {
// set default for user:
/** @var User $user */
$user = auth()->user();

View File

@@ -42,7 +42,7 @@ use Illuminate\Http\Request;
* Because this is a security nightmare waiting to happen validation
* is pretty strict.
*/
class TransactionController extends Controller
final class TransactionController extends Controller
{
private AccountRepositoryInterface $repository;

View File

@@ -54,7 +54,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private bool $unused;

View File

@@ -38,7 +38,7 @@ use function Safe\date;
/**
* Class ExportController
*/
class ExportController extends Controller
final class ExportController extends Controller
{
private ExportDataGenerator $exporter;
protected array $acceptedRoles = [UserRoleEnum::READ_ONLY];

View File

@@ -44,7 +44,7 @@ use Illuminate\Http\Request;
/**
* Class PurgeController
*/
class PurgeController extends Controller
final class PurgeController extends Controller
{
protected array $acceptedRoles = [UserRoleEnum::FULL];

View File

@@ -37,7 +37,7 @@ use Illuminate\Http\JsonResponse;
* Shows expense information grouped or limited by date.
* I.e. all expenses grouped by account + currency.
*/
class AccountController extends Controller
final class AccountController extends Controller
{
use ApiSupport;

View File

@@ -36,7 +36,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class BillController
*/
class BillController extends Controller
final class BillController extends Controller
{
private BillRepositoryInterface $repository;

View File

@@ -36,7 +36,7 @@ use Illuminate\Support\Collection;
/**
* Class BudgetController
*/
class BudgetController extends Controller
final class BudgetController extends Controller
{
private NoBudgetRepositoryInterface $noRepository;
private OperationsRepositoryInterface $opsRepository;

View File

@@ -36,7 +36,7 @@ use Illuminate\Support\Collection;
/**
* Class CategoryController
*/
class CategoryController extends Controller
final class CategoryController extends Controller
{
private NoCategoryRepositoryInterface $noRepository;
private OperationsRepositoryInterface $opsRepository;

View File

@@ -35,7 +35,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class PeriodController
*/
class PeriodController extends Controller
final class PeriodController extends Controller
{
public function total(GenericRequest $request): JsonResponse
{

View File

@@ -36,7 +36,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class TagController
*/
class TagController extends Controller
final class TagController extends Controller
{
private TagRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use Illuminate\Http\JsonResponse;
* Shows income information grouped or limited by date.
* I.e. all income grouped by account + currency.
*/
class AccountController extends Controller
final class AccountController extends Controller
{
use ApiSupport;

View File

@@ -36,7 +36,7 @@ use Illuminate\Support\Collection;
/**
* Class CategoryController
*/
class CategoryController extends Controller
final class CategoryController extends Controller
{
private NoCategoryRepositoryInterface $noRepository;
private OperationsRepositoryInterface $opsRepository;

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class PeriodController
*/
class PeriodController extends Controller
final class PeriodController extends Controller
{
public function total(GenericRequest $request): JsonResponse
{

View File

@@ -36,7 +36,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class TagController
*/
class TagController extends Controller
final class TagController extends Controller
{
private TagRepositoryInterface $repository;

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class AccountController
*/
class AccountController extends Controller
final class AccountController extends Controller
{
use ApiSupport;

View File

@@ -36,7 +36,7 @@ use Illuminate\Support\Collection;
/**
* Class CategoryController
*/
class CategoryController extends Controller
final class CategoryController extends Controller
{
private NoCategoryRepositoryInterface $noRepository;
private OperationsRepositoryInterface $opsRepository;

View File

@@ -35,7 +35,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class PeriodController
*/
class PeriodController extends Controller
final class PeriodController extends Controller
{
public function total(GenericRequest $request): JsonResponse
{

View File

@@ -36,7 +36,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class TagController
*/
class TagController extends Controller
final class TagController extends Controller
{
private TagRepositoryInterface $repository;

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
public const string RESOURCE_KEY = 'accounts';

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers\Models\Account;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Models\Transaction\ListRequest;
use FireflyIII\Api\V1\Requests\Generic\PaginationDateRangeRequest;
use FireflyIII\Api\V1\Requests\PaginationRequest;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\Account;
@@ -46,7 +46,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
use TransactionFilter;
@@ -70,21 +70,21 @@ class ListController extends Controller
public function attachments(PaginationRequest $request, Account $account): JsonResponse
{
$manager = $this->getManager();
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
$collection = $this->repository->getAttachments($account);
$manager = $this->getManager();
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
$collection = $this->repository->getAttachments($account);
$count = $collection->count();
$attachments = $collection->slice($offset, $limit);
$count = $collection->count();
$attachments = $collection->slice($offset, $limit);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
$paginator->setPath(route('api.v1.accounts.attachments', [$account->id]).$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer = app(AttachmentTransformer::class);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -93,31 +93,31 @@ class ListController extends Controller
public function piggyBanks(PaginationRequest $request, Account $account): JsonResponse
{
// create some objects:
$manager = $this->getManager();
$manager = $this->getManager();
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
// get list of piggy banks. Count it and split it.
$collection = $this->repository->getPiggyBanks($account);
$count = $collection->count();
$piggyBanks = $collection->slice($offset, $limit);
$collection = $this->repository->getPiggyBanks($account);
$count = $collection->count();
$piggyBanks = $collection->slice($offset, $limit);
// enrich
/** @var User $admin */
$admin = auth()->user();
$enrichment = new PiggyBankEnrichment();
$admin = auth()->user();
$enrichment = new PiggyBankEnrichment();
$enrichment->setUser($admin);
$piggyBanks = $enrichment->enrich($piggyBanks);
$piggyBanks = $enrichment->enrich($piggyBanks);
// make paginator:
$paginator = new LengthAwarePaginator($piggyBanks, $count, $limit, $page);
$paginator = new LengthAwarePaginator($piggyBanks, $count, $limit, $page);
$paginator->setPath(route('api.v1.accounts.piggy-banks', [$account->id]).$this->buildParams());
/** @var PiggyBankTransformer $transformer */
$transformer = app(PiggyBankTransformer::class);
$transformer = app(PiggyBankTransformer::class);
// $transformer->setParameters($this->parameters);
$resource = new FractalCollection($piggyBanks, $transformer, 'piggy-banks');
$resource = new FractalCollection($piggyBanks, $transformer, 'piggy-banks');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -126,18 +126,18 @@ class ListController extends Controller
/**
* Show all transaction groups related to the account.
*/
public function transactions(ListRequest $request, Account $account): JsonResponse
public function transactions(PaginationDateRangeRequest $request, Account $account): JsonResponse
{
['limit' => $limit, 'page' => $page, 'start' => $start, 'end' => $end, 'type' => $type] = $request->attributes->all();
$types = $this->mapTransactionTypes($type ?? 'default');
$manager = $this->getManager();
['limit' => $limit, 'page' => $page, 'start' => $start, 'end' => $end, 'type' => $type] = $request->attributes->all();
$types = $this->mapTransactionTypes($type ?? 'default');
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector->setUser($admin)->setAccounts(new Collection()->push($account))->withAPIInformation()->setLimit($limit)->setPage($page)->setTypes($types);
if (null !== $start) {
$collector->setStart($start);
@@ -146,18 +146,18 @@ class ListController extends Controller
$collector->setEnd($end);
}
$paginator = $collector->getPaginatedGroups();
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.accounts.transactions', [$account->id]).$this->buildParams());
// enrich
$enrichment = new TransactionGroupEnrichment();
$enrichment = new TransactionGroupEnrichment();
$enrichment->setUser($admin);
$transactions = $enrichment->enrich($paginator->getCollection());
$transactions = $enrichment->enrich($paginator->getCollection());
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -41,7 +41,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
use AccountFilter;
@@ -124,22 +124,22 @@ class ShowController extends Controller
// get list of accounts. Count it and split it.
$this->repository->resetAccountOrder();
$account->refresh();
$manager = $this->getManager();
['start' => $start, 'end' => $end, 'date' => $date] = $request->attributes->all();
$manager = $this->getManager();
['start' => $start, 'end' => $end, 'date' => $date] = $request->attributes->all();
// enrich
/** @var User $admin */
$admin = auth()->user();
$enrichment = new AccountEnrichment();
$admin = auth()->user();
$enrichment = new AccountEnrichment();
$enrichment->setDate($date);
$enrichment->setStart($start);
$enrichment->setEnd($end);
$enrichment->setUser($admin);
$account = $enrichment->enrichSingle($account);
$account = $enrichment->enrichSingle($account);
/** @var AccountTransformer $transformer */
$transformer = app(AccountTransformer::class);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
$transformer = app(AccountTransformer::class);
$resource = new Item($account, $transformer, self::RESOURCE_KEY);
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -36,7 +36,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
public const string RESOURCE_KEY = 'accounts';

View File

@@ -39,7 +39,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
public const string RESOURCE_KEY = 'accounts';

View File

@@ -37,7 +37,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private AttachmentRepositoryInterface $repository;

View File

@@ -44,7 +44,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private AttachmentRepositoryInterface $repository;
@@ -121,7 +121,7 @@ class ShowController extends Controller
*/
public function index(PaginationRequest $request): JsonResponse
{
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
if (true === auth()->user()->hasRole('demo')) {
Log::channel('audit')->warning(sprintf('Demo user tries to access attachment API in %s', __METHOD__));
@@ -129,21 +129,21 @@ class ShowController extends Controller
throw new NotFoundHttpException();
}
$manager = $this->getManager();
$manager = $this->getManager();
// get list of attachments. Count it and split it.
$collection = $this->repository->get();
$count = $collection->count();
$attachments = $collection->slice($offset, $limit);
$collection = $this->repository->get();
$count = $collection->count();
$attachments = $collection->slice($offset, $limit);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
$paginator->setPath(route('api.v1.attachments.index').$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer = app(AttachmentTransformer::class);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -42,7 +42,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private AttachmentRepositoryInterface $repository;

View File

@@ -39,7 +39,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private AttachmentRepositoryInterface $repository;

View File

@@ -40,7 +40,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private AvailableBudgetRepositoryInterface $abRepository;
@@ -68,29 +68,29 @@ class ShowController extends Controller
*/
public function index(PaginationDateRangeRequest $request): JsonResponse
{
$manager = $this->getManager();
['limit' => $limit, 'offset' => $offset, 'page' => $page, 'start' => $start, 'end' => $end] = $request->attributes->all();
$manager = $this->getManager();
['limit' => $limit, 'offset' => $offset, 'page' => $page, 'start' => $start, 'end' => $end] = $request->attributes->all();
// get list of available budgets. Count it and split it.
$collection = $this->abRepository->getAvailableBudgetsByDate($start, $end);
$count = $collection->count();
$availableBudgets = $collection->slice($offset, $limit);
$collection = $this->abRepository->getAvailableBudgetsByDate($start, $end);
$count = $collection->count();
$availableBudgets = $collection->slice($offset, $limit);
// enrich
/** @var User $admin */
$admin = auth()->user();
$enrichment = new AvailableBudgetEnrichment();
$admin = auth()->user();
$enrichment = new AvailableBudgetEnrichment();
$enrichment->setUser($admin);
$availableBudgets = $enrichment->enrich($availableBudgets);
$availableBudgets = $enrichment->enrich($availableBudgets);
// make paginator:
$paginator = new LengthAwarePaginator($availableBudgets, $count, $limit, $page);
$paginator = new LengthAwarePaginator($availableBudgets, $count, $limit, $page);
$paginator->setPath(route('api.v1.available-budgets.index').$this->buildParams());
/** @var AvailableBudgetTransformer $transformer */
$transformer = app(AvailableBudgetTransformer::class);
$transformer = app(AvailableBudgetTransformer::class);
$resource = new FractalCollection($availableBudgets, $transformer, 'available_budgets');
$resource = new FractalCollection($availableBudgets, $transformer, 'available_budgets');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private BillRepositoryInterface $repository;

View File

@@ -44,7 +44,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
use TransactionFilter;
@@ -72,21 +72,21 @@ class ListController extends Controller
*/
public function attachments(PaginationRequest $request, Bill $bill): JsonResponse
{
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
$manager = $this->getManager();
$collection = $this->repository->getAttachments($bill);
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
$manager = $this->getManager();
$collection = $this->repository->getAttachments($bill);
$count = $collection->count();
$attachments = $collection->slice($offset, $limit);
$count = $collection->count();
$attachments = $collection->slice($offset, $limit);
// make paginator:
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
$paginator = new LengthAwarePaginator($attachments, $count, $limit, $page);
$paginator->setPath(route('api.v1.bills.attachments', [$bill->id]).$this->buildParams());
/** @var AttachmentTransformer $transformer */
$transformer = app(AttachmentTransformer::class);
$transformer = app(AttachmentTransformer::class);
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource = new FractalCollection($attachments, $transformer, 'attachments');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -100,20 +100,20 @@ class ListController extends Controller
*/
public function rules(PaginationRequest $request, Bill $bill): JsonResponse
{
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
['limit' => $limit, 'offset' => $offset, 'page' => $page] = $request->attributes->all();
$manager = $this->getManager();
$collection = $this->repository->getRulesForBill($bill);
$count = $collection->count();
$rules = $collection->slice($offset, $limit);
$manager = $this->getManager();
$collection = $this->repository->getRulesForBill($bill);
$count = $collection->count();
$rules = $collection->slice($offset, $limit);
// make paginator:
$paginator = new LengthAwarePaginator($rules, $count, $limit, $page);
$paginator = new LengthAwarePaginator($rules, $count, $limit, $page);
$paginator->setPath(route('api.v1.bills.rules', [$bill->id]).$this->buildParams());
/** @var RuleTransformer $transformer */
$transformer = app(RuleTransformer::class);
$resource = new FractalCollection($rules, $transformer, 'rules');
$transformer = app(RuleTransformer::class);
$resource = new FractalCollection($rules, $transformer, 'rules');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -127,16 +127,16 @@ class ListController extends Controller
*/
public function transactions(PaginationDateRangeRequest $request, Bill $bill): JsonResponse
{
['limit' => $limit, 'page' => $page, 'types' => $types, 'start' => $start, 'end' => $end] = $request->attributes->all();
['limit' => $limit, 'page' => $page, 'types' => $types, 'start' => $start, 'end' => $end] = $request->attributes->all();
$manager = $this->getManager();
$manager = $this->getManager();
/** @var User $admin */
$admin = auth()->user();
$admin = auth()->user();
// use new group collector:
/** @var GroupCollectorInterface $collector */
$collector = app(GroupCollectorInterface::class);
$collector = app(GroupCollectorInterface::class);
$collector
->setUser($admin)
// include source + destination account name and type.
@@ -159,18 +159,18 @@ class ListController extends Controller
}
// get paginator.
$paginator = $collector->getPaginatedGroups();
$paginator = $collector->getPaginatedGroups();
$paginator->setPath(route('api.v1.bills.transactions', [$bill->id]).$this->buildParams());
// enrich
$enrichment = new TransactionGroupEnrichment();
$enrichment = new TransactionGroupEnrichment();
$enrichment->setUser($admin);
$transactions = $enrichment->enrich($paginator->getCollection());
$transactions = $enrichment->enrich($paginator->getCollection());
/** @var TransactionGroupTransformer $transformer */
$transformer = app(TransactionGroupTransformer::class);
$transformer = app(TransactionGroupTransformer::class);
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource = new FractalCollection($transactions, $transformer, 'transactions');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);

View File

@@ -41,7 +41,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private BillRepositoryInterface $repository;
@@ -67,28 +67,28 @@ class ShowController extends Controller
*/
public function index(PaginationDateRangeRequest $request): JsonResponse
{
['limit' => $limit, 'offset' => $offset, 'start' => $start, 'end' => $end, 'page' => $page] = $request->attributes->all();
['limit' => $limit, 'offset' => $offset, 'start' => $start, 'end' => $end, 'page' => $page] = $request->attributes->all();
$this->repository->correctOrder();
$bills = $this->repository->getBills();
$manager = $this->getManager();
$count = $bills->count();
$bills = $bills->slice($offset, $limit);
$paginator = new LengthAwarePaginator($bills, $count, $limit, $page);
$bills = $this->repository->getBills();
$manager = $this->getManager();
$count = $bills->count();
$bills = $bills->slice($offset, $limit);
$paginator = new LengthAwarePaginator($bills, $count, $limit, $page);
// enrich
/** @var User $admin */
$admin = auth()->user();
$enrichment = new SubscriptionEnrichment();
$admin = auth()->user();
$enrichment = new SubscriptionEnrichment();
$enrichment->setUser($admin);
$enrichment->setStart($start);
$enrichment->setEnd($end);
$bills = $enrichment->enrich($bills);
$bills = $enrichment->enrich($bills);
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer = app(BillTransformer::class);
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource = new FractalCollection($bills, $transformer, 'bills');
$resource->setPaginator(new IlluminatePaginatorAdapter($paginator));
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
@@ -102,23 +102,23 @@ class ShowController extends Controller
*/
public function show(DateRangeRequest $request, Bill $bill): JsonResponse
{
['start' => $start, 'end' => $end] = $request->attributes->all();
['start' => $start, 'end' => $end] = $request->attributes->all();
$manager = $this->getManager();
$manager = $this->getManager();
// enrich
/** @var User $admin */
$admin = auth()->user();
$enrichment = new SubscriptionEnrichment();
$admin = auth()->user();
$enrichment = new SubscriptionEnrichment();
$enrichment->setUser($admin);
$enrichment->setStart($start);
$enrichment->setEnd($end);
$bill = $enrichment->enrichSingle($bill);
$bill = $enrichment->enrichSingle($bill);
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer = app(BillTransformer::class);
$resource = new Item($bill, $transformer, 'bills');
$resource = new Item($bill, $transformer, 'bills');
return response()->json($manager->createData($resource)->toArray())->header('Content-Type', self::CONTENT_TYPE);
}

View File

@@ -38,7 +38,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
use TransactionFilter;
@@ -83,7 +83,6 @@ class StoreController extends Controller
/** @var BillTransformer $transformer */
$transformer = app(BillTransformer::class);
$transformer->setParameters($this->parameters);
$resource = new Item($bill, $transformer, 'bills');

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private BillRepositoryInterface $repository;

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private BudgetRepositoryInterface $repository;

View File

@@ -44,7 +44,7 @@ use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
// Class ListController
class ListController extends Controller
final class ListController extends Controller
{
use TransactionFilter;

View File

@@ -40,7 +40,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private BudgetLimitRepositoryInterface $blRepository;
private BudgetRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private BudgetRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private BudgetRepositoryInterface $repository;

View File

@@ -36,7 +36,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private BudgetLimitRepositoryInterface $blRepository;

View File

@@ -40,7 +40,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
use TransactionFilter;

View File

@@ -25,7 +25,7 @@ declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers\Models\BudgetLimit;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Data\SameDateRequest;
use FireflyIII\Api\V1\Requests\DateRangeRequest;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
@@ -44,7 +44,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private BudgetLimitRepositoryInterface $blRepository;
private BudgetRepositoryInterface $repository;
@@ -118,12 +118,12 @@ class ShowController extends Controller
*
* @SuppressWarnings("PHPMD.UnusedFormalParameter")
*/
public function indexAll(SameDateRequest $request): JsonResponse
public function indexAll(DateRangeRequest $request): JsonResponse
{
$manager = $this->getManager();
$manager->parseIncludes('budget');
$pageSize = $this->parameters->get('limit');
$collection = $this->blRepository->getAllBudgetLimits($this->parameters->get('start'), $this->parameters->get('end'));
$collection = $this->blRepository->getAllBudgetLimits($request->attributes->get('start'), $request->attributes->get('end'));
$count = $collection->count();
$budgetLimits = $collection->slice(($this->parameters->get('page') - 1) * $pageSize, $pageSize);
$paginator = new LengthAwarePaginator($budgetLimits, $count, $pageSize, $this->parameters->get('page'));

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private BudgetLimitRepositoryInterface $blRepository;

View File

@@ -39,7 +39,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private BudgetLimitRepositoryInterface $blRepository;

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private CategoryRepositoryInterface $repository;

View File

@@ -42,7 +42,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
use TransactionFilter;

View File

@@ -39,7 +39,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private CategoryRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private CategoryRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private CategoryRepositoryInterface $repository;

View File

@@ -36,7 +36,7 @@ use FireflyIII\Support\Http\Api\ValidatesUserGroupTrait;
use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
class DestroyController extends Controller
final class DestroyController extends Controller
{
use ValidatesUserGroupTrait;

View File

@@ -36,7 +36,7 @@ use Illuminate\Pagination\LengthAwarePaginator;
/**
* Class ShowController
*/
class IndexController extends Controller
final class IndexController extends Controller
{
use ValidatesUserGroupTrait;

View File

@@ -40,7 +40,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
use ValidatesUserGroupTrait;

View File

@@ -41,7 +41,7 @@ use Illuminate\Http\Request;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
class StoreController extends Controller
final class StoreController extends Controller
{
use ValidatesUserGroupTrait;

View File

@@ -37,7 +37,7 @@ use Illuminate\Http\JsonResponse;
use Illuminate\Http\Request;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
class UpdateController extends Controller
final class UpdateController extends Controller
{
use ValidatesUserGroupTrait;

View File

@@ -34,7 +34,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private ObjectGroupRepositoryInterface $repository;

View File

@@ -40,7 +40,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
private ObjectGroupRepositoryInterface $repository;

View File

@@ -38,7 +38,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private ObjectGroupRepositoryInterface $repository;

View File

@@ -36,7 +36,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private ObjectGroupRepositoryInterface $repository;

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private PiggyBankRepositoryInterface $repository;

View File

@@ -41,7 +41,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
private PiggyBankRepositoryInterface $repository;

View File

@@ -39,7 +39,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private PiggyBankRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private PiggyBankRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private PiggyBankRepositoryInterface $repository;

View File

@@ -33,7 +33,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private RecurringRepositoryInterface $repository;

View File

@@ -40,7 +40,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
use TransactionFilter;

View File

@@ -39,7 +39,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private RecurringRepositoryInterface $repository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private RecurringRepositoryInterface $repository;

View File

@@ -1,10 +1,8 @@
<?php
declare(strict_types=1);
/*
* TriggerController.php
* Copyright (c) 2025 james@firefly-iii.org
* Copyright (c) 2026 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
@@ -22,10 +20,12 @@ declare(strict_types=1);
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace FireflyIII\Api\V1\Controllers\Models\Recurrence;
use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Api\V1\Requests\Generic\SingleDateRequest;
use FireflyIII\Api\V1\Requests\DateRequest;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Jobs\CreateRecurringTransactions;
use FireflyIII\Models\Recurrence;
@@ -41,7 +41,7 @@ use Illuminate\Support\Facades\Log;
use League\Fractal\Pagination\IlluminatePaginatorAdapter;
use League\Fractal\Resource\Collection as FractalCollection;
class TriggerController extends Controller
final class TriggerController extends Controller
{
private RecurringRepositoryInterface $repository;
@@ -59,12 +59,12 @@ class TriggerController extends Controller
});
}
public function trigger(SingleDateRequest $request, Recurrence $recurrence): JsonResponse
public function trigger(DateRequest $request, Recurrence $recurrence): JsonResponse
{
// find recurrence occurrence for this date and trigger it.
// grab the date from the last time the recurrence fired:
$backupDate = $recurrence->latest_date;
$date = $request->getDate();
$date = $request->attributes->get('date');
// fire the recurring cron job on the given date, then post-date the created transaction.
Log::info(sprintf('Trigger: will now fire recurring cron job task for date "%s".', $date->format('Y-m-d H:i:s')));

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private RecurringRepositoryInterface $repository;

View File

@@ -34,7 +34,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private RuleRepositoryInterface $ruleRepository;

View File

@@ -31,7 +31,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class ExpressionController
*/
class ExpressionController extends Controller
final class ExpressionController extends Controller
{
/**
* This endpoint is documented at:

View File

@@ -38,7 +38,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private RuleRepositoryInterface $ruleRepository;

View File

@@ -35,7 +35,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private RuleRepositoryInterface $ruleRepository;

View File

@@ -42,7 +42,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class TriggerController
*/
class TriggerController extends Controller
final class TriggerController extends Controller
{
private RuleRepositoryInterface $ruleRepository;
@@ -78,15 +78,15 @@ class TriggerController extends Controller
// overrule the rule(s) if necessary.
if (array_key_exists('start', $parameters) && null !== $parameters['start']) {
// add a range:
$ruleEngine->addOperator(['type' => 'date_after', 'value' => $parameters['start']->format('Y-m-d')]);
$ruleEngine->addOperator(['type' => 'date_after', 'value' => $parameters['start']->format('Y-m-d')]);
}
if (array_key_exists('end', $parameters) && null !== $parameters['end']) {
// add a range:
$ruleEngine->addOperator(['type' => 'date_before', 'value' => $parameters['end']->format('Y-m-d')]);
$ruleEngine->addOperator(['type' => 'date_before', 'value' => $parameters['end']->format('Y-m-d')]);
}
if (array_key_exists('accounts', $parameters) && '' !== $parameters['accounts']) {
$ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]);
$ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]);
}
// file the rule(s)
@@ -98,7 +98,7 @@ class TriggerController extends Controller
$enrichment->setUser($rule->user);
$transactions = $enrichment->enrich($transactions);
$paginator = new LengthAwarePaginator($transactions, $count, 31337, $this->parameters->get('page'));
$paginator = new LengthAwarePaginator($transactions, $count, 31_337, $this->parameters->get('page'));
$paginator->setPath(route('api.v1.rules.test', [$rule->id]).$this->buildParams());
// resulting list is presented as JSON thing.
@@ -132,15 +132,15 @@ class TriggerController extends Controller
// overrule the rule(s) if necessary.
if (array_key_exists('start', $parameters) && null !== $parameters['start']) {
// add a range:
$ruleEngine->addOperator(['type' => 'date_after', 'value' => $parameters['start']->format('Y-m-d')]);
$ruleEngine->addOperator(['type' => 'date_after', 'value' => $parameters['start']->format('Y-m-d')]);
}
if (array_key_exists('end', $parameters) && null !== $parameters['end']) {
// add a range:
$ruleEngine->addOperator(['type' => 'date_before', 'value' => $parameters['end']->format('Y-m-d')]);
$ruleEngine->addOperator(['type' => 'date_before', 'value' => $parameters['end']->format('Y-m-d')]);
}
if (array_key_exists('accounts', $parameters) && is_array($parameters['accounts']) && count($parameters['accounts']) > 0) {
$ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]);
$ruleEngine->addOperator(['type' => 'account_id', 'value' => implode(',', $parameters['accounts'])]);
}
// fire the rule(s)

View File

@@ -36,7 +36,7 @@ use League\Fractal\Resource\Item;
/**
* Class UpdateController
*/
class UpdateController extends Controller
final class UpdateController extends Controller
{
private RuleRepositoryInterface $ruleRepository;

View File

@@ -34,7 +34,7 @@ use Illuminate\Http\JsonResponse;
/**
* Class DestroyController
*/
class DestroyController extends Controller
final class DestroyController extends Controller
{
private RuleGroupRepositoryInterface $ruleGroupRepository;

View File

@@ -37,7 +37,7 @@ use League\Fractal\Resource\Collection as FractalCollection;
/**
* Class ListController
*/
class ListController extends Controller
final class ListController extends Controller
{
private RuleGroupRepositoryInterface $ruleGroupRepository;

View File

@@ -38,7 +38,7 @@ use League\Fractal\Resource\Item;
/**
* Class ShowController
*/
class ShowController extends Controller
final class ShowController extends Controller
{
private RuleGroupRepositoryInterface $ruleGroupRepository;

View File

@@ -36,7 +36,7 @@ use League\Fractal\Resource\Item;
/**
* Class StoreController
*/
class StoreController extends Controller
final class StoreController extends Controller
{
private AccountRepositoryInterface $accountRepository;
private RuleGroupRepositoryInterface $ruleGroupRepository;

Some files were not shown because too many files have changed in this diff Show More