diff --git a/app/Models/Account.php b/app/Models/Account.php index 683b4a2973..eef5d6fcd5 100644 --- a/app/Models/Account.php +++ b/app/Models/Account.php @@ -23,6 +23,8 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AccountObserver; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Attributes\Scope; use FireflyIII\Enums\AccountTypeEnum; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; @@ -40,6 +42,7 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([AccountObserver::class])] class Account extends Model { use HasFactory; diff --git a/app/Models/Attachment.php b/app/Models/Attachment.php index 2287666db1..ed5a20bab3 100644 --- a/app/Models/Attachment.php +++ b/app/Models/Attachment.php @@ -23,9 +23,11 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AttachmentObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -34,6 +36,7 @@ use Illuminate\Database\Eloquent\Relations\MorphTo; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([AttachmentObserver::class])] class Attachment extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/AutoBudget.php b/app/Models/AutoBudget.php index 7f53584616..d1aa6475c9 100644 --- a/app/Models/AutoBudget.php +++ b/app/Models/AutoBudget.php @@ -25,31 +25,37 @@ declare(strict_types=1); namespace FireflyIII\Models; use Deprecated; +use FireflyIII\Handlers\Observer\AutoBudgetObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; +#[ObservedBy([AutoBudgetObserver::class])] class AutoBudget extends Model { use ReturnsIntegerIdTrait; use SoftDeletes; - #[Deprecated] /** @deprecated */ + #[Deprecated] + /** @deprecated */ public const int AUTO_BUDGET_ADJUSTED = 3; - #[Deprecated] /** @deprecated */ - public const int AUTO_BUDGET_RESET = 1; + #[Deprecated] + /** @deprecated */ + public const int AUTO_BUDGET_RESET = 1; - #[Deprecated] /** @deprecated */ + #[Deprecated] + /** @deprecated */ public const int AUTO_BUDGET_ROLLOVER = 2; protected $casts - = [ + = [ 'amount' => 'string', 'native_amount' => 'string', ]; - protected $fillable = ['budget_id', 'amount', 'period', 'native_amount']; + protected $fillable = ['budget_id', 'amount', 'period', 'native_amount']; public function budget(): BelongsTo { @@ -64,14 +70,14 @@ class AutoBudget extends Model protected function amount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function budgetId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } @@ -85,7 +91,7 @@ class AutoBudget extends Model protected function transactionCurrencyId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } } diff --git a/app/Models/AvailableBudget.php b/app/Models/AvailableBudget.php index 576864a2ea..f26f7f33d7 100644 --- a/app/Models/AvailableBudget.php +++ b/app/Models/AvailableBudget.php @@ -24,15 +24,18 @@ declare(strict_types=1); namespace FireflyIII\Models; use Carbon\Carbon; +use FireflyIII\Handlers\Observer\AvailableBudgetObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([AvailableBudgetObserver::class])] class AvailableBudget extends Model { use ReturnsIntegerIdTrait; @@ -49,13 +52,13 @@ class AvailableBudget extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $availableBudgetId = (int) $value; + $availableBudgetId = (int)$value; /** @var User $user */ - $user = auth()->user(); + $user = auth()->user(); /** @var null|AvailableBudget $availableBudget */ - $availableBudget = $user->availableBudgets()->find($availableBudgetId); + $availableBudget = $user->availableBudgets()->find($availableBudgetId); if (null !== $availableBudget) { return $availableBudget; } @@ -77,30 +80,30 @@ class AvailableBudget extends Model protected function amount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function endDate(): Attribute { return Attribute::make( - get: fn (string $value) => Carbon::parse($value), - set: fn (Carbon $value) => $value->format('Y-m-d'), + get: fn(string $value) => Carbon::parse($value), + set: fn(Carbon $value) => $value->format('Y-m-d'), ); } protected function startDate(): Attribute { return Attribute::make( - get: fn (string $value) => Carbon::parse($value), - set: fn (Carbon $value) => $value->format('Y-m-d'), + get: fn(string $value) => Carbon::parse($value), + set: fn(Carbon $value) => $value->format('Y-m-d'), ); } protected function transactionCurrencyId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/Bill.php b/app/Models/Bill.php index a0f59bc9d4..e44d0f3098 100644 --- a/app/Models/Bill.php +++ b/app/Models/Bill.php @@ -24,9 +24,11 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Casts\SeparateTimezoneCaster; +use FireflyIII\Handlers\Observer\BillObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -36,6 +38,7 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([BillObserver::class])] class Bill extends Model { use ReturnsIntegerIdTrait; @@ -43,7 +46,7 @@ class Bill extends Model use SoftDeletes; protected $fillable - = [ + = [ 'name', 'match', 'amount_min', @@ -75,13 +78,13 @@ class Bill extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $billId = (int) $value; + $billId = (int)$value; /** @var User $user */ - $user = auth()->user(); + $user = auth()->user(); /** @var null|Bill $bill */ - $bill = $user->bills()->find($billId); + $bill = $user->bills()->find($billId); if (null !== $bill) { return $bill; } @@ -121,7 +124,7 @@ class Bill extends Model */ public function setAmountMaxAttribute($value): void { - $this->attributes['amount_max'] = (string) $value; + $this->attributes['amount_max'] = (string)$value; } /** @@ -129,7 +132,7 @@ class Bill extends Model */ public function setAmountMinAttribute($value): void { - $this->attributes['amount_min'] = (string) $value; + $this->attributes['amount_min'] = (string)$value; } public function transactionCurrency(): BelongsTo @@ -148,7 +151,7 @@ class Bill extends Model protected function amountMax(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } @@ -158,14 +161,14 @@ class Bill extends Model protected function amountMin(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function order(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } @@ -175,14 +178,14 @@ class Bill extends Model protected function skip(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function transactionCurrencyId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/Budget.php b/app/Models/Budget.php index c5c1c29d46..086764d66d 100644 --- a/app/Models/Budget.php +++ b/app/Models/Budget.php @@ -23,9 +23,11 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\BudgetObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -35,6 +37,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([BudgetObserver::class])] class Budget extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/BudgetLimit.php b/app/Models/BudgetLimit.php index e7270fc7b0..247cf24ad4 100644 --- a/app/Models/BudgetLimit.php +++ b/app/Models/BudgetLimit.php @@ -24,13 +24,16 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Casts\SeparateTimezoneCaster; +use FireflyIII\Handlers\Observer\BudgetLimitObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\MorphMany; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([BudgetLimitObserver::class])] class BudgetLimit extends Model { use ReturnsIntegerIdTrait; @@ -45,12 +48,11 @@ class BudgetLimit extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $budgetLimitId = (int) $value; + $budgetLimitId = (int)$value; $budgetLimit = self::where('budget_limits.id', $budgetLimitId) - ->leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id') - ->where('budgets.user_id', auth()->user()->id) - ->first(['budget_limits.*']) - ; + ->leftJoin('budgets', 'budgets.id', '=', 'budget_limits.budget_id') + ->where('budgets.user_id', auth()->user()->id) + ->first(['budget_limits.*']); if (null !== $budgetLimit) { return $budgetLimit; } @@ -83,21 +85,21 @@ class BudgetLimit extends Model protected function amount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function budgetId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function transactionCurrencyId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/Category.php b/app/Models/Category.php index 3e50f448c6..1f961f561d 100644 --- a/app/Models/Category.php +++ b/app/Models/Category.php @@ -24,9 +24,12 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\CategoryObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -34,6 +37,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([CategoryObserver::class])] class Category extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/PiggyBank.php b/app/Models/PiggyBank.php index 08d5a2563d..ae161b8c93 100644 --- a/app/Models/PiggyBank.php +++ b/app/Models/PiggyBank.php @@ -23,7 +23,9 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\PiggyBankObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -34,6 +36,7 @@ use Illuminate\Database\Eloquent\Relations\MorphToMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([PiggyBankObserver::class])] class PiggyBank extends Model { use ReturnsIntegerIdTrait; @@ -49,12 +52,11 @@ class PiggyBank extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $piggyBankId = (int) $value; + $piggyBankId = (int)$value; $piggyBank = self::where('piggy_banks.id', $piggyBankId) - ->leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id') - ->leftJoin('accounts', 'accounts.id', '=', 'account_piggy_bank.account_id') - ->where('accounts.user_id', auth()->user()->id)->first(['piggy_banks.*']) - ; + ->leftJoin('account_piggy_bank', 'account_piggy_bank.piggy_bank_id', '=', 'piggy_banks.id') + ->leftJoin('accounts', 'accounts.id', '=', 'account_piggy_bank.account_id') + ->where('accounts.user_id', auth()->user()->id)->first(['piggy_banks.*']); if (null !== $piggyBank) { return $piggyBank; } @@ -109,7 +111,7 @@ class PiggyBank extends Model */ public function setTargetAmountAttribute($value): void { - $this->attributes['target_amount'] = (string) $value; + $this->attributes['target_amount'] = (string)$value; } public function transactionCurrency(): BelongsTo @@ -120,14 +122,14 @@ class PiggyBank extends Model protected function accountId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function order(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } @@ -137,7 +139,7 @@ class PiggyBank extends Model protected function targetAmount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } diff --git a/app/Models/PiggyBankEvent.php b/app/Models/PiggyBankEvent.php index 733792ffeb..9599c2f027 100644 --- a/app/Models/PiggyBankEvent.php +++ b/app/Models/PiggyBankEvent.php @@ -24,18 +24,21 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Casts\SeparateTimezoneCaster; +use FireflyIII\Handlers\Observer\PiggyBankEventObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; +#[ObservedBy([PiggyBankEventObserver::class])] class PiggyBankEvent extends Model { use ReturnsIntegerIdTrait; protected $fillable = ['piggy_bank_id', 'transaction_journal_id', 'date', 'date_tz', 'amount', 'native_amount']; - protected $hidden = ['amount_encrypted']; + protected $hidden = ['amount_encrypted']; public function piggyBank(): BelongsTo { @@ -47,7 +50,7 @@ class PiggyBankEvent extends Model */ public function setAmountAttribute($value): void { - $this->attributes['amount'] = (string) $value; + $this->attributes['amount'] = (string)$value; } public function transactionJournal(): BelongsTo @@ -61,14 +64,14 @@ class PiggyBankEvent extends Model protected function amount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function piggyBankId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/Recurrence.php b/app/Models/Recurrence.php index 4e369fca27..78051e6bc6 100644 --- a/app/Models/Recurrence.php +++ b/app/Models/Recurrence.php @@ -25,9 +25,11 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Casts\SeparateTimezoneCaster; +use FireflyIII\Handlers\Observer\RecurrenceObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -36,6 +38,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([RecurrenceObserver::class])] class Recurrence extends Model { use ReturnsIntegerIdTrait; @@ -43,7 +46,7 @@ class Recurrence extends Model use SoftDeletes; protected $fillable - = ['user_id', 'user_group_id', 'transaction_type_id', 'title', 'description', 'first_date', 'first_date_tz', 'repeat_until', 'repeat_until_tz', 'latest_date', 'latest_date_tz', 'repetitions', 'apply_rules', 'active']; + = ['user_id', 'user_group_id', 'transaction_type_id', 'title', 'description', 'first_date', 'first_date_tz', 'repeat_until', 'repeat_until_tz', 'latest_date', 'latest_date_tz', 'repetitions', 'apply_rules', 'active']; protected $table = 'recurrences'; @@ -55,13 +58,13 @@ class Recurrence extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $recurrenceId = (int) $value; + $recurrenceId = (int)$value; /** @var User $user */ - $user = auth()->user(); + $user = auth()->user(); /** @var null|Recurrence $recurrence */ - $recurrence = $user->recurrences()->find($recurrenceId); + $recurrence = $user->recurrences()->find($recurrenceId); if (null !== $recurrence) { return $recurrence; } @@ -116,7 +119,7 @@ class Recurrence extends Model protected function transactionTypeId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/RecurrenceTransaction.php b/app/Models/RecurrenceTransaction.php index 2c17d52ebb..245e19865f 100644 --- a/app/Models/RecurrenceTransaction.php +++ b/app/Models/RecurrenceTransaction.php @@ -24,20 +24,23 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\RecurrenceTransactionObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; +#[ObservedBy([RecurrenceTransactionObserver::class])] class RecurrenceTransaction extends Model { use ReturnsIntegerIdTrait; use SoftDeletes; protected $fillable - = [ + = [ 'recurrence_id', 'transaction_currency_id', 'foreign_currency_id', @@ -88,49 +91,49 @@ class RecurrenceTransaction extends Model protected function amount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function destinationId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function foreignAmount(): Attribute { return Attribute::make( - get: static fn ($value) => (string) $value, + get: static fn($value) => (string)$value, ); } protected function recurrenceId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function sourceId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function transactionCurrencyId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function userId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/Rule.php b/app/Models/Rule.php index 5308eae4d5..78f2906ccb 100644 --- a/app/Models/Rule.php +++ b/app/Models/Rule.php @@ -23,9 +23,11 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\RuleObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -33,6 +35,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([RuleObserver::class])] class Rule extends Model { use ReturnsIntegerIdTrait; @@ -49,13 +52,13 @@ class Rule extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $ruleId = (int) $value; + $ruleId = (int)$value; /** @var User $user */ - $user = auth()->user(); + $user = auth()->user(); /** @var null|Rule $rule */ - $rule = $user->rules()->find($ruleId); + $rule = $user->rules()->find($ruleId); if (null !== $rule) { return $rule; } @@ -86,7 +89,7 @@ class Rule extends Model protected function description(): Attribute { - return Attribute::make(set: fn ($value) => ['description' => e($value)]); + return Attribute::make(set: fn($value) => ['description' => e($value)]); } public function userGroup(): BelongsTo @@ -97,14 +100,14 @@ class Rule extends Model protected function order(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } protected function ruleGroupId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Models/RuleGroup.php b/app/Models/RuleGroup.php index 1a25031a7e..48b96e1a67 100644 --- a/app/Models/RuleGroup.php +++ b/app/Models/RuleGroup.php @@ -23,9 +23,12 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\RuleGroupObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; @@ -33,6 +36,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([RuleGroupObserver::class])] class RuleGroup extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/Tag.php b/app/Models/Tag.php index 3af4799730..df1082bc09 100644 --- a/app/Models/Tag.php +++ b/app/Models/Tag.php @@ -24,9 +24,12 @@ declare(strict_types=1); namespace FireflyIII\Models; use FireflyIII\Casts\SeparateTimezoneCaster; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\TagObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -34,6 +37,7 @@ use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([TagObserver::class])] class Tag extends Model { use ReturnsIntegerIdTrait; @@ -42,7 +46,7 @@ class Tag extends Model protected $fillable = ['user_id', 'user_group_id', 'tag', 'date', 'date_tz', 'description', 'tag_mode']; - protected $hidden = ['zoomLevel', 'latitude', 'longitude']; + protected $hidden = ['zoomLevel', 'zoom_level', 'latitude', 'longitude']; /** * Route binder. Converts the key in the URL to the specified object (or throw 404). diff --git a/app/Models/Transaction.php b/app/Models/Transaction.php index a563e3656f..342a2f6b0d 100644 --- a/app/Models/Transaction.php +++ b/app/Models/Transaction.php @@ -23,6 +23,9 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\TransactionObserver; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Attributes\Scope; use Carbon\Carbon; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; @@ -34,6 +37,7 @@ use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; use Illuminate\Database\Eloquent\SoftDeletes; +#[ObservedBy([TransactionObserver::class])] class Transaction extends Model { use HasFactory; diff --git a/app/Models/TransactionGroup.php b/app/Models/TransactionGroup.php index a09af2b231..a13c0008ad 100644 --- a/app/Models/TransactionGroup.php +++ b/app/Models/TransactionGroup.php @@ -23,15 +23,19 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\TransactionGroupObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([TransactionGroupObserver::class])] class TransactionGroup extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/TransactionJournal.php b/app/Models/TransactionJournal.php index 609d7dc353..72f2ba70f2 100644 --- a/app/Models/TransactionJournal.php +++ b/app/Models/TransactionJournal.php @@ -23,6 +23,9 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\TransactionJournalObserver; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Attributes\Scope; use Carbon\Carbon; use FireflyIII\Casts\SeparateTimezoneCaster; @@ -46,6 +49,8 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; * @method EloquentBuilder|static after() * @method static EloquentBuilder|static query() */ + +#[ObservedBy([TransactionJournalObserver::class])] class TransactionJournal extends Model { use HasFactory; diff --git a/app/Models/Webhook.php b/app/Models/Webhook.php index a836b7fad6..797ca82876 100644 --- a/app/Models/Webhook.php +++ b/app/Models/Webhook.php @@ -27,9 +27,12 @@ namespace FireflyIII\Models; use FireflyIII\Enums\WebhookDelivery as WebhookDeliveryEnum; use FireflyIII\Enums\WebhookResponse as WebhookResponseEnum; use FireflyIII\Enums\WebhookTrigger as WebhookTriggerEnum; +use FireflyIII\Handlers\Observer\AccountObserver; +use FireflyIII\Handlers\Observer\WebhookObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\Support\Models\ReturnsIntegerUserIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsToMany; @@ -37,6 +40,7 @@ use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\SoftDeletes; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([WebhookObserver::class])] class Webhook extends Model { use ReturnsIntegerIdTrait; diff --git a/app/Models/WebhookMessage.php b/app/Models/WebhookMessage.php index 77d6a0642c..c1014d60aa 100644 --- a/app/Models/WebhookMessage.php +++ b/app/Models/WebhookMessage.php @@ -24,14 +24,17 @@ declare(strict_types=1); namespace FireflyIII\Models; +use FireflyIII\Handlers\Observer\WebhookMessageObserver; use FireflyIII\Support\Models\ReturnsIntegerIdTrait; use FireflyIII\User; +use Illuminate\Database\Eloquent\Attributes\ObservedBy; use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\HasMany; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; +#[ObservedBy([WebhookMessageObserver::class])] class WebhookMessage extends Model { use ReturnsIntegerIdTrait; @@ -44,13 +47,13 @@ class WebhookMessage extends Model public static function routeBinder(string $value): self { if (auth()->check()) { - $messageId = (int) $value; + $messageId = (int)$value; /** @var User $user */ - $user = auth()->user(); + $user = auth()->user(); /** @var null|WebhookMessage $message */ - $message = self::find($messageId); + $message = self::find($messageId); if (null !== $message && $message->webhook->user_id === $user->id) { return $message; } @@ -75,14 +78,14 @@ class WebhookMessage extends Model protected function sent(): Attribute { return Attribute::make( - get: static fn ($value) => (bool) $value, + get: static fn($value) => (bool)$value, ); } protected function webhookId(): Attribute { return Attribute::make( - get: static fn ($value) => (int) $value, + get: static fn($value) => (int)$value, ); } diff --git a/app/Providers/EventServiceProvider.php b/app/Providers/EventServiceProvider.php index 5cff75ae42..a63903a280 100644 --- a/app/Providers/EventServiceProvider.php +++ b/app/Providers/EventServiceProvider.php @@ -57,46 +57,6 @@ use FireflyIII\Events\TriggeredAuditLog; use FireflyIII\Events\UpdatedAccount; use FireflyIII\Events\UpdatedTransactionGroup; use FireflyIII\Events\UserChangedEmail; -use FireflyIII\Handlers\Observer\AccountObserver; -use FireflyIII\Handlers\Observer\AttachmentObserver; -use FireflyIII\Handlers\Observer\AutoBudgetObserver; -use FireflyIII\Handlers\Observer\AvailableBudgetObserver; -use FireflyIII\Handlers\Observer\BillObserver; -use FireflyIII\Handlers\Observer\BudgetLimitObserver; -use FireflyIII\Handlers\Observer\BudgetObserver; -use FireflyIII\Handlers\Observer\CategoryObserver; -use FireflyIII\Handlers\Observer\PiggyBankEventObserver; -use FireflyIII\Handlers\Observer\PiggyBankObserver; -use FireflyIII\Handlers\Observer\RecurrenceObserver; -use FireflyIII\Handlers\Observer\RecurrenceTransactionObserver; -use FireflyIII\Handlers\Observer\RuleGroupObserver; -use FireflyIII\Handlers\Observer\RuleObserver; -use FireflyIII\Handlers\Observer\TagObserver; -use FireflyIII\Handlers\Observer\TransactionGroupObserver; -use FireflyIII\Handlers\Observer\TransactionJournalObserver; -use FireflyIII\Handlers\Observer\TransactionObserver; -use FireflyIII\Handlers\Observer\WebhookMessageObserver; -use FireflyIII\Handlers\Observer\WebhookObserver; -use FireflyIII\Models\Account; -use FireflyIII\Models\Attachment; -use FireflyIII\Models\AutoBudget; -use FireflyIII\Models\AvailableBudget; -use FireflyIII\Models\Bill; -use FireflyIII\Models\Budget; -use FireflyIII\Models\BudgetLimit; -use FireflyIII\Models\Category; -use FireflyIII\Models\PiggyBank; -use FireflyIII\Models\PiggyBankEvent; -use FireflyIII\Models\Recurrence; -use FireflyIII\Models\RecurrenceTransaction; -use FireflyIII\Models\Rule; -use FireflyIII\Models\RuleGroup; -use FireflyIII\Models\Tag; -use FireflyIII\Models\Transaction; -use FireflyIII\Models\TransactionGroup; -use FireflyIII\Models\TransactionJournal; -use FireflyIII\Models\Webhook; -use FireflyIII\Models\WebhookMessage; use Illuminate\Auth\Events\Login; use Illuminate\Foundation\Support\Providers\EventServiceProvider as ServiceProvider; use Laravel\Passport\Events\AccessTokenCreated; @@ -258,30 +218,5 @@ class EventServiceProvider extends ServiceProvider #[Override] public function boot(): void { - $this->registerObservers(); - } - - private function registerObservers(): void - { - Attachment::observe(new AttachmentObserver()); - Account::observe(new AccountObserver()); - AutoBudget::observe(new AutoBudgetObserver()); - AvailableBudget::observe(new AvailableBudgetObserver()); - Bill::observe(new BillObserver()); - Budget::observe(new BudgetObserver()); - BudgetLimit::observe(new BudgetLimitObserver()); - Category::observe(new CategoryObserver()); - PiggyBank::observe(new PiggyBankObserver()); - PiggyBankEvent::observe(new PiggyBankEventObserver()); - Recurrence::observe(new RecurrenceObserver()); - RecurrenceTransaction::observe(new RecurrenceTransactionObserver()); - Rule::observe(new RuleObserver()); - RuleGroup::observe(new RuleGroupObserver()); - Tag::observe(new TagObserver()); - Transaction::observe(new TransactionObserver()); - TransactionJournal::observe(new TransactionJournalObserver()); - TransactionGroup::observe(new TransactionGroupObserver()); - Webhook::observe(new WebhookObserver()); - WebhookMessage::observe(new WebhookMessageObserver()); } }