Expand API and refactor for user groups.

This commit is contained in:
James Cole
2023-09-21 15:50:49 +02:00
parent 7dbdf0c4ff
commit 0b220f3288
45 changed files with 950 additions and 243 deletions

View File

@@ -30,7 +30,9 @@ use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionGroup;
use FireflyIII\Models\TransactionJournal;
use FireflyIII\Models\TransactionType;
use FireflyIII\Models\UserGroup;
use FireflyIII\Repositories\Account\AccountRepositoryInterface;
use FireflyIII\User;
use Illuminate\Support\Facades\Log;
use Illuminate\Validation\Validator;
@@ -42,17 +44,20 @@ trait TransactionValidation
/**
* Validates the given account information. Switches on given transaction type.
*
* @param Validator $validator
* Inclusion of user and/or group is optional.
*
* @param Validator $validator
* @param User|null $user
* @param UserGroup|null $userGroup
*/
public function validateAccountInformation(Validator $validator): void
public function validateAccountInformation(Validator $validator, User $user = null, UserGroup $userGroup = null): void
{
if ($validator->errors()->count() > 0) {
return;
}
Log::debug('Now in validateAccountInformation (TransactionValidation) ()');
$transactions = $this->getTransactionsArray($validator);
$data = $validator->getData();
$transactions = $this->getTransactionsArray($validator);
$data = $validator->getData();
$transactionType = $data['type'] ?? 'invalid';
Log::debug(sprintf('Going to loop %d transaction(s)', count($transactions)));
@@ -61,6 +66,8 @@ trait TransactionValidation
* @var array $transaction
*/
foreach ($transactions as $index => $transaction) {
$transaction['user'] = $user;
$transaction['user_group'] = $userGroup;
if (!is_int($index)) {
continue;
}
@@ -107,6 +114,13 @@ trait TransactionValidation
/** @var AccountValidator $accountValidator */
$accountValidator = app(AccountValidator::class);
if (array_key_exists('user', $transaction) && null !== $transaction['user']) {
$accountValidator->setUser($transaction['user']);
}
if (array_key_exists('user_group', $transaction) && null !== $transaction['user_group']) {
$accountValidator->setUserGroup($transaction['user_group']);
}
$transactionType = $transaction['type'] ?? $transactionType;
$accountValidator->setTransactionType($transactionType);
@@ -204,7 +218,8 @@ trait TransactionValidation
array $transaction,
string $transactionType,
int $index
): void {
): void
{
Log::debug('Now in sanityCheckForeignCurrency()');
if (0 !== $validator->errors()->count()) {
Log::debug('Already have errors, return');