Various code cleanup.

This commit is contained in:
James Cole
2021-04-06 08:51:27 +02:00
parent d32446b171
commit 5ceef2e9c3
47 changed files with 161 additions and 557 deletions

View File

@@ -94,13 +94,13 @@ class StoreController extends Controller
$validator = Validator::make( $validator = Validator::make(
['transactions' => [['description' => $e->getMessage()]]], ['transactions.0.description' => new IsDuplicateTransaction] ['transactions' => [['description' => $e->getMessage()]]], ['transactions.0.description' => new IsDuplicateTransaction]
); );
throw new ValidationException($validator); throw new ValidationException($validator,0, $e);
} catch (FireflyException $e) { } catch (FireflyException $e) {
Log::warning('Caught an exception. Return error message.'); Log::warning('Caught an exception. Return error message.');
Log::error($e->getMessage()); Log::error($e->getMessage());
$message = sprintf('Internal exception: %s', $e->getMessage()); $message = sprintf('Internal exception: %s', $e->getMessage());
$validator = Validator::make(['transactions' => [['description' => $message]]], ['transactions.0.description' => new IsDuplicateTransaction]); $validator = Validator::make(['transactions' => [['description' => $message]]], ['transactions.0.description' => new IsDuplicateTransaction]);
throw new ValidationException($validator); throw new ValidationException($validator,0, $e);
} }
app('preferences')->mark(); app('preferences')->mark();
event(new StoredTransactionGroup($transactionGroup, $data['apply_rules'] ?? true)); event(new StoredTransactionGroup($transactionGroup, $data['apply_rules'] ?? true));

View File

