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\Support\Request\ChecksLogin;
use Illuminate\Contracts\Validation\Validator;
use Illuminate\Foundation\Http\FormRequest;
use Illuminate\Validation\ValidationException;
/**
* Class ValidateExpressionRequest
@ -41,6 +39,4 @@ class ValidateExpressionRequest extends FormRequest
{
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\Model;
use Illuminate\Database\Eloquent\Relations\BelongsTo;
use Log;
/**
* FireflyIII\Models\RuleAction
@ -80,12 +79,14 @@ class RuleAction extends Model
public function getValue(array $journal): string
{
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;
}
$expr = new ActionExpression($this->action_value);
$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;
}

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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