Refresh notes in various actions.

This commit is contained in:
James Cole 2024-03-10 08:11:58 +01:00
parent 0b45c1aa76
commit 3413b9b5b5
No known key found for this signature in database
GPG Key ID: B49A324B7EAD6D80
14 changed files with 54 additions and 53 deletions

View File

@ -26,9 +26,7 @@ namespace FireflyIII\Api\V1\Requests\Models\Rule;
use FireflyIII\Rules\IsValidActionExpression; use FireflyIII\Rules\IsValidActionExpression;
use FireflyIII\Support\Request\ChecksLogin; use FireflyIII\Support\Request\ChecksLogin;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest; use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\ValidationException;
/** /**
* Class ValidateExpressionRequest * Class ValidateExpressionRequest
@ -41,6 +39,4 @@ class ValidateExpressionRequest extends FormRequest
{ {
return ['expression' => ['required', new IsValidActionExpression()]]; return ['expression' => ['required', new IsValidActionExpression()]];
} }
} }

View File

@ -31,7 +31,6 @@ use Illuminate\Database\Eloquent\Builder;
use Illuminate\Database\Eloquent\Casts\Attribute; use Illuminate\Database\Eloquent\Casts\Attribute;
use Illuminate\Database\Eloquent\Model; use Illuminate\Database\Eloquent\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo; use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Log;
/** /**
* FireflyIII\Models\RuleAction * FireflyIII\Models\RuleAction
@ -80,12 +79,14 @@ class RuleAction extends Model
public function getValue(array $journal): string public function getValue(array $journal): string
{ {
if (false === config('firefly.feature_flags.expression_engine')) { if (false === config('firefly.feature_flags.expression_engine')) {
Log::debug('Expression engine is disabled, returning action value as string.'); \Log::debug('Expression engine is disabled, returning action value as string.');
return (string)$this->action_value; return (string)$this->action_value;
} }
$expr = new ActionExpression($this->action_value); $expr = new ActionExpression($this->action_value);
$result = $expr->evaluate($journal); $result = $expr->evaluate($journal);
Log::debug(sprintf('Expression engine is enabled, result of expression "%s" is "%s".', $this->action_value, $result)); \Log::debug(sprintf('Expression engine is enabled, result of expression "%s" is "%s".', $this->action_value, $result));
return $result; return $result;
} }

View File

@ -34,8 +34,8 @@ use FireflyIII\TransactionRules\Traits\RefreshNotesTrait;
*/ */
class AppendDescription implements ActionInterface class AppendDescription implements ActionInterface
{ {
private RuleAction $action;
use RefreshNotesTrait; use RefreshNotesTrait;
private RuleAction $action;
/** /**
* TriggerInterface constructor. * TriggerInterface constructor.

View File

@ -51,6 +51,7 @@ class AppendDescriptionToNotes implements ActionInterface
public function actOnArray(array $journal): bool public function actOnArray(array $journal): bool
{ {
$this->refreshNotes($journal); $this->refreshNotes($journal);
/** @var null|TransactionJournal $object */ /** @var null|TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); $object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
if (null === $object) { if (null === $object) {

View File

@ -27,6 +27,7 @@ use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Models\Note; use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\TransactionRules\Traits\RefreshNotesTrait;
/** /**
* Class AppendNotes. * Class AppendNotes.
@ -34,6 +35,7 @@ use FireflyIII\Models\TransactionJournal;
*/ */
class AppendNotes implements ActionInterface class AppendNotes implements ActionInterface
{ {
use RefreshNotesTrait;
private RuleAction $action; private RuleAction $action;
/** /**
@ -46,6 +48,7 @@ class AppendNotes implements ActionInterface
public function actOnArray(array $journal): bool public function actOnArray(array $journal): bool
{ {
$this->refreshNotes($journal);
$dbNote = Note::where('noteable_id', (int)$journal['transaction_journal_id']) $dbNote = Note::where('noteable_id', (int)$journal['transaction_journal_id'])
->where('noteable_type', TransactionJournal::class) ->where('noteable_type', TransactionJournal::class)
->first(['notes.*']) ->first(['notes.*'])

View File

@ -30,6 +30,7 @@ use FireflyIII\Models\Note;
use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\Support\Request\ConvertsDataTypes; use FireflyIII\Support\Request\ConvertsDataTypes;
use FireflyIII\TransactionRules\Traits\RefreshNotesTrait;
/** /**
* Class AppendNotesToDescription * Class AppendNotesToDescription
@ -38,7 +39,7 @@ use FireflyIII\Support\Request\ConvertsDataTypes;
class AppendNotesToDescription implements ActionInterface class AppendNotesToDescription implements ActionInterface
{ {
use ConvertsDataTypes; use ConvertsDataTypes;
use RefreshNotesTrait;
private RuleAction $action; private RuleAction $action;
/** /**
@ -52,6 +53,7 @@ class AppendNotesToDescription implements ActionInterface
public function actOnArray(array $journal): bool public function actOnArray(array $journal): bool
{ {
app('log')->debug('Now in AppendNotesToDescription'); app('log')->debug('Now in AppendNotesToDescription');
$this->refreshNotes($journal);
/** @var null|TransactionJournal $object */ /** @var null|TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); $object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);

View File

@ -26,12 +26,14 @@ namespace FireflyIII\TransactionRules\Actions;
use FireflyIII\Events\TriggeredAuditLog; use FireflyIII\Events\TriggeredAuditLog;
use FireflyIII\Models\RuleAction; use FireflyIII\Models\RuleAction;
use FireflyIII\Models\TransactionJournal; use FireflyIII\Models\TransactionJournal;
use FireflyIII\TransactionRules\Traits\RefreshNotesTrait;
/** /**
* Class SetDescription. * Class SetDescription.
*/ */
class SetDescription implements ActionInterface class SetDescription implements ActionInterface
{ {
use RefreshNotesTrait;
private RuleAction $action; private RuleAction $action;
/** /**
@ -44,6 +46,8 @@ class SetDescription implements ActionInterface
public function actOnArray(array $journal): bool public function actOnArray(array $journal): bool
{ {
$this->refreshNotes($journal);
/** @var TransactionJournal $object */ /** @var TransactionJournal $object */
$object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']); $object = TransactionJournal::where('user_id', $journal['user_id'])->find($journal['transaction_journal_id']);
$before = $object->description; $before = $object->description;

View File

@ -84,6 +84,7 @@ class SearchRuleEngine implements RuleEngineInterface
} }
$result = $collection->unique(); $result = $collection->unique();
app('log')->debug(sprintf('SearchRuleEngine::find() returns %d unique transactions.', $result->count())); app('log')->debug(sprintf('SearchRuleEngine::find() returns %d unique transactions.', $result->count()));
return $result; return $result;
} }
@ -546,6 +547,7 @@ class SearchRuleEngine implements RuleEngineInterface
$transaction['notes'] = $dbNote->text; $transaction['notes'] = $dbNote->text;
} }
Log::debug(sprintf('Notes of journal #%d filled in.', $transaction['transaction_journal_id'])); Log::debug(sprintf('Notes of journal #%d filled in.', $transaction['transaction_journal_id']));
return $transaction; return $transaction;
} }
} }