@@ -50,13 +50,9 @@ class DestroyController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var CurrencyRepositoryInterface repository */
$this->repository = app(CurrencyRepositoryInterface::class); $this->repository = app(CurrencyRepositoryInterface::class);
$this->userRepository = app(UserRepositoryInterface::class); $this->userRepository = app(UserRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -77,13 +77,9 @@ class ListController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var CurrencyRepositoryInterface repository */
$this->repository = app(CurrencyRepositoryInterface::class); $this->repository = app(CurrencyRepositoryInterface::class);
$this->userRepository = app(UserRepositoryInterface::class); $this->userRepository = app(UserRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -56,12 +56,8 @@ class ShowController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var CurrencyRepositoryInterface repository */
$this->repository = app(CurrencyRepositoryInterface::class); $this->repository = app(CurrencyRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -56,13 +56,9 @@ class StoreController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var CurrencyRepositoryInterface repository */
$this->repository = app(CurrencyRepositoryInterface::class); $this->repository = app(CurrencyRepositoryInterface::class);
$this->userRepository = app(UserRepositoryInterface::class); $this->userRepository = app(UserRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -56,13 +56,9 @@ class UpdateController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var CurrencyRepositoryInterface repository */
$this->repository = app(CurrencyRepositoryInterface::class); $this->repository = app(CurrencyRepositoryInterface::class);
$this->userRepository = app(UserRepositoryInterface::class); $this->userRepository = app(UserRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -64,7 +64,7 @@ class ConfigurationController extends Controller
} catch (FireflyException $e) { } catch (FireflyException $e) {
Log::error($e->getMessage()); Log::error($e->getMessage());
Log::error($e->getTraceAsString()); Log::error($e->getTraceAsString());
throw new FireflyException('200030: Could not load config variables.'); throw new FireflyException('200030: Could not load config variables.', 0, $e);
} }
$staticData = $this->getStaticConfiguration(); $staticData = $this->getStaticConfiguration();
$return = []; $return = [];

View File

@@ -54,7 +54,6 @@ class UserController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var UserRepositoryInterface repository */
$this->repository = app(UserRepositoryInterface::class); $this->repository = app(UserRepositoryInterface::class);
return $next($request); return $next($request);

View File

@@ -53,12 +53,8 @@ class AttemptController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -48,12 +48,8 @@ class DestroyController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -49,12 +49,8 @@ class MessageController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -50,12 +50,8 @@ class ShowController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -47,12 +47,8 @@ class StoreController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -27,7 +27,6 @@ use FireflyIII\Api\V1\Controllers\Controller;
use FireflyIII\Jobs\SendWebhookMessage; use FireflyIII\Jobs\SendWebhookMessage;
use FireflyIII\Models\Webhook; use FireflyIII\Models\Webhook;
use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface; use FireflyIII\Repositories\Webhook\WebhookRepositoryInterface;
use FireflyIII\User;
use Illuminate\Http\JsonResponse; use Illuminate\Http\JsonResponse;
/** /**
@@ -45,12 +44,8 @@ class SubmitController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -47,12 +47,8 @@ class UpdateController extends Controller
parent::__construct(); parent::__construct();
$this->middleware( $this->middleware(
function ($request, $next) { function ($request, $next) {
/** @var User $admin */
$admin = auth()->user();
/** @var WebhookRepositoryInterface repository */
$this->repository = app(WebhookRepositoryInterface::class); $this->repository = app(WebhookRepositoryInterface::class);
$this->repository->setUser($admin); $this->repository->setUser(auth()->user());
return $next($request); return $next($request);
} }

View File

@@ -41,7 +41,7 @@ class ApiDemoUser
*/ */
public function handle(Request $request, Closure $next) public function handle(Request $request, Closure $next)
{ {
/** @var User $user */ /** @var User|null $user */
$user = $request->user(); $user = $request->user();
if (null === $user) { if (null === $user) {

View File

@@ -86,9 +86,6 @@ class GenericRequest extends FormRequest
*/ */
private function parseAccounts(): void private function parseAccounts(): void
{ {
if (null === $this->accounts) {
$this->accounts = new Collection;
}
if (0 !== $this->accounts->count()) { if (0 !== $this->accounts->count()) {
return; return;
} }
@@ -121,9 +118,6 @@ class GenericRequest extends FormRequest
*/ */
private function parseBills(): void private function parseBills(): void
{ {
if (null === $this->bills) {
$this->bills = new Collection;
}
if (0 !== $this->bills->count()) { if (0 !== $this->bills->count()) {
return; return;
} }
@@ -156,9 +150,6 @@ class GenericRequest extends FormRequest
*/ */
private function parseBudgets(): void private function parseBudgets(): void
{ {
if (null === $this->budgets) {
$this->budgets = new Collection;
}
if (0 !== $this->budgets->count()) { if (0 !== $this->budgets->count()) {
return; return;
} }
@@ -191,9 +182,6 @@ class GenericRequest extends FormRequest
*/ */
private function parseCategories(): void private function parseCategories(): void
{ {
if (null === $this->categories) {
$this->categories = new Collection;
}
if (0 !== $this->categories->count()) { if (0 !== $this->categories->count()) {
return; return;
} }
@@ -284,9 +272,6 @@ class GenericRequest extends FormRequest
*/ */
private function parseTags(): void private function parseTags(): void
{ {
if (null === $this->tags) {
$this->tags = new Collection;
}
if (0 !== $this->tags->count()) { if (0 !== $this->tags->count()) {
return; return;
} }
@@ -311,7 +296,7 @@ class GenericRequest extends FormRequest
*/ */
public function rules(): array public function rules(): array
{ {
// this is cheating but it works: // this is cheating but it works to initialize the collections.
$this->accounts = new Collection; $this->accounts = new Collection;
$this->budgets = new Collection; $this->budgets = new Collection;
$this->categories = new Collection; $this->categories = new Collection;

View File

@@ -79,7 +79,7 @@ class StoreRequest extends FormRequest
{ {
$return = []; $return = [];
// transaction data: // transaction data:
/** @var array $transactions */ /** @var array|null $transactions */
$transactions = $this->get('transactions'); $transactions = $this->get('transactions');
if (null === $transactions) { if (null === $transactions) {
return []; return [];
@@ -101,7 +101,7 @@ class StoreRequest extends FormRequest
{ {
$return = []; $return = [];
// repetition data: // repetition data:
/** @var array $repetitions */ /** @var array|null $repetitions */
$repetitions = $this->get('repetitions'); $repetitions = $this->get('repetitions');
if (null === $repetitions) { if (null === $repetitions) {
return []; return [];

View File

@@ -84,7 +84,7 @@ class UpdateRequest extends FormRequest
{ {
$return = []; $return = [];
// repetition data: // repetition data:
/** @var array $repetitions */ /** @var array|null $repetitions */
$repetitions = $this->get('repetitions'); $repetitions = $this->get('repetitions');
if (null === $repetitions) { if (null === $repetitions) {
return null; return null;
@@ -126,7 +126,7 @@ class UpdateRequest extends FormRequest
{ {
$return = []; $return = [];
// transaction data: // transaction data:
/** @var array $transactions */ /** @var array|null $transactions */
$transactions = $this->get('transactions'); $transactions = $this->get('transactions');
if (null === $transactions) { if (null === $transactions) {
return null; return null;

View File

@@ -150,10 +150,7 @@ class UpdateRequest extends FormRequest
return $return; return $return;
} }
/** /** @var array $transaction */
* @var int $index
* @var array $transaction
*/
foreach ($this->get('transactions') as $transaction) { foreach ($this->get('transactions') as $transaction) {
// default response is to update nothing in the transaction: // default response is to update nothing in the transaction:
$current = []; $current = [];

View File

@@ -117,12 +117,6 @@ class UpdateRequest extends FormRequest
$validator->errors()->add('outward_id', 'Inward ID must be different from outward ID.'); $validator->errors()->add('outward_id', 'Inward ID must be different from outward ID.');
} }
if (null === $inward) {
$validator->errors()->add('inward_id', 'This is not a valid inward journal.');
}
if (null === $outward) {
$validator->errors()->add('inward_id', 'This is not a valid outward journal.');
}
$inDB = $repository->findSpecificLink($existing->linkType, $inward, $outward); $inDB = $repository->findSpecificLink($existing->linkType, $inward, $outward);
if (null === $inDB) { if (null === $inDB) {
return; return;

View File

@@ -214,14 +214,6 @@ class ApplyRules extends Command
$finalList = new Collection; $finalList = new Collection;
$accountList = explode(',', $accountString); $accountList = explode(',', $accountString);
// @codeCoverageIgnoreStart
if (0 === count($accountList)) {
$this->error('Please use the --accounts option to indicate the accounts to apply rules to.');
return false;
}
// @codeCoverageIgnoreEnd
/** @var AccountRepositoryInterface $accountRepository */ /** @var AccountRepositoryInterface $accountRepository */
$accountRepository = app(AccountRepositoryInterface::class); $accountRepository = app(AccountRepositoryInterface::class);
$accountRepository->setUser($this->getUser()); $accountRepository->setUser($this->getUser());
@@ -255,12 +247,7 @@ class ApplyRules extends Command
return true; return true;
} }
$ruleGroupList = explode(',', $ruleGroupString); $ruleGroupList = explode(',', $ruleGroupString);
// @codeCoverageIgnoreStart
if (0 === count($ruleGroupList)) {
// can be empty.
return true;
}
// @codeCoverageIgnoreEnd
foreach ($ruleGroupList as $ruleGroupId) { foreach ($ruleGroupList as $ruleGroupId) {
$ruleGroup = $this->ruleGroupRepository->find((int)$ruleGroupId); $ruleGroup = $this->ruleGroupRepository->find((int)$ruleGroupId);
if ($ruleGroup->active) { if ($ruleGroup->active) {
@@ -286,14 +273,6 @@ class ApplyRules extends Command
} }
$ruleList = explode(',', $ruleString); $ruleList = explode(',', $ruleString);
// @codeCoverageIgnoreStart
if (0 === count($ruleList)) {
// can be empty.
return true;
}
// @codeCoverageIgnoreEnd
foreach ($ruleList as $ruleId) { foreach ($ruleList as $ruleId) {
$rule = $this->ruleRepository->find((int)$ruleId); $rule = $this->ruleRepository->find((int)$ruleId);
if (null !== $rule && $rule->active) { if (null !== $rule && $rule->active) {

View File

@@ -65,9 +65,8 @@ class Cron extends Command
$date = null; $date = null;
try { try {
$date = new Carbon($this->option('date')); $date = new Carbon($this->option('date'));
} catch (InvalidArgumentException | Exception $e) { } catch (InvalidArgumentException $e) {
$this->error(sprintf('"%s" is not a valid date', $this->option('date'))); $this->error(sprintf('"%s" is not a valid date', $this->option('date')));
$e->getMessage();
} }
$force = (bool)$this->option('force'); $force = (bool)$this->option('force');
@@ -127,13 +126,15 @@ class Cron extends Command
$recurring->setDate($date); $recurring->setDate($date);
} }
$result = $recurring->fire(); $recurring->fire();
if($recurring->jobErrored) {
if (false === $result) { $this->error(sprintf('Error in "create recurring transactions" cron: %s', $recurring->message));
$this->line('The recurring transaction cron job did not fire.');
} }
if (true === $result) { if($recurring->jobFired) {
$this->line('The recurring transaction cron job fired successfully.'); $this->error(sprintf('"Create recurring transactions" cron fired: %s', $recurring->message));
}
if($recurring->jobSucceeded) {
$this->error(sprintf('"Create recurring transactions" cron ran with success: %s', $recurring->message));
} }
} }
@@ -142,7 +143,6 @@ class Cron extends Command
* @param Carbon|null $date * @param Carbon|null $date
* *
* @throws FireflyException * @throws FireflyException
* @throws Exception
*/ */
private function autoBudgetCronJob(bool $force, ?Carbon $date): void private function autoBudgetCronJob(bool $force, ?Carbon $date): void
{ {
@@ -153,13 +153,16 @@ class Cron extends Command
$autoBudget->setDate($date); $autoBudget->setDate($date);
} }
$result = $autoBudget->fire(); $autoBudget->fire();
if (false === $result) { if($autoBudget->jobErrored) {
$this->line('The auto budget cron job did not fire.'); $this->error(sprintf('Error in "create auto budgets" cron: %s', $autoBudget->message));
} }
if (true === $result) { if($autoBudget->jobFired) {
$this->line('The auto budget cron job fired successfully.'); $this->error(sprintf('"Create auto budgets" cron fired: %s', $autoBudget->message));
}
if($autoBudget->jobSucceeded) {
$this->error(sprintf('"Create auto budgets" cron ran with success: %s', $autoBudget->message));
} }
} }
@@ -167,6 +170,8 @@ class Cron extends Command
/** /**
* @param bool $force * @param bool $force
* @param Carbon|null $date * @param Carbon|null $date
*
* @throws FireflyException
*/ */
private function telemetryCronJob(bool $force, ?Carbon $date): void private function telemetryCronJob(bool $force, ?Carbon $date): void
{ {
@@ -182,13 +187,16 @@ class Cron extends Command
$telemetry->setDate($date); $telemetry->setDate($date);
} }
$result = $telemetry->fire(); $telemetry->fire();
if (false === $result) { if($telemetry->jobErrored) {
$this->line('The telemetry cron job did not fire.'); $this->error(sprintf('Error in "send telemetry" cron: %s', $telemetry->message));
} }
if (true === $result) { if($telemetry->jobFired) {
$this->line('The telemetry cron job fired successfully.'); $this->error(sprintf('"Send telemetry" cron fired: %s', $telemetry->message));
}
if($telemetry->jobSucceeded) {
$this->error(sprintf('"Send telemetry" cron ran with success: %s', $telemetry->message));
} }
} }

View File

@@ -148,7 +148,7 @@ class AccountCurrencies extends Command
} }
Log::debug(sprintf('Users currency pref is %s', $defaultCurrencyCode)); Log::debug(sprintf('Users currency pref is %s', $defaultCurrencyCode));
/** @var TransactionCurrency $defaultCurrency */ /** @var TransactionCurrency|null $defaultCurrency */
$defaultCurrency = TransactionCurrency::where('code', $defaultCurrencyCode)->first(); $defaultCurrency = TransactionCurrency::where('code', $defaultCurrencyCode)->first();
if (null === $defaultCurrency) { if (null === $defaultCurrency) {

View File

@@ -73,11 +73,8 @@ class AppendBudgetLimitPeriods extends Command
private function isExecuted(): bool private function isExecuted(): bool
{ {
$configVar = app('fireflyconfig')->get(self::CONFIG_NAME, false); $configVar = app('fireflyconfig')->get(self::CONFIG_NAME, false);
if (null !== $configVar) {
return (bool)$configVar->data;
}
return false; // @codeCoverageIgnore return (bool)$configVar->data;
} }
/** /**

View File

@@ -87,11 +87,7 @@ class BackToJournals extends Command
private function isMigrated(): bool private function isMigrated(): bool
{ {
$configVar = app('fireflyconfig')->get(MigrateToGroups::CONFIG_NAME, false); $configVar = app('fireflyconfig')->get(MigrateToGroups::CONFIG_NAME, false);
if (null !== $configVar) {
return (bool)$configVar->data; return (bool)$configVar->data;
}
return false; // @codeCoverageIgnore
} }
/** /**
@@ -100,11 +96,7 @@ class BackToJournals extends Command
private function isExecuted(): bool private function isExecuted(): bool
{ {
$configVar = app('fireflyconfig')->get(self::CONFIG_NAME, false); $configVar = app('fireflyconfig')->get(self::CONFIG_NAME, false);
if (null !== $configVar) {
return (bool)$configVar->data; return (bool)$configVar->data;
}
return false; // @codeCoverageIgnore
} }
/** /**

View File

@@ -39,6 +39,7 @@ use Illuminate\Routing\Redirector;
use Illuminate\Support\Collection; use Illuminate\Support\Collection;
use Illuminate\View\View; use Illuminate\View\View;
use Log; use Log;
use DB;
/** /**
* Class HomeController. * Class HomeController.

View File

@@ -22,7 +22,6 @@ declare(strict_types=1);
namespace FireflyIII\Models; namespace FireflyIII\Models;
use Carbon\Carbon;
use Eloquent; use Eloquent;
use FireflyIII\User; use FireflyIII\User;
use Illuminate\Database\Eloquent\Builder as EloquentBuilder; use Illuminate\Database\Eloquent\Builder as EloquentBuilder;
@@ -33,7 +32,6 @@ use Illuminate\Database\Eloquent\Relations\HasMany;
use Illuminate\Database\Eloquent\Relations\MorphMany; use Illuminate\Database\Eloquent\Relations\MorphMany;
use Illuminate\Database\Eloquent\SoftDeletes; use Illuminate\Database\Eloquent\SoftDeletes;
use Illuminate\Database\Query\Builder; use Illuminate\Database\Query\Builder;
use Illuminate\Support\Collection;
use Symfony\Component\HttpKernel\Exception\NotFoundHttpException; use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
/** /**
@@ -53,7 +51,7 @@ use Symfony\Component\HttpKernel\Exception\NotFoundHttpException;
* @property int $order * @property int $order
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\AccountMeta[] $accountMeta * @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\AccountMeta[] $accountMeta
* @property-read int|null $account_meta_count * @property-read int|null $account_meta_count
* @property-read \FireflyIII\Models\AccountType $accountType * @property \FireflyIII\Models\AccountType $accountType
* @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Attachment[] $attachments * @property-read \Illuminate\Database\Eloquent\Collection|\FireflyIII\Models\Attachment[] $attachments
* @property-read int|null $attachments_count * @property-read int|null $attachments_count
* @property-read string $account_number * @property-read string $account_number

View File

@@ -25,6 +25,7 @@ namespace FireflyIII\Support\Cronjobs;
use Carbon\Carbon; use Carbon\Carbon;
use Exception; use Exception;
use FireflyIII\Exceptions\FireflyException;
/** /**
* Class AbstractCronjob * Class AbstractCronjob
@@ -45,8 +46,6 @@ abstract class AbstractCronjob
/** /**
* AbstractCronjob constructor. * AbstractCronjob constructor.
*
* @throws Exception
*/ */
public function __construct() public function __construct()
{ {

View File

@@ -66,7 +66,7 @@ class FireflyConfig
/** /**
* @param string $name * @param string $name
* @param null $default * @param bool|string|int|null $default
* *
* @return Configuration|null * @return Configuration|null
* @throws FireflyException * @throws FireflyException

View File

@@ -35,7 +35,7 @@ trait OBValidation
{ {
/** /**
* @param int|null $accountId * @param int|null $accountId
* @param $accountName * @param mixed $accountName
* *
* @return bool * @return bool
*/ */

View File

@@ -33,7 +33,7 @@ trait TransferValidation
{ {
/** /**
* @param int|null $accountId * @param int|null $accountId
* @param $accountName * @param mixed $accountName
* *
* @return bool * @return bool
*/ */

View File

@@ -58,14 +58,12 @@ class AccountValidator
*/ */
public function __construct() public function __construct()
{ {
$this->createMode = false; $this->createMode = false;
$this->destError = 'No error yet.'; $this->destError = 'No error yet.';
$this->sourceError = 'No error yet.'; $this->sourceError = 'No error yet.';
$this->combinations = config('firefly.source_dests'); $this->combinations = config('firefly.source_dests');
$this->source = null; $this->source = null;
$this->destination = null; $this->destination = null;
/** @var AccountRepositoryInterface accountRepository */
$this->accountRepository = app(AccountRepositoryInterface::class); $this->accountRepository = app(AccountRepositoryInterface::class);
} }

View File

@@ -57,7 +57,7 @@ trait ValidatesAutoBudgetRequest
if ('' === $period) { if ('' === $period) {
$validator->errors()->add('auto_budget_period', (string)trans('validation.auto_budget_period_mandatory')); $validator->errors()->add('auto_budget_period', (string)trans('validation.auto_budget_period_mandatory'));
} }
if (null !== $amount && null !== $currencyId && null !== $currencyCode && '' === $currencyCode && '' === $currencyId) { if (null !== $amount && null !== $currencyId && null !== $currencyCode && '' === $currencyCode && 0 === $currencyId) {
$validator->errors()->add('auto_budget_amount', (string)trans('validation.require_currency_info')); $validator->errors()->add('auto_budget_amount', (string)trans('validation.require_currency_info'));
} }
} }

View File

@@ -23,6 +23,7 @@
declare(strict_types=1); declare(strict_types=1);
namespace FireflyIII\Validation; namespace FireflyIII\Validation;
use Illuminate\Validation\Validator; use Illuminate\Validation\Validator;
use Log; use Log;
@@ -45,7 +46,11 @@ trait CurrencyValidation
foreach ($transactions as $index => $transaction) { foreach ($transactions as $index => $transaction) {
// if foreign amount is present, then the currency must be as well. // if foreign amount is present, then the currency must be as well.
if (isset($transaction['foreign_amount']) && !(isset($transaction['foreign_currency_id']) || isset($transaction['foreign_currency_code'])) if (array_key_exists('foreign_amount', $transaction)
&& !(array_key_exists('foreign_currency_id', $transaction)
|| array_key_exists(
'foreign_currency_code', $transaction
))
&& 0 !== bccomp('0', $transaction['foreign_amount']) && 0 !== bccomp('0', $transaction['foreign_amount'])
) { ) {
$validator->errors()->add( $validator->errors()->add(
@@ -54,7 +59,10 @@ trait CurrencyValidation
); );
} }
// if the currency is present, then the amount must be present as well. // if the currency is present, then the amount must be present as well.
if ((isset($transaction['foreign_currency_id']) || isset($transaction['foreign_currency_code'])) && !isset($transaction['foreign_amount'])) { if ((array_key_exists('foreign_currency_id', $transaction) || array_key_exists('foreign_currency_code', $transaction))
&& !array_key_exists(
'foreign_amount', $transaction
)) {
$validator->errors()->add( $validator->errors()->add(
'transactions.' . $index . '.foreign_amount', 'transactions.' . $index . '.foreign_amount',
(string)trans('validation.require_currency_amount') (string)trans('validation.require_currency_amount')

View File

@@ -52,14 +52,14 @@ use function is_string;
class FireflyValidator extends Validator class FireflyValidator extends Validator
{ {
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* *
* @return bool * @return bool
*/ */
public function validate2faCode($attribute, $value): bool public function validate2faCode($attribute, $value): bool
{ {
if (!is_string($value) || null === $value || 6 !== strlen($value)) { if (null === $value || !is_string($value) || 6 !== strlen($value)) {
return false; return false;
} }
@@ -69,9 +69,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -88,8 +88,8 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* *
* @return bool * @return bool
*/ */
@@ -108,14 +108,14 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* *
* @return bool * @return bool
*/ */
public function validateIban($attribute, $value): bool public function validateIban($attribute, $value): bool
{ {
if (!is_string($value) || null === $value || strlen($value) < 6) { if (null === $value || !is_string($value) || strlen($value) < 6) {
return false; return false;
} }
// strip spaces // strip spaces
@@ -186,9 +186,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -201,9 +201,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -216,9 +216,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -235,9 +235,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param string $attribute * @param string $attribute
* *
* @param string $value * @param string|null $value
* *
* @return bool * @return bool
*/ */
@@ -309,8 +309,8 @@ class FireflyValidator extends Validator
/** /**
* $attribute has the format triggers.%d.value. * $attribute has the format triggers.%d.value.
* *
* @param string $attribute * @param string $attribute
* @param string $value * @param string|null $value
* *
* @return bool * @return bool
*/ */
@@ -375,15 +375,15 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* *
* @return bool * @return bool
*/ */
public function validateSecurePassword($attribute, $value): bool public function validateSecurePassword($attribute, $value): bool
{ {
$verify = false; $verify = false;
if (isset($this->data['verify_password'])) { if (array_key_exists('verify_password', $this->data)) {
$verify = 1 === (int)$this->data['verify_password']; $verify = 1 === (int)$this->data['verify_password'];
} }
if ($verify) { if ($verify) {
@@ -397,9 +397,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -410,21 +410,20 @@ class FireflyValidator extends Validator
if (!auth()->check()) { if (!auth()->check()) {
return $this->validateAccountAnonymously(); return $this->validateAccountAnonymously();
} }
if (isset($this->data['objectType'])) { if (array_key_exists('objectType', $this->data)) {
return $this->validateByAccountTypeString($value, $parameters, $this->data['objectType']); return $this->validateByAccountTypeString($value, $parameters, $this->data['objectType']);
} }
if (isset($this->data['type'])) { if (array_key_exists('type', $this->data)) {
return $this->validateByAccountTypeString($value, $parameters, $this->data['type']); return $this->validateByAccountTypeString($value, $parameters, $this->data['type']);
} }
if (isset($this->data['account_type_id'])) { if (array_key_exists('account_type_id', $this->data)) {
return $this->validateByAccountTypeId($value, $parameters); return $this->validateByAccountTypeId($value, $parameters);
} }
$parameterId = $parameters[0] ?? null; $parameterId = $parameters[0] ?? null;
if (null !== $parameterId) { if (null !== $parameterId) {
return $this->validateByParameterId((int)$parameterId, $value); return $this->validateByParameterId((int)$parameterId, $value);
} }
if (isset($this->data['id'])) { if (array_key_exists('id', $this->data)) {
return $this->validateByAccountId($value); return $this->validateByAccountId($value);
} }
@@ -437,7 +436,7 @@ class FireflyValidator extends Validator
*/ */
private function validateAccountAnonymously(): bool private function validateAccountAnonymously(): bool
{ {
if (!isset($this->data['user_id'])) { if (!array_key_exists('user_id',$this->data)) {
return false; return false;
} }
@@ -466,7 +465,7 @@ class FireflyValidator extends Validator
*/ */
private function validateByAccountTypeString(string $value, array $parameters, string $type): bool private function validateByAccountTypeString(string $value, array $parameters, string $type): bool
{ {
/** @var array $search */ /** @var array|null $search */
$search = Config::get('firefly.accountTypeByIdentifier.' . $type); $search = Config::get('firefly.accountTypeByIdentifier.' . $type);
if (null === $search) { if (null === $search) {
@@ -491,8 +490,8 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -516,7 +515,8 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $value * @param int $accountId
* @param mixed $value
* *
* @return bool * @return bool
*/ */
@@ -528,7 +528,6 @@ class FireflyValidator extends Validator
$type = $existingAccount->accountType; $type = $existingAccount->accountType;
$ignore = $existingAccount->id; $ignore = $existingAccount->id;
/** @var Collection $set */
$entry = auth()->user()->accounts()->where('account_type_id', $type->id)->where('id', '!=', $ignore) $entry = auth()->user()->accounts()->where('account_type_id', $type->id)->where('id', '!=', $ignore)
->where('name', $value) ->where('name', $value)
->first(); ->first();
@@ -537,7 +536,7 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $value * @param mixed $value
* *
* @return bool * @return bool
*/ */
@@ -549,7 +548,6 @@ class FireflyValidator extends Validator
$type = $existingAccount->accountType; $type = $existingAccount->accountType;
$ignore = $existingAccount->id; $ignore = $existingAccount->id;
/** @var Collection $set */
$entry = auth()->user()->accounts()->where('account_type_id', $type->id)->where('id', '!=', $ignore) $entry = auth()->user()->accounts()->where('account_type_id', $type->id)->where('id', '!=', $ignore)
->where('name', $value) ->where('name', $value)
->first(); ->first();
@@ -568,9 +566,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -602,6 +600,13 @@ class FireflyValidator extends Validator
return true; return true;
} }
/**
* @param mixed $value
* @param mixed $parameters
* @param mixed $something
*
* @return bool
*/
public function validateUniqueExistingWebhook($value, $parameters, $something): bool public function validateUniqueExistingWebhook($value, $parameters, $something): bool
{ {
$existingId = (int)($something[0] ?? 0); $existingId = (int)($something[0] ?? 0);
@@ -614,7 +619,7 @@ class FireflyValidator extends Validator
if (auth()->check()) { if (auth()->check()) {
// get existing webhook value: // get existing webhook value:
if (0 !== $existingId) { if (0 !== $existingId) {
/** @var Webhook $webhook */ /** @var Webhook|null $webhook */
$webhook = auth()->user()->webhooks()->find($existingId); $webhook = auth()->user()->webhooks()->find($existingId);
if (null === $webhook) { if (null === $webhook) {
return false; return false;
@@ -645,15 +650,15 @@ class FireflyValidator extends Validator
/** /**
* *
* Validate an object and its unicity. Checks for encryption / encrypted values as well. * Validate an object and its uniqueness. Checks for encryption / encrypted values as well.
* *
* parameter 0: the table * parameter 0: the table
* parameter 1: the field * parameter 1: the field
* parameter 2: an id to ignore (when editing) * parameter 2: an id to ignore (when editing)
* *
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -667,7 +672,7 @@ class FireflyValidator extends Validator
* ID field, set that field to be the $exclude. * ID field, set that field to be the $exclude.
*/ */
$data = $this->getData(); $data = $this->getData();
if (!isset($parameters[2]) && isset($data['id']) && (int)$data['id'] > 0) { if (!array_key_exists(2, $parameters) && array_key_exists('id', $data) && (int)$data['id'] > 0) {
$exclude = (int)$data['id']; $exclude = (int)$data['id'];
} }
// get entries from table // get entries from table
@@ -686,9 +691,9 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */
@@ -707,11 +712,11 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $attribute * @param mixed $attribute
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* TODO this method does not need a for loop * TODO this method does not need a for loop
* *
* @return bool * @return bool
*/ */
@@ -738,8 +743,8 @@ class FireflyValidator extends Validator
} }
/** /**
* @param $value * @param mixed $value
* @param $parameters * @param mixed $parameters
* *
* @return bool * @return bool
*/ */

View File

@@ -59,7 +59,7 @@ trait RecurrenceValidation
if (null !== $recurrence) { if (null !== $recurrence) {
Log::debug('There is a recurrence in the route.'); Log::debug('There is a recurrence in the route.');
// ok so we have a recurrence should be able to extract type somehow. // ok so we have a recurrence should be able to extract type somehow.
/** @var RecurrenceTransaction $first */ /** @var RecurrenceTransaction|null $first */
$first = $recurrence->recurrenceTransactions()->first(); $first = $recurrence->recurrenceTransactions()->first();
if (null !== $first) { if (null !== $first) {
$transactionType = $first->transactionType ? $first->transactionType->type : 'withdrawal'; $transactionType = $first->transactionType ? $first->transactionType->type : 'withdrawal';
@@ -91,7 +91,7 @@ trait RecurrenceValidation
continue; continue;
} }
// validate source account. // validate source account.
$sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : null; $sourceId = array_key_exists('source_id', $transaction) ? (int)$transaction['source_id'] : null;
$sourceName = $transaction['source_name'] ?? null; $sourceName = $transaction['source_name'] ?? null;
$validSource = $accountValidator->validateSource($sourceId, $sourceName, null); $validSource = $accountValidator->validateSource($sourceId, $sourceName, null);
@@ -103,7 +103,7 @@ trait RecurrenceValidation
return; return;
} }
// validate destination account // validate destination account
$destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null; $destinationId = array_key_exists('destination_id', $transaction) ? (int)$transaction['destination_id'] : null;
$destinationName = $transaction['destination_name'] ?? null; $destinationName = $transaction['destination_name'] ?? null;
$validDestination = $accountValidator->validateDestination($destinationId, $destinationName, null); $validDestination = $accountValidator->validateDestination($destinationId, $destinationName, null);
// do something with result: // do something with result:

View File

@@ -100,9 +100,9 @@ trait TransactionValidation
$accountValidator->setTransactionType($transactionType); $accountValidator->setTransactionType($transactionType);
// validate source account. // validate source account.
$sourceId = isset($transaction['source_id']) ? (int)$transaction['source_id'] : null; $sourceId = array_key_exists('source_id', $transaction) ? (int)$transaction['source_id'] : null;
$sourceName = isset($transaction['source_name']) ? (string)$transaction['source_name'] : null; $sourceName = array_key_exists('source_name', $transaction) ? (string)$transaction['source_name'] : null;
$sourceIban = isset($transaction['source_iban']) ? (string)$transaction['source_iban'] : null; $sourceIban = array_key_exists('source_iban', $transaction) ? (string)$transaction['source_iban'] : null;
$validSource = $accountValidator->validateSource($sourceId, $sourceName, $sourceIban); $validSource = $accountValidator->validateSource($sourceId, $sourceName, $sourceIban);
// do something with result: // do something with result:
@@ -113,9 +113,9 @@ trait TransactionValidation
return; return;
} }
// validate destination account // validate destination account
$destinationId = isset($transaction['destination_id']) ? (int)$transaction['destination_id'] : null; $destinationId = array_key_exists('destination_id', $transaction) ? (int)$transaction['destination_id'] : null;
$destinationName = isset($transaction['destination_name']) ? (string)$transaction['destination_name'] : null; $destinationName = array_key_exists('destination_name', $transaction) ? (string)$transaction['destination_name'] : null;
$destinationIban = isset($transaction['destination_iban']) ? (string)$transaction['destination_iban'] : null; $destinationIban = array_key_exists('destination_iban', $transaction) ? (string)$transaction['destination_iban'] : null;
$validDestination = $accountValidator->validateDestination($destinationId, $destinationName, $destinationIban); $validDestination = $accountValidator->validateDestination($destinationId, $destinationName, $destinationIban);
// do something with result: // do something with result:
if (false === $validDestination) { if (false === $validDestination) {
@@ -155,10 +155,11 @@ trait TransactionValidation
Log::debug('Now validating single account update in validateSingleUpdate()'); Log::debug('Now validating single account update in validateSingleUpdate()');
// if no account types are given, just skip the check. // if no account types are given, just skip the check.
if (!isset($transaction['source_id']) if (
&& !isset($transaction['source_name']) !array_key_exists('source_id', $transaction)
&& !isset($transaction['destination_id']) && !array_key_exists('source_name', $transaction)
&& !isset($transaction['destination_name'])) { && !array_key_exists('destination_id', $transaction)
&& !array_key_exists('destination_name', $transaction)) {
Log::debug('No account data has been submitted so will not validating account info.'); Log::debug('No account data has been submitted so will not validating account info.');
return; return;
@@ -362,7 +363,7 @@ trait TransactionValidation
if (0 === $journalId) { if (0 === $journalId) {
return 'invalid'; return 'invalid';
} }
/** @var TransactionJournal $journal */ /** @var TransactionJournal|null $journal */
$journal = TransactionJournal::with(['transactionType'])->find($journalId); $journal = TransactionJournal::with(['transactionType'])->find($journalId);
if (null !== $journal) { if (null !== $journal) {
return strtolower($journal->transactionType->type); return strtolower($journal->transactionType->type);

View File

@@ -1,33 +0,0 @@
<?php
/*
* EmptyFactory.php
* Copyright (c) 2021 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
/** @var \Illuminate\Database\Eloquent\Factory $factory */
use Faker\Generator as Faker;
use FireflyIII\User;
$factory->define(User::class, function (Faker $faker) {
return [
//
];
});

View File

@@ -1,99 +0,0 @@
<?php
/*
* AccountFactory.php
* Copyright (c) 2020 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace Database\Factories\FireflyIII\Models;
use FireflyIII\Models\Account;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* Class AccountFactory
*/
class AccountFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Account::class;
/**
* @return AccountFactory
*/
public function asset()
{
return $this->state(
function () {
return [
'account_type_id' => 3,
];
}
);
}
/**
* @inheritDoc
*/
public function definition()
{
return [
'user_id' => 1,
'account_type_id' => 1,
'name' => $this->faker->words(3, true),
'virtual_balance' => '0',
'active' => 1,
'encrypted' => 0,
'order' => 1,
];
}
/**
* @return AccountFactory
*/
public function expense()
{
return $this->state(
function () {
return [
'account_type_id' => 4,
];
}
);
}
/**
* @return AccountFactory
*/
public function initialBalance()
{
return $this->state(
function () {
return [
'account_type_id' => 6,
];
}
);
}
}

View File

@@ -1,53 +0,0 @@
<?php
/*
* TransactionFactory.php
* Copyright (c) 2020 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace Database\Factories\FireflyIII\Models;
use FireflyIII\Models\Transaction;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* Class TransactionFactory
*/
class TransactionFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = Transaction::class;
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'transaction_journal_id' => 0,
'account_id' => 0,
'amount' => 5,
];
}
}

View File

@@ -1,123 +0,0 @@
<?php
/*
* TransactionJournalFactory.php
* Copyright (c) 2020 james@firefly-iii.org
*
* This file is part of Firefly III (https://github.com/firefly-iii).
*
* This program is free software: you can redistribute it and/or modify
* it under the terms of the GNU Affero General Public License as
* published by the Free Software Foundation, either version 3 of the
* License, or (at your option) any later version.
*
* This program is distributed in the hope that it will be useful,
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
* GNU Affero General Public License for more details.
*
* You should have received a copy of the GNU Affero General Public License
* along with this program. If not, see <https://www.gnu.org/licenses/>.
*/
declare(strict_types=1);
namespace Database\Factories\FireflyIII\Models;
use FireflyIII\Models\Account;
use FireflyIII\Models\Transaction;
use FireflyIII\Models\TransactionJournal;
use Illuminate\Database\Eloquent\Factories\Factory;
/**
* Class TransactionJournalFactory
*/
class TransactionJournalFactory extends Factory
{
/**
* The name of the factory's corresponding model.
*
* @var string
*/
protected $model = TransactionJournal::class;
/**
* @return Factory
*/
public function brokenOpeningBalance()
{
return $this->state(
function () {
return [
'transaction_type_id' => 4,
];
}
)->afterCreating(
function (TransactionJournal $journal) {
$ob1 = Account::factory(Account::class)->initialBalance()->create();
$ob2 = Account::factory(Account::class)->initialBalance()->create();
Transaction::factory()->create(
[
'account_id' => $ob1->id,
'transaction_journal_id' => $journal->id,
'amount' => '5',
]
);
Transaction::factory()->create(
[
'account_id' => $ob2->id,
'transaction_journal_id' => $journal->id,
'amount' => '5',
]
);
}
);
}
/**
* Define the model's default state.
*
* @return array
*/
public function definition()
{
return [
'user_id' => 1,
'transaction_type_id' => 1,
'description' => $this->faker->words(3, true),
'tag_count' => 0,
'date' => $this->faker->date('Y-m-d'),
];
}
/**
* @return Factory
*/
public function openingBalance()
{
return $this
->state(fn() => ['transaction_type_id' => 4])
->afterCreating(
function (TransactionJournal $journal) {
// fix factory
$obAccount = Account::factory(Account::class)->initialBalance()->create();
$assetAccount = Account::factory(Account::class)->asset()->create();
Transaction::factory()->create(
[
'account_id' => $obAccount->id,
'transaction_journal_id' => $journal->id,
'amount' => '5',
]
);
Transaction::factory()->create(
[
'account_id' => $assetAccount->id,
'transaction_journal_id' => $journal->id,
'amount' => '-5',
]
);
}
);
}
}

View File

@@ -51,7 +51,7 @@ class AccountTypeSeeder extends Seeder
try { try {
AccountType::create(['type' => $type]); AccountType::create(['type' => $type]);
} catch (PDOException $e) { } catch (PDOException $e) {
// dont care. // @ignoreException
} }
} }
} }

View File

@@ -63,7 +63,7 @@ class LinkTypeSeeder extends Seeder
try { try {
LinkType::create($type); LinkType::create($type);
} catch (PDOException $e) { } catch (PDOException $e) {
// dont care // @ignoreException
} }
} }
} }

View File

@@ -49,7 +49,7 @@ class PermissionSeeder extends Seeder
try { try {
Role::create($role); Role::create($role);
} catch (PDOException $e) { } catch (PDOException $e) {
// dont care // @ignoreException
} }
} }
} }

View File

@@ -81,7 +81,7 @@ class TransactionCurrencySeeder extends Seeder
try { try {
TransactionCurrency::create($currency); TransactionCurrency::create($currency);
} catch (PDOException $e) { } catch (PDOException $e) {
// dont care // @ignoreException
} }
} }
} }

View File

@@ -46,7 +46,7 @@ class TransactionTypeSeeder extends Seeder
try { try {
TransactionType::create(['type' => $type]); TransactionType::create(['type' => $type]);
} catch (PDOException $e) { } catch (PDOException $e) {
// dont care // @ignoreException
} }
} }
} }