Use trait and interface.

This commit is contained in:
James Cole
2025-02-23 12:28:27 +01:00
parent 79ae110368
commit de8149137a
32 changed files with 165 additions and 343 deletions

View File

@@ -33,24 +33,23 @@ use FireflyIII\Models\AccountMeta;
use FireflyIII\Models\AccountType; use FireflyIII\Models\AccountType;
use FireflyIII\Models\Attachment; use FireflyIII\Models\Attachment;
use FireflyIII\Models\Location; use FireflyIII\Models\Location;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionGroup; use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Services\Internal\Destroy\AccountDestroyService; use FireflyIII\Services\Internal\Destroy\AccountDestroyService;
use FireflyIII\Services\Internal\Update\AccountUpdateService; use FireflyIII\Services\Internal\Update\AccountUpdateService;
use FireflyIII\Support\Facades\Steam; use FireflyIII\Support\Facades\Steam;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage;
/** /**
* Class AccountRepository. * Class AccountRepository.
*/ */
class AccountRepository implements AccountRepositoryInterface class AccountRepository implements AccountRepositoryInterface, UserGroupInterface
{ {
use UserGroupTrait; use UserGroupTrait;
@@ -210,8 +209,8 @@ class AccountRepository implements AccountRepositoryInterface
{ {
$set = $account->attachments()->get(); $set = $account->attachments()->get();
/** @var \Storage $disk */ /** @var Storage $disk */
$disk = \Storage::disk('upload'); $disk = Storage::disk('upload');
return $set->each( return $set->each(
static function (Attachment $attachment) use ($disk) { // @phpstan-ignore-line static function (Attachment $attachment) use ($disk) { // @phpstan-ignore-line
@@ -239,13 +238,6 @@ class AccountRepository implements AccountRepositoryInterface
return $factory->findOrCreate('Cash account', $type->type); return $factory->findOrCreate('Cash account', $type->type);
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function getCreditTransactionGroup(Account $account): ?TransactionGroup public function getCreditTransactionGroup(Account $account): ?TransactionGroup
{ {
$journal = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id') $journal = TransactionJournal::leftJoin('transactions', 'transactions.transaction_journal_id', '=', 'transaction_journals.id')

View File

@@ -30,17 +30,17 @@ use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\Account; use FireflyIII\Models\Account;
use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Facades\Steam; use FireflyIII\Support\Facades\Steam;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class AccountTasker. * Class AccountTasker.
*/ */
class AccountTasker implements AccountTaskerInterface class AccountTasker implements AccountTaskerInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* @throws FireflyException * @throws FireflyException
@@ -49,7 +49,7 @@ class AccountTasker implements AccountTaskerInterface
{ {
$yesterday = clone $start; $yesterday = clone $start;
$yesterday->subDay()->endOfDay(); // exactly up until $start but NOT including. $yesterday->subDay()->endOfDay(); // exactly up until $start but NOT including.
$end->endOfDay(); // needs to be end of day to be correct. $end->endOfDay(); // needs to be end of day to be correct.
Log::debug(sprintf('getAccountReport: finalAccountsBalance("%s")', $yesterday->format('Y-m-d H:i:s'))); Log::debug(sprintf('getAccountReport: finalAccountsBalance("%s")', $yesterday->format('Y-m-d H:i:s')));
Log::debug(sprintf('getAccountReport: finalAccountsBalance("%s")', $end->format('Y-m-d H:i:s'))); Log::debug(sprintf('getAccountReport: finalAccountsBalance("%s")', $end->format('Y-m-d H:i:s')));
$startSet = Steam::finalAccountsBalance($accounts, $yesterday); $startSet = Steam::finalAccountsBalance($accounts, $yesterday);
@@ -289,11 +289,4 @@ class AccountTasker implements AccountTaskerInterface
return $report; return $report;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
} }

View File

@@ -29,16 +29,16 @@ use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer; use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class OperationsRepository * Class OperationsRepository
*/ */
class OperationsRepository implements OperationsRepositoryInterface class OperationsRepository implements OperationsRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* This method returns a list of all the withdrawal transaction journals (as arrays) set in that period * This method returns a list of all the withdrawal transaction journals (as arrays) set in that period
@@ -66,13 +66,6 @@ class OperationsRepository implements OperationsRepositoryInterface
return $collector->getExtractedJournals(); return $collector->getExtractedJournals();
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
private function sortByCurrency(array $journals, string $direction): array private function sortByCurrency(array $journals, string $direction): array
{ {
$array = []; $array = [];

View File

@@ -28,8 +28,8 @@ use FireflyIII\Factory\AttachmentFactory;
use FireflyIII\Helpers\Attachments\AttachmentHelperInterface; use FireflyIII\Helpers\Attachments\AttachmentHelperInterface;
use FireflyIII\Models\Attachment; use FireflyIII\Models\Attachment;
use FireflyIII\Models\Note; use FireflyIII\Models\Note;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Contracts\Encryption\DecryptException; use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage; use Illuminate\Support\Facades\Storage;
@@ -38,10 +38,9 @@ use League\Flysystem\UnableToDeleteFile;
/** /**
* Class AttachmentRepository. * Class AttachmentRepository.
*/ */
class AttachmentRepository implements AttachmentRepositoryInterface class AttachmentRepository implements AttachmentRepositoryInterface, UserGroupInterface
{ {
/** @var User */ use UserGroupTrait;
private $user;
/** /**
* @throws \Exception * @throws \Exception
@@ -126,13 +125,6 @@ class AttachmentRepository implements AttachmentRepositoryInterface
return $result; return $result;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function update(Attachment $attachment, array $data): Attachment public function update(Attachment $attachment, array $data): Attachment
{ {
if (array_key_exists('title', $data)) { if (array_key_exists('title', $data)) {

View File

@@ -38,6 +38,7 @@ use FireflyIII\Services\Internal\Destroy\BillDestroyService;
use FireflyIII\Services\Internal\Update\BillUpdateService; use FireflyIII\Services\Internal\Update\BillUpdateService;
use FireflyIII\Support\CacheProperties; use FireflyIII\Support\CacheProperties;
use FireflyIII\Support\Facades\Amount; use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\Query\JoinClause; use Illuminate\Database\Query\JoinClause;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
@@ -48,7 +49,7 @@ use Illuminate\Support\Facades\Log;
/** /**
* Class BillRepository. * Class BillRepository.
*/ */
class BillRepository implements BillRepositoryInterface class BillRepository implements BillRepositoryInterface, UserGroupInterface
{ {
use CreatesObjectGroups; use CreatesObjectGroups;
use UserGroupTrait; use UserGroupTrait;

View File

@@ -28,8 +28,8 @@ use Carbon\Carbon;
use FireflyIII\Models\AvailableBudget; use FireflyIII\Models\AvailableBudget;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Facades\Amount; use FireflyIII\Support\Facades\Amount;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -37,9 +37,9 @@ use Illuminate\Support\Facades\Log;
/** /**
* Class AvailableBudgetRepository * Class AvailableBudgetRepository
*/ */
class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function cleanup(): void public function cleanup(): void
{ {
@@ -230,13 +230,6 @@ class AvailableBudgetRepository implements AvailableBudgetRepositoryInterface
return $availableBudget; return $availableBudget;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function store(array $data): ?AvailableBudget public function store(array $data): ?AvailableBudget
{ {
$start = $data['start']; $start = $data['start'];

View File

@@ -31,8 +31,9 @@ use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit; use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\Note; use FireflyIII\Models\Note;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -40,9 +41,9 @@ use Illuminate\Support\Facades\Log;
/** /**
* Class BudgetLimitRepository * Class BudgetLimitRepository
*/ */
class BudgetLimitRepository implements BudgetLimitRepositoryInterface class BudgetLimitRepository implements BudgetLimitRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* Tells you which amount has been budgeted (for the given budgets) * Tells you which amount has been budgeted (for the given budgets)
@@ -262,13 +263,6 @@ class BudgetLimitRepository implements BudgetLimitRepositoryInterface
return (string) $budgetLimit->notes()->first()?->text; return (string) $budgetLimit->notes()->first()?->text;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
/** /**
* @throws FireflyException * @throws FireflyException
*/ */

View File

@@ -41,6 +41,7 @@ use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
use FireflyIII\Services\Internal\Destroy\BudgetDestroyService; use FireflyIII\Services\Internal\Destroy\BudgetDestroyService;
use FireflyIII\Support\Http\Api\ExchangeRateConverter; use FireflyIII\Support\Http\Api\ExchangeRateConverter;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\QueryException; use Illuminate\Database\QueryException;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -49,7 +50,7 @@ use Illuminate\Support\Facades\Log;
/** /**
* Class BudgetRepository. * Class BudgetRepository.
*/ */
class BudgetRepository implements BudgetRepositoryInterface class BudgetRepository implements BudgetRepositoryInterface, UserGroupInterface
{ {
use UserGroupTrait; use UserGroupTrait;

View File

@@ -29,17 +29,16 @@ use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer; use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class NoBudgetRepository * Class NoBudgetRepository
*/ */
class NoBudgetRepository implements NoBudgetRepositoryInterface class NoBudgetRepository implements NoBudgetRepositoryInterface, UserGroupInterface
{ {
/** @var User */ use UserGroupTrait;
private $user;
public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array
{ {
@@ -80,13 +79,6 @@ class NoBudgetRepository implements NoBudgetRepositoryInterface
return $data; return $data;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function sumExpenses(Carbon $start, Carbon $end, ?Collection $accounts = null, ?TransactionCurrency $currency = null): array public function sumExpenses(Carbon $start, Carbon $end, ?Collection $accounts = null, ?TransactionCurrency $currency = null): array
{ {
/** @var GroupCollectorInterface $collector */ /** @var GroupCollectorInterface $collector */

View File

@@ -31,19 +31,18 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\Budget; use FireflyIII\Models\Budget;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer; use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class OperationsRepository * Class OperationsRepository
*/ */
class OperationsRepository implements OperationsRepositoryInterface class OperationsRepository implements OperationsRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* A method that returns the amount of money budgeted per day for this budget, * A method that returns the amount of money budgeted per day for this budget,
@@ -186,13 +185,6 @@ class OperationsRepository implements OperationsRepositoryInterface
return $array; return $array;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
private function getBudgets(): Collection private function getBudgets(): Collection
{ {
/** @var BudgetRepositoryInterface $repos */ /** @var BudgetRepositoryInterface $repos */

View File

@@ -33,16 +33,15 @@ use FireflyIII\Models\RecurrenceTransactionMeta;
use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleAction;
use FireflyIII\Services\Internal\Destroy\CategoryDestroyService; use FireflyIII\Services\Internal\Destroy\CategoryDestroyService;
use FireflyIII\Services\Internal\Update\CategoryUpdateService; use FireflyIII\Services\Internal\Update\CategoryUpdateService;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class CategoryRepository. * Class CategoryRepository.
*/ */
class CategoryRepository implements CategoryRepositoryInterface class CategoryRepository implements CategoryRepositoryInterface, UserGroupInterface
{ {
use UserGroupTrait; use UserGroupTrait;
@@ -168,13 +167,6 @@ class CategoryRepository implements CategoryRepositoryInterface
return $category; return $category;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function removeNotes(Category $category): void public function removeNotes(Category $category): void
{ {
$category->notes()->delete(); $category->notes()->delete();

View File

@@ -28,16 +28,16 @@ use Carbon\Carbon;
use FireflyIII\Enums\TransactionTypeEnum; use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer; use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class NoCategoryRepository * Class NoCategoryRepository
*/ */
class NoCategoryRepository implements NoCategoryRepositoryInterface class NoCategoryRepository implements NoCategoryRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* This method returns a list of all the withdrawal transaction journals (as arrays) set in that period * This method returns a list of all the withdrawal transaction journals (as arrays) set in that period
@@ -77,21 +77,14 @@ class NoCategoryRepository implements NoCategoryRepositoryInterface
$journalId = (int) $journal['transaction_journal_id']; $journalId = (int) $journal['transaction_journal_id'];
$array[$currencyId]['categories'][0]['transaction_journals'][$journalId] $array[$currencyId]['categories'][0]['transaction_journals'][$journalId]
= [ = [
'amount' => app('steam')->negative($journal['amount']), 'amount' => app('steam')->negative($journal['amount']),
'date' => $journal['date'], 'date' => $journal['date'],
]; ];
} }
return $array; return $array;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
/** /**
* This method returns a list of all the deposit transaction journals (as arrays) set in that period * This method returns a list of all the deposit transaction journals (as arrays) set in that period
* which have no category set to them. It's grouped per currency, with as few details in the array * which have no category set to them. It's grouped per currency, with as few details in the array
@@ -130,9 +123,9 @@ class NoCategoryRepository implements NoCategoryRepositoryInterface
$journalId = (int) $journal['transaction_journal_id']; $journalId = (int) $journal['transaction_journal_id'];
$array[$currencyId]['categories'][0]['transaction_journals'][$journalId] $array[$currencyId]['categories'][0]['transaction_journals'][$journalId]
= [ = [
'amount' => app('steam')->positive($journal['amount']), 'amount' => app('steam')->positive($journal['amount']),
'date' => $journal['date'], 'date' => $journal['date'],
]; ];
} }
return $array; return $array;

View File

@@ -29,17 +29,18 @@ use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Support\Facades\Amount; use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer; use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class OperationsRepository * Class OperationsRepository
*/ */
class OperationsRepository implements OperationsRepositoryInterface class OperationsRepository implements OperationsRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* This method returns a list of all the withdrawal transaction journals (as arrays) set in that period * This method returns a list of all the withdrawal transaction journals (as arrays) set in that period
@@ -112,13 +113,6 @@ class OperationsRepository implements OperationsRepositoryInterface
return $array; return $array;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
/** /**
* Returns a list of all the categories belonging to a user. * Returns a list of all the categories belonging to a user.
*/ */

View File

@@ -26,18 +26,17 @@ namespace FireflyIII\Repositories\Currency;
use Carbon\Carbon; use Carbon\Carbon;
use FireflyIII\Models\CurrencyExchangeRate; use FireflyIII\Models\CurrencyExchangeRate;
use FireflyIII\Models\TransactionCurrency; use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\UserGroup; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class CurrencyRepository. * Class CurrencyRepository.
*/ */
class CurrencyRepository implements CurrencyRepositoryInterface class CurrencyRepository implements CurrencyRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
private UserGroup $userGroup;
#[\Override] #[\Override]
public function find(int $currencyId): ?TransactionCurrency public function find(int $currencyId): ?TransactionCurrency
@@ -107,18 +106,4 @@ class CurrencyRepository implements CurrencyRepositoryInterface
] ]
); );
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
$this->userGroup = $user->userGroup;
}
}
#[\Override]
public function setUserGroup(UserGroup $userGroup): void
{
$this->userGroup = $userGroup;
}
} }

View File

@@ -29,16 +29,16 @@ use FireflyIII\Models\PiggyBank;
use FireflyIII\Models\PiggyBankEvent; use FireflyIII\Models\PiggyBankEvent;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class JournalAPIRepository * Class JournalAPIRepository
*/ */
class JournalAPIRepository implements JournalAPIRepositoryInterface class JournalAPIRepository implements JournalAPIRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* Returns transaction by ID. Used to validate attachments. * Returns transaction by ID. Used to validate attachments.
@@ -96,11 +96,4 @@ class JournalAPIRepository implements JournalAPIRepositoryInterface
return $events; return $events;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
} }

View File

@@ -28,15 +28,17 @@ use Carbon\Carbon;
use FireflyIII\Models\Transaction; use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Support\CacheProperties; use FireflyIII\Support\CacheProperties;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class JournalCLIRepository * Class JournalCLIRepository
*/ */
class JournalCLIRepository implements JournalCLIRepositoryInterface class JournalCLIRepository implements JournalCLIRepositoryInterface, UserGroupInterface
{ {
use UserGroupTrait;
/** /**
* Get all transaction journals with a specific type, regardless of user. * Get all transaction journals with a specific type, regardless of user.
*/ */
@@ -201,9 +203,4 @@ class JournalCLIRepository implements JournalCLIRepositoryInterface
{ {
return $journal->tags()->get()->pluck('tag')->toArray(); return $journal->tags()->get()->pluck('tag')->toArray();
} }
public function setUser(null|Authenticatable|User $user): void
{
// empty
}
} }

View File

@@ -36,16 +36,16 @@ use FireflyIII\Services\Internal\Destroy\JournalDestroyService;
use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService; use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService;
use FireflyIII\Services\Internal\Update\JournalUpdateService; use FireflyIII\Services\Internal\Update\JournalUpdateService;
use FireflyIII\Support\CacheProperties; use FireflyIII\Support\CacheProperties;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class JournalRepository. * Class JournalRepository.
*/ */
class JournalRepository implements JournalRepositoryInterface class JournalRepository implements JournalRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function destroyGroup(TransactionGroup $transactionGroup): void public function destroyGroup(TransactionGroup $transactionGroup): void
{ {
@@ -204,13 +204,6 @@ class JournalRepository implements JournalRepositoryInterface
return $query->take($limit)->get(); return $query->take($limit)->get();
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function unreconcileById(int $journalId): void public function unreconcileById(int $journalId): void
{ {
/** @var null|TransactionJournal $journal */ /** @var null|TransactionJournal $journal */

View File

@@ -28,16 +28,16 @@ use FireflyIII\Models\LinkType;
use FireflyIII\Models\Note; use FireflyIII\Models\Note;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionJournalLink; use FireflyIII\Models\TransactionJournalLink;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class LinkTypeRepository. * Class LinkTypeRepository.
*/ */
class LinkTypeRepository implements LinkTypeRepositoryInterface class LinkTypeRepository implements LinkTypeRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function countJournals(LinkType $linkType): int public function countJournals(LinkType $linkType): int
{ {
@@ -157,13 +157,6 @@ class LinkTypeRepository implements LinkTypeRepositoryInterface
); );
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function store(array $data): LinkType public function store(array $data): LinkType
{ {
$linkType = new LinkType(); $linkType = new LinkType();

View File

@@ -26,16 +26,16 @@ namespace FireflyIII\Repositories\ObjectGroup;
use FireflyIII\Models\ObjectGroup; use FireflyIII\Models\ObjectGroup;
use FireflyIII\Models\PiggyBank; use FireflyIII\Models\PiggyBank;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class ObjectGroupRepository * Class ObjectGroupRepository
*/ */
class ObjectGroupRepository implements ObjectGroupRepositoryInterface class ObjectGroupRepository implements ObjectGroupRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function deleteAll(): void public function deleteAll(): void
{ {
@@ -127,13 +127,6 @@ class ObjectGroupRepository implements ObjectGroupRepositoryInterface
return $dbQuery->take($limit)->get(['object_groups.*']); return $dbQuery->take($limit)->get(['object_groups.*']);
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function update(ObjectGroup $objectGroup, array $data): ObjectGroup public function update(ObjectGroup $objectGroup, array $data): ObjectGroup
{ {
if (array_key_exists('title', $data)) { if (array_key_exists('title', $data)) {

View File

@@ -36,16 +36,15 @@ use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface; use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface; use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Support\Facades\Steam; use FireflyIII\Support\Facades\Steam;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class PiggyBankRepository. * Class PiggyBankRepository.
*/ */
class PiggyBankRepository implements PiggyBankRepositoryInterface class PiggyBankRepository implements PiggyBankRepositoryInterface, UserGroupInterface
{ {
use ModifiesPiggyBanks; use ModifiesPiggyBanks;
@@ -126,6 +125,24 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
); );
} }
/**
* Get current amount saved in piggy bank.
*/
public function getCurrentNativeAmount(PiggyBank $piggyBank, ?Account $account = null): string
{
$sum = '0';
foreach ($piggyBank->accounts as $current) {
if (null !== $account && $account->id !== $current->id) {
continue;
}
$amount = (string) $current->pivot->native_current_amount;
$amount = '' === $amount ? '0' : $amount;
$sum = bcadd($sum, $amount);
}
return $sum;
}
public function getEvents(PiggyBank $piggyBank): Collection public function getEvents(PiggyBank $piggyBank): Collection
{ {
return $piggyBank->piggyBankEvents()->orderBy('date', 'DESC')->orderBy('id', 'DESC')->get(); return $piggyBank->piggyBankEvents()->orderBy('date', 'DESC')->orderBy('id', 'DESC')->get();
@@ -242,11 +259,23 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
return (string) $amount; return (string) $amount;
} }
public function setUser(null|Authenticatable|User $user): void /**
* Get current amount saved in piggy bank.
*/
public function getCurrentAmount(PiggyBank $piggyBank, ?Account $account = null): string
{ {
if ($user instanceof User) { $sum = '0';
$this->user = $user; foreach ($piggyBank->accounts as $current) {
if (null !== $account && $account->id !== $current->id) {
continue;
}
$amount = (string) $current->pivot->current_amount;
$amount = '' === $amount ? '0' : $amount;
$sum = bcadd($sum, $amount);
} }
// Log::debug(sprintf('Current amount in piggy bank #%d ("%s") is %s', $piggyBank->id, $piggyBank->name, $sum));
return $sum;
} }
/** /**
@@ -290,43 +319,6 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
; ;
} }
/**
* Get current amount saved in piggy bank.
*/
public function getCurrentAmount(PiggyBank $piggyBank, ?Account $account = null): string
{
$sum = '0';
foreach ($piggyBank->accounts as $current) {
if (null !== $account && $account->id !== $current->id) {
continue;
}
$amount = (string) $current->pivot->current_amount;
$amount = '' === $amount ? '0' : $amount;
$sum = bcadd($sum, $amount);
}
// Log::debug(sprintf('Current amount in piggy bank #%d ("%s") is %s', $piggyBank->id, $piggyBank->name, $sum));
return $sum;
}
/**
* Get current amount saved in piggy bank.
*/
public function getCurrentNativeAmount(PiggyBank $piggyBank, ?Account $account = null): string
{
$sum = '0';
foreach ($piggyBank->accounts as $current) {
if (null !== $account && $account->id !== $current->id) {
continue;
}
$amount = (string) $current->pivot->native_current_amount;
$amount = '' === $amount ? '0' : $amount;
$sum = bcadd($sum, $amount);
}
return $sum;
}
public function getRepetition(PiggyBank $piggyBank, bool $overrule = false): ?PiggyBankRepetition public function getRepetition(PiggyBank $piggyBank, bool $overrule = false): ?PiggyBankRepetition
{ {
if (false === $overrule) { if (false === $overrule) {

View File

@@ -43,8 +43,9 @@ use FireflyIII\Support\Repositories\Recurring\CalculateRangeOccurrences;
use FireflyIII\Support\Repositories\Recurring\CalculateXOccurrences; use FireflyIII\Support\Repositories\Recurring\CalculateXOccurrences;
use FireflyIII\Support\Repositories\Recurring\CalculateXOccurrencesSince; use FireflyIII\Support\Repositories\Recurring\CalculateXOccurrencesSince;
use FireflyIII\Support\Repositories\Recurring\FiltersWeekends; use FireflyIII\Support\Repositories\Recurring\FiltersWeekends;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Pagination\LengthAwarePaginator; use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -53,14 +54,14 @@ use Illuminate\Support\Facades\Log;
/** /**
* Class RecurringRepository * Class RecurringRepository
*/ */
class RecurringRepository implements RecurringRepositoryInterface class RecurringRepository implements RecurringRepositoryInterface, UserGroupInterface
{ {
use CalculateRangeOccurrences; use CalculateRangeOccurrences;
use CalculateXOccurrences; use CalculateXOccurrences;
use CalculateXOccurrencesSince; use CalculateXOccurrencesSince;
use FiltersWeekends; use FiltersWeekends;
private User $user; use UserGroupTrait;
public function createdPreviously(Recurrence $recurrence, Carbon $date): bool public function createdPreviously(Recurrence $recurrence, Carbon $date): bool
{ {
@@ -305,13 +306,6 @@ class RecurringRepository implements RecurringRepositoryInterface
return $collector->getPaginatedGroups(); return $collector->getPaginatedGroups();
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function getTransactions(Recurrence $recurrence): Collection public function getTransactions(Recurrence $recurrence): Collection
{ {
$journalMeta = TransactionJournalMeta::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id') $journalMeta = TransactionJournalMeta::leftJoin('transaction_journals', 'transaction_journals.id', '=', 'journal_meta.transaction_journal_id')

View File

@@ -29,18 +29,17 @@ use FireflyIII\Models\RuleAction;
use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\RuleTrigger; use FireflyIII\Models\RuleTrigger;
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface; use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\Support\Search\OperatorQuerySearch; use FireflyIII\Support\Search\OperatorQuerySearch;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class RuleRepository. * Class RuleRepository.
*/ */
class RuleRepository implements RuleRepositoryInterface class RuleRepository implements RuleRepositoryInterface, UserGroupInterface
{ {
/** @var User */ use UserGroupTrait;
private $user;
/** /**
* @throws \Exception * @throws \Exception
@@ -312,13 +311,6 @@ class RuleRepository implements RuleRepositoryInterface
return true; return true;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function setOrder(Rule $rule, int $newOrder): void public function setOrder(Rule $rule, int $newOrder): void
{ {
$oldOrder = $rule->order; $oldOrder = $rule->order;

View File

@@ -27,8 +27,8 @@ use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleAction;
use FireflyIII\Models\RuleGroup; use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\RuleTrigger; use FireflyIII\Models\RuleTrigger;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\Eloquent\Relations\HasMany; use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
@@ -36,9 +36,9 @@ use Illuminate\Support\Facades\Log;
/** /**
* Class RuleGroupRepository. * Class RuleGroupRepository.
*/ */
class RuleGroupRepository implements RuleGroupRepositoryInterface class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function correctRuleGroupOrder(): void public function correctRuleGroupOrder(): void
{ {
@@ -382,13 +382,6 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface
return $search->take($limit)->get(['id', 'title', 'description']); return $search->take($limit)->get(['id', 'title', 'description']);
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function store(array $data): RuleGroup public function store(array $data): RuleGroup
{ {
$newRuleGroup = new RuleGroup( $newRuleGroup = new RuleGroup(

View File

@@ -28,16 +28,16 @@ use Carbon\Carbon;
use FireflyIII\Enums\TransactionTypeEnum; use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Exceptions\FireflyException; use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Collector\GroupCollectorInterface; use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class OperationsRepository * Class OperationsRepository
*/ */
class OperationsRepository implements OperationsRepositoryInterface class OperationsRepository implements OperationsRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
/** /**
* This method returns a list of all the withdrawal transaction journals (as arrays) set in that period * This method returns a list of all the withdrawal transaction journals (as arrays) set in that period
@@ -114,13 +114,6 @@ class OperationsRepository implements OperationsRepositoryInterface
return $array; return $array;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
private function getTags(): Collection private function getTags(): Collection
{ {
/** @var TagRepositoryInterface $repository */ /** @var TagRepositoryInterface $repository */

View File

@@ -31,17 +31,17 @@ use FireflyIII\Models\Attachment;
use FireflyIII\Models\Location; use FireflyIII\Models\Location;
use FireflyIII\Models\Note; use FireflyIII\Models\Note;
use FireflyIII\Models\Tag; use FireflyIII\Models\Tag;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log; use Illuminate\Support\Facades\Log;
/** /**
* Class TagRepository. * Class TagRepository.
*/ */
class TagRepository implements TagRepositoryInterface class TagRepository implements TagRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function count(): int public function count(): int
{ {
@@ -91,13 +91,6 @@ class TagRepository implements TagRepositoryInterface
return $collector->getExtractedJournals(); return $collector->getExtractedJournals();
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function find(int $tagId): ?Tag public function find(int $tagId): ?Tag
{ {
/** @var null|Tag */ /** @var null|Tag */

View File

@@ -43,6 +43,7 @@ use FireflyIII\Repositories\Attachment\AttachmentRepositoryInterface;
use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService; use FireflyIII\Services\Internal\Destroy\TransactionGroupDestroyService;
use FireflyIII\Services\Internal\Update\GroupUpdateService; use FireflyIII\Services\Internal\Update\GroupUpdateService;
use FireflyIII\Support\NullArrayObject; use FireflyIII\Support\NullArrayObject;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
@@ -50,7 +51,7 @@ use Illuminate\Support\Collection;
/** /**
* Class TransactionGroupRepository * Class TransactionGroupRepository
*/ */
class TransactionGroupRepository implements TransactionGroupRepositoryInterface class TransactionGroupRepository implements TransactionGroupRepositoryInterface, UserGroupInterface
{ {
use UserGroupTrait; use UserGroupTrait;

View File

@@ -33,6 +33,7 @@ use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable; use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\QueryException; use Illuminate\Database\QueryException;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Str;
/** /**
* Class UserRepository. * Class UserRepository.
@@ -275,7 +276,7 @@ class UserRepository implements UserRepositoryInterface
$now->addDays(2); $now->addDays(2);
$invitee = new InvitedUser(); $invitee = new InvitedUser();
$invitee->user()->associate($user); $invitee->user()->associate($user);
$invitee->invite_code = \Str::random(64); $invitee->invite_code = Str::random(64);
$invitee->email = $email; $invitee->email = $email;
$invitee->redeemed = false; $invitee->redeemed = false;
$invitee->expires = $now; $invitee->expires = $now;
@@ -310,7 +311,7 @@ class UserRepository implements UserRepositoryInterface
'blocked' => $data['blocked'] ?? false, 'blocked' => $data['blocked'] ?? false,
'blocked_code' => $data['blocked_code'] ?? null, 'blocked_code' => $data['blocked_code'] ?? null,
'email' => $data['email'], 'email' => $data['email'],
'password' => \Str::random(24), 'password' => Str::random(24),
] ]
); );
$role = $data['role'] ?? ''; $role = $data['role'] ?? '';

View File

@@ -31,16 +31,17 @@ use FireflyIII\Models\GroupMembership;
use FireflyIII\Models\UserGroup; use FireflyIII\Models\UserGroup;
use FireflyIII\Models\UserRole; use FireflyIII\Models\UserRole;
use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface; use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
/** /**
* Class UserGroupRepository * Class UserGroupRepository
*/ */
class UserGroupRepository implements UserGroupRepositoryInterface class UserGroupRepository implements UserGroupRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function destroy(UserGroup $userGroup): void public function destroy(UserGroup $userGroup): void
{ {
@@ -187,14 +188,6 @@ class UserGroupRepository implements UserGroupRepositoryInterface
return $this->user->groupMemberships()->where('user_group_id', $groupId)->get(); return $this->user->groupMemberships()->where('user_group_id', $groupId)->get();
} }
public function setUser(null|Authenticatable|User $user): void
{
app('log')->debug(sprintf('Now in %s', __METHOD__));
if ($user instanceof User) {
$this->user = $user;
}
}
public function update(UserGroup $userGroup, array $data): UserGroup public function update(UserGroup $userGroup, array $data): UserGroup
{ {
$userGroup->title = $data['title']; $userGroup->title = $data['title'];

View File

@@ -27,16 +27,17 @@ namespace FireflyIII\Repositories\Webhook;
use FireflyIII\Models\Webhook; use FireflyIII\Models\Webhook;
use FireflyIII\Models\WebhookAttempt; use FireflyIII\Models\WebhookAttempt;
use FireflyIII\Models\WebhookMessage; use FireflyIII\Models\WebhookMessage;
use FireflyIII\User; use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use Illuminate\Contracts\Auth\Authenticatable; use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\Support\Str;
/** /**
* Class WebhookRepository * Class WebhookRepository
*/ */
class WebhookRepository implements WebhookRepositoryInterface class WebhookRepository implements WebhookRepositoryInterface, UserGroupInterface
{ {
private User $user; use UserGroupTrait;
public function all(): Collection public function all(): Collection
{ {
@@ -85,16 +86,9 @@ class WebhookRepository implements WebhookRepositoryInterface
; ;
} }
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function store(array $data): Webhook public function store(array $data): Webhook
{ {
$secret = \Str::random(24); $secret = Str::random(24);
$fullData = [ $fullData = [
'user_id' => $this->user->id, 'user_id' => $this->user->id,
'user_group_id' => $this->user->user_group_id, 'user_group_id' => $this->user->user_group_id,
@@ -120,7 +114,7 @@ class WebhookRepository implements WebhookRepositoryInterface
$webhook->url = $data['url'] ?? $webhook->url; $webhook->url = $data['url'] ?? $webhook->url;
if (true === $data['secret']) { if (true === $data['secret']) {
$secret = \Str::random(24); $secret = Str::random(24);
$webhook->secret = $secret; $webhook->secret = $secret;
} }

View File

@@ -54,8 +54,8 @@ class BillUpdateService
if (array_key_exists('currency_id', $data) || array_key_exists('currency_code', $data)) { if (array_key_exists('currency_id', $data) || array_key_exists('currency_code', $data)) {
$factory = app(TransactionCurrencyFactory::class); $factory = app(TransactionCurrencyFactory::class);
$currency = $factory->find((int) ($data['currency_id'] ?? null), $data['currency_code'] ?? null) ?? $currency = $factory->find((int) ($data['currency_id'] ?? null), $data['currency_code'] ?? null)
app('amount')->getNativeCurrencyByUserGroup($bill->user->userGroup); ?? app('amount')->getNativeCurrencyByUserGroup($bill->user->userGroup);
// enable the currency if it isn't. // enable the currency if it isn't.
$currency->enabled = true; $currency->enabled = true;

View File

@@ -703,8 +703,8 @@ class JournalUpdateService
// find currency in data array // find currency in data array
$newForeignId = $this->data['foreign_currency_id'] ?? null; $newForeignId = $this->data['foreign_currency_id'] ?? null;
$newForeignCode = $this->data['foreign_currency_code'] ?? null; $newForeignCode = $this->data['foreign_currency_code'] ?? null;
$foreignCurrency = $this->currencyRepository->findCurrencyNull($newForeignId, $newForeignCode) ?? $foreignCurrency = $this->currencyRepository->findCurrencyNull($newForeignId, $newForeignCode)
$foreignCurrency; ?? $foreignCurrency;
// not the same as normal currency // not the same as normal currency
if (null !== $foreignCurrency && $foreignCurrency->id === $this->transactionJournal->transaction_currency_id) { if (null !== $foreignCurrency && $foreignCurrency->id === $this->transactionJournal->transaction_currency_id) {

View File

@@ -45,6 +45,17 @@ final class BillDateCalculatorTest extends TestCase
$this->calculator = new BillDateCalculator(); $this->calculator = new BillDateCalculator();
} }
/**
* Stupid long method names I'm not going to do that.
*
* @dataProvider provideDates
*/
public function testGivenSomeDataItWorks(Carbon $earliest, Carbon $latest, Carbon $billStart, string $period, int $skip, ?Carbon $lastPaid, array $expected): void
{
$result = $this->calculator->getPayDates($earliest, $latest, $billStart, $period, $skip, $lastPaid);
self::assertSame($expected, $result);
}
public static function provideDates(): iterable public static function provideDates(): iterable
{ {
// Carbon $earliest, Carbon $latest, Carbon $billStart, string $period, int $skip, ?Carbon $lastPaid // Carbon $earliest, Carbon $latest, Carbon $billStart, string $period, int $skip, ?Carbon $lastPaid
@@ -66,15 +77,4 @@ final class BillDateCalculatorTest extends TestCase
'1Ya' => ['earliest' => Carbon::parse('2023-11-01'), 'latest' => Carbon::parse('2023-11-30'), 'billStart' => Carbon::parse('2021-05-01'), 'period' => 'yearly', 'skip' => 0, 'lastPaid' => Carbon::parse('2023-05-02'), 'expected' => ['2024-05-01']], '1Ya' => ['earliest' => Carbon::parse('2023-11-01'), 'latest' => Carbon::parse('2023-11-30'), 'billStart' => Carbon::parse('2021-05-01'), 'period' => 'yearly', 'skip' => 0, 'lastPaid' => Carbon::parse('2023-05-02'), 'expected' => ['2024-05-01']],
]; ];
} }
/**
* Stupid long method names I'm not going to do that.
*
* @dataProvider provideDates
*/
public function testGivenSomeDataItWorks(Carbon $earliest, Carbon $latest, Carbon $billStart, string $period, int $skip, ?Carbon $lastPaid, array $expected): void
{
$result = $this->calculator->getPayDates($earliest, $latest, $billStart, $period, $skip, $lastPaid);
self::assertSame($expected, $result);
}
} }