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\Attachment;
use FireflyIII\Models\Location;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Services\Internal\Destroy\AccountDestroyService;
use FireflyIII\Services\Internal\Update\AccountUpdateService;
use FireflyIII\Support\Facades\Steam;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
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\Relations\HasMany;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage;
/**
* Class AccountRepository.
*/
class AccountRepository implements AccountRepositoryInterface
class AccountRepository implements AccountRepositoryInterface, UserGroupInterface
{
use UserGroupTrait;
@@ -210,8 +209,8 @@ class AccountRepository implements AccountRepositoryInterface
{
$set = $account->attachments()->get();
/** @var \Storage $disk */
$disk = \Storage::disk('upload');
/** @var Storage $disk */
$disk = Storage::disk('upload');
return $set->each(
static function (Attachment $attachment) use ($disk) { // @phpstan-ignore-line
@@ -239,13 +238,6 @@ class AccountRepository implements AccountRepositoryInterface
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
{
$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\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Facades\Steam;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
/**
* Class AccountTasker.
*/
class AccountTasker implements AccountTaskerInterface
class AccountTasker implements AccountTaskerInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
/**
* @throws FireflyException
@@ -49,7 +49,7 @@ class AccountTasker implements AccountTaskerInterface
{
$yesterday = clone $start;
$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")', $end->format('Y-m-d H:i:s')));
$startSet = Steam::finalAccountsBalance($accounts, $yesterday);
@@ -289,11 +289,4 @@ class AccountTasker implements AccountTaskerInterface
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\Models\TransactionCurrency;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* 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
@@ -66,13 +66,6 @@ class OperationsRepository implements OperationsRepositoryInterface
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
{
$array = [];

View File

@@ -28,8 +28,8 @@ use FireflyIII\Factory\AttachmentFactory;
use FireflyIII\Helpers\Attachments\AttachmentHelperInterface;
use FireflyIII\Models\Attachment;
use FireflyIII\Models\Note;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Contracts\Encryption\DecryptException;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Storage;
@@ -38,10 +38,9 @@ use League\Flysystem\UnableToDeleteFile;
/**
* Class AttachmentRepository.
*/
class AttachmentRepository implements AttachmentRepositoryInterface
class AttachmentRepository implements AttachmentRepositoryInterface, UserGroupInterface
{
/** @var User */
private $user;
use UserGroupTrait;
/**
* @throws \Exception
@@ -126,13 +125,6 @@ class AttachmentRepository implements AttachmentRepositoryInterface
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
{
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\Support\CacheProperties;
use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\Query\JoinClause;
use Illuminate\Pagination\LengthAwarePaginator;
@@ -48,7 +49,7 @@ use Illuminate\Support\Facades\Log;
/**
* Class BillRepository.
*/
class BillRepository implements BillRepositoryInterface
class BillRepository implements BillRepositoryInterface, UserGroupInterface
{
use CreatesObjectGroups;
use UserGroupTrait;

View File

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

View File

@@ -31,8 +31,9 @@ use FireflyIII\Models\Budget;
use FireflyIII\Models\BudgetLimit;
use FireflyIII\Models\Note;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
@@ -40,9 +41,9 @@ use Illuminate\Support\Facades\Log;
/**
* 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)
@@ -262,13 +263,6 @@ class BudgetLimitRepository implements BudgetLimitRepositoryInterface
return (string) $budgetLimit->notes()->first()?->text;
}
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
/**
* @throws FireflyException
*/

View File

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

View File

@@ -29,17 +29,16 @@ use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* Class NoBudgetRepository
*/
class NoBudgetRepository implements NoBudgetRepositoryInterface
class NoBudgetRepository implements NoBudgetRepositoryInterface, UserGroupInterface
{
/** @var User */
private $user;
use UserGroupTrait;
public function getNoBudgetPeriodReport(Collection $accounts, Carbon $start, Carbon $end): array
{
@@ -80,13 +79,6 @@ class NoBudgetRepository implements NoBudgetRepositoryInterface
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
{
/** @var GroupCollectorInterface $collector */

View File

@@ -31,19 +31,18 @@ use FireflyIII\Models\Account;
use FireflyIII\Models\Budget;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
/**
* 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,
@@ -186,13 +185,6 @@ class OperationsRepository implements OperationsRepositoryInterface
return $array;
}
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
private function getBudgets(): Collection
{
/** @var BudgetRepositoryInterface $repos */

View File

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

View File

@@ -28,16 +28,16 @@ use Carbon\Carbon;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* 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
@@ -77,21 +77,14 @@ class NoCategoryRepository implements NoCategoryRepositoryInterface
$journalId = (int) $journal['transaction_journal_id'];
$array[$currencyId]['categories'][0]['transaction_journals'][$journalId]
= [
'amount' => app('steam')->negative($journal['amount']),
'date' => $journal['date'],
];
'amount' => app('steam')->negative($journal['amount']),
'date' => $journal['date'],
];
}
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
* 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'];
$array[$currencyId]['categories'][0]['transaction_journals'][$journalId]
= [
'amount' => app('steam')->positive($journal['amount']),
'date' => $journal['date'],
];
'amount' => app('steam')->positive($journal['amount']),
'date' => $journal['date'],
];
}
return $array;

View File

@@ -29,17 +29,18 @@ use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\Support\Facades\Amount;
use FireflyIII\Support\Report\Summarizer\TransactionSummarizer;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
/**
* 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
@@ -112,13 +113,6 @@ class OperationsRepository implements OperationsRepositoryInterface
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.
*/

View File

@@ -26,18 +26,17 @@ namespace FireflyIII\Repositories\Currency;
use Carbon\Carbon;
use FireflyIII\Models\CurrencyExchangeRate;
use FireflyIII\Models\TransactionCurrency;
use FireflyIII\Models\UserGroup;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection;
/**
* Class CurrencyRepository.
*/
class CurrencyRepository implements CurrencyRepositoryInterface
class CurrencyRepository implements CurrencyRepositoryInterface, UserGroupInterface
{
private User $user;
private UserGroup $userGroup;
use UserGroupTrait;
#[\Override]
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\Transaction;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* Class JournalAPIRepository
*/
class JournalAPIRepository implements JournalAPIRepositoryInterface
class JournalAPIRepository implements JournalAPIRepositoryInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
/**
* Returns transaction by ID. Used to validate attachments.
@@ -96,11 +96,4 @@ class JournalAPIRepository implements JournalAPIRepositoryInterface
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\TransactionJournal;
use FireflyIII\Support\CacheProperties;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* Class JournalCLIRepository
*/
class JournalCLIRepository implements JournalCLIRepositoryInterface
class JournalCLIRepository implements JournalCLIRepositoryInterface, UserGroupInterface
{
use UserGroupTrait;
/**
* 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();
}
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\Update\JournalUpdateService;
use FireflyIII\Support\CacheProperties;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* Class JournalRepository.
*/
class JournalRepository implements JournalRepositoryInterface
class JournalRepository implements JournalRepositoryInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
public function destroyGroup(TransactionGroup $transactionGroup): void
{
@@ -204,13 +204,6 @@ class JournalRepository implements JournalRepositoryInterface
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
{
/** @var null|TransactionJournal $journal */

View File

@@ -28,16 +28,16 @@ use FireflyIII\Models\LinkType;
use FireflyIII\Models\Note;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionJournalLink;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* Class LinkTypeRepository.
*/
class LinkTypeRepository implements LinkTypeRepositoryInterface
class LinkTypeRepository implements LinkTypeRepositoryInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
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
{
$linkType = new LinkType();

View File

@@ -26,16 +26,16 @@ namespace FireflyIII\Repositories\ObjectGroup;
use FireflyIII\Models\ObjectGroup;
use FireflyIII\Models\PiggyBank;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* Class ObjectGroupRepository
*/
class ObjectGroupRepository implements ObjectGroupRepositoryInterface
class ObjectGroupRepository implements ObjectGroupRepositoryInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
public function deleteAll(): void
{
@@ -127,13 +127,6 @@ class ObjectGroupRepository implements ObjectGroupRepositoryInterface
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
{
if (array_key_exists('title', $data)) {

View File

@@ -36,16 +36,15 @@ use FireflyIII\Models\TransactionJournal;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\Repositories\Journal\JournalRepositoryInterface;
use FireflyIII\Support\Facades\Steam;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
/**
* Class PiggyBankRepository.
*/
class PiggyBankRepository implements PiggyBankRepositoryInterface
class PiggyBankRepository implements PiggyBankRepositoryInterface, UserGroupInterface
{
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
{
return $piggyBank->piggyBankEvents()->orderBy('date', 'DESC')->orderBy('id', 'DESC')->get();
@@ -242,11 +259,23 @@ class PiggyBankRepository implements PiggyBankRepositoryInterface
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) {
$this->user = $user;
$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;
}
/**
@@ -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
{
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\CalculateXOccurrencesSince;
use FireflyIII\Support\Repositories\Recurring\FiltersWeekends;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Database\Eloquent\Builder;
use Illuminate\Pagination\LengthAwarePaginator;
use Illuminate\Support\Collection;
@@ -53,14 +54,14 @@ use Illuminate\Support\Facades\Log;
/**
* Class RecurringRepository
*/
class RecurringRepository implements RecurringRepositoryInterface
class RecurringRepository implements RecurringRepositoryInterface, UserGroupInterface
{
use CalculateRangeOccurrences;
use CalculateXOccurrences;
use CalculateXOccurrencesSince;
use FiltersWeekends;
private User $user;
use UserGroupTrait;
public function createdPreviously(Recurrence $recurrence, Carbon $date): bool
{
@@ -305,13 +306,6 @@ class RecurringRepository implements RecurringRepositoryInterface
return $collector->getPaginatedGroups();
}
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
public function getTransactions(Recurrence $recurrence): Collection
{
$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\RuleTrigger;
use FireflyIII\Repositories\RuleGroup\RuleGroupRepositoryInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\Support\Search\OperatorQuerySearch;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection;
/**
* Class RuleRepository.
*/
class RuleRepository implements RuleRepositoryInterface
class RuleRepository implements RuleRepositoryInterface, UserGroupInterface
{
/** @var User */
private $user;
use UserGroupTrait;
/**
* @throws \Exception
@@ -312,13 +311,6 @@ class RuleRepository implements RuleRepositoryInterface
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
{
$oldOrder = $rule->order;

View File

@@ -27,8 +27,8 @@ use FireflyIII\Models\Rule;
use FireflyIII\Models\RuleAction;
use FireflyIII\Models\RuleGroup;
use FireflyIII\Models\RuleTrigger;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Support\Collection;
use Illuminate\Support\Facades\Log;
@@ -36,9 +36,9 @@ use Illuminate\Support\Facades\Log;
/**
* Class RuleGroupRepository.
*/
class RuleGroupRepository implements RuleGroupRepositoryInterface
class RuleGroupRepository implements RuleGroupRepositoryInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
public function correctRuleGroupOrder(): void
{
@@ -382,13 +382,6 @@ class RuleGroupRepository implements RuleGroupRepositoryInterface
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
{
$newRuleGroup = new RuleGroup(

View File

@@ -28,16 +28,16 @@ use Carbon\Carbon;
use FireflyIII\Enums\TransactionTypeEnum;
use FireflyIII\Exceptions\FireflyException;
use FireflyIII\Helpers\Collector\GroupCollectorInterface;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use Illuminate\Support\Collection;
/**
* 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
@@ -114,13 +114,6 @@ class OperationsRepository implements OperationsRepositoryInterface
return $array;
}
public function setUser(null|Authenticatable|User $user): void
{
if ($user instanceof User) {
$this->user = $user;
}
}
private function getTags(): Collection
{
/** @var TagRepositoryInterface $repository */

View File

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

View File

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

View File

@@ -31,16 +31,17 @@ use FireflyIII\Models\GroupMembership;
use FireflyIII\Models\UserGroup;
use FireflyIII\Models\UserRole;
use FireflyIII\Repositories\UserGroups\Currency\CurrencyRepositoryInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupInterface;
use FireflyIII\Support\Repositories\UserGroup\UserGroupTrait;
use FireflyIII\User;
use Illuminate\Contracts\Auth\Authenticatable;
use Illuminate\Support\Collection;
/**
* Class UserGroupRepository
*/
class UserGroupRepository implements UserGroupRepositoryInterface
class UserGroupRepository implements UserGroupRepositoryInterface, UserGroupInterface
{
private User $user;
use UserGroupTrait;
public function destroy(UserGroup $userGroup): void
{
@@ -187,14 +188,6 @@ class UserGroupRepository implements UserGroupRepositoryInterface
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
{
$userGroup->title = $data['title'];

View File

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

View File

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

View File

@@ -703,8 +703,8 @@ class JournalUpdateService
// find currency in data array
$newForeignId = $this->data['foreign_currency_id'] ?? null;
$newForeignCode = $this->data['foreign_currency_code'] ?? null;
$foreignCurrency = $this->currencyRepository->findCurrencyNull($newForeignId, $newForeignCode) ??
$foreignCurrency;
$foreignCurrency = $this->currencyRepository->findCurrencyNull($newForeignId, $newForeignCode)
?? $foreignCurrency;
// not the same as normal currency
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();
}
/**
* 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
{
// 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']],
];
}
/**
* 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);
}
}