View File

@ -31,9 +31,7 @@ class ActionExpressionLanguageProvider implements ExpressionFunctionProviderInte
{ {
public function getFunctions(): array public function getFunctions(): array
{ {
return [ return [
new ExpressionFunction('constant', function ($str): string { new ExpressionFunction('constant', function ($str): string {
return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str.'!'); return sprintf('(is_string(%1$s) ? strtolower(%1$s) : %1$s)', $str.'!');
}, function ($arguments, $str): string { }, function ($arguments, $str): string {

View File

@ -29,11 +29,6 @@ use Illuminate\Support\Facades\Log;
trait RefreshNotesTrait trait RefreshNotesTrait
{ {
/**
* @param array $transaction
*
* @return array
*/
final protected function refreshNotes(array $transaction): array final protected function refreshNotes(array $transaction): array
{ {
$transaction['notes'] = ''; $transaction['notes'] = '';
@ -42,7 +37,7 @@ trait RefreshNotesTrait
$transaction['notes'] = $dbNote->text; $transaction['notes'] = $dbNote->text;
} }
Log::debug(sprintf('Notes of journal #%d refreshed.', $transaction['transaction_journal_id'])); Log::debug(sprintf('Notes of journal #%d refreshed.', $transaction['transaction_journal_id']));
return $transaction; return $transaction;
} }
} }

View File

@ -607,7 +607,6 @@ Route::group(
Route::put('{rule}', ['uses' => 'UpdateController@update', 'as' => 'update']); Route::put('{rule}', ['uses' => 'UpdateController@update', 'as' => 'update']);
Route::delete('{rule}', ['uses' => 'DestroyController@destroy', 'as' => 'delete']); Route::delete('{rule}', ['uses' => 'DestroyController@destroy', 'as' => 'delete']);
Route::get('{rule}/test', ['uses' => 'TriggerController@testRule', 'as' => 'test']); Route::get('{rule}/test', ['uses' => 'TriggerController@testRule', 'as' => 'test']);
// TODO give results back // TODO give results back
Route::post('{rule}/trigger', ['uses' => 'TriggerController@triggerRule', 'as' => 'trigger']); Route::post('{rule}/trigger', ['uses' => 'TriggerController@triggerRule', 'as' => 'trigger']);