2017-10-02 22:28:00 -05:00
< ? php
/**
* SetNotes . php
2020-02-16 06:57:05 -06:00
* Copyright ( c ) 2019 james @ firefly - iii . org
2017-10-02 22:28:00 -05:00
*
2019-10-01 23:37:26 -05:00
* This file is part of Firefly III ( https :// github . com / firefly - iii ) .
2017-10-21 01:40:00 -05:00
*
2019-10-01 23:37:26 -05:00
* 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 .
2017-10-21 01:40:00 -05:00
*
2019-10-01 23:37:26 -05:00
* This program is distributed in the hope that it will be useful ,
2017-10-21 01:40:00 -05:00
* but WITHOUT ANY WARRANTY ; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE . See the
2019-10-01 23:37:26 -05:00
* GNU Affero General Public License for more details .
2017-10-21 01:40:00 -05:00
*
2019-10-01 23:37:26 -05:00
* 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 />.
2017-10-02 22:28:00 -05:00
*/
declare ( strict_types = 1 );
namespace FireflyIII\TransactionRules\Actions ;
2017-10-03 03:41:48 -05:00
use FireflyIII\Models\Note ;
2017-10-02 22:28:00 -05:00
use FireflyIII\Models\RuleAction ;
use FireflyIII\Models\TransactionJournal ;
use Log ;
/**
2017-11-15 05:25:49 -06:00
* Class SetNotes .
2017-10-02 22:28:00 -05:00
*/
class SetNotes implements ActionInterface
{
2020-08-23 09:12:16 -05:00
private RuleACtion $action ;
2017-10-02 22:28:00 -05:00
/**
* TriggerInterface constructor .
*
* @ param RuleAction $action
*/
public function __construct ( RuleAction $action )
{
$this -> action = $action ;
}
2020-08-23 00:42:14 -05:00
/**
* @ inheritDoc
*/
public function actOnArray ( array $journal ) : bool
{
2020-08-23 09:12:16 -05:00
$dbNote = Note :: where ( 'noteable_id' , $journal [ 'transaction_journal_id' ])
-> where ( 'noteable_type' , TransactionJournal :: class ) -> first ();
if ( null === $dbNote ) {
$dbNote = new Note ;
$dbNote -> noteable_id = $journal [ 'transaction_journal_id' ];
$dbNote -> noteable_type = TransactionJournal :: class ;
$dbNote -> text = '' ;
}
$oldNotes = $dbNote -> text ;
$dbNote -> text = $this -> action -> action_value ;
$dbNote -> save ();
Log :: debug ( sprintf ( 'RuleAction SetNotes changed the notes of journal #%d from "%s" to "%s".' , $journal [ 'transaction_journal_id' ], $oldNotes , $this -> action -> action_value ));
return true ;
2020-08-23 00:42:14 -05:00
}
2017-10-02 22:28:00 -05:00
}