2018-04-07 06:20:45 +02:00
< ? php
/**
* LinkToBill.php
2020-02-16 13:57:05 +01:00
* Copyright (c) 2019 james@firefly-iii.org
2018-04-07 06:20:45 +02:00
*
2019-10-02 06:37:26 +02:00
* This file is part of Firefly III (https://github.com/firefly-iii).
2018-04-07 06:20:45 +02:00
*
2019-10-02 06:37:26 +02: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.
2018-04-07 06:20:45 +02:00
*
2019-10-02 06:37:26 +02:00
* This program is distributed in the hope that it will be useful,
2018-04-07 06:20:45 +02:00
* but WITHOUT ANY WARRANTY; without even the implied warranty of
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
2019-10-02 06:37:26 +02:00
* GNU Affero General Public License for more details.
2018-04-07 06:20:45 +02:00
*
2019-10-02 06:37:26 +02: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/>.
2018-04-07 06:20:45 +02:00
*/
declare ( strict_types = 1 );
namespace FireflyIII\TransactionRules\Actions ;
2020-08-23 08:51:58 +02:00
use DB ;
2018-04-07 06:20:45 +02:00
use FireflyIII\Models\RuleAction ;
use FireflyIII\Models\TransactionType ;
use FireflyIII\Repositories\Bill\BillRepositoryInterface ;
2020-08-23 08:51:58 +02:00
use FireflyIII\User ;
2018-04-07 06:20:45 +02:00
use Log ;
/**
* Class LinkToBill.
*/
class LinkToBill implements ActionInterface
{
/** @var RuleAction The rule action */
private $action ;
/**
* TriggerInterface constructor.
*
2019-08-01 06:21:44 +02:00
* @codeCoverageIgnore
*
2018-04-07 06:20:45 +02:00
* @param RuleAction $action
*/
public function __construct ( RuleAction $action )
{
$this -> action = $action ;
}
2020-08-23 07:42:14 +02:00
/**
* @inheritDoc
*/
public function actOnArray ( array $journal ) : bool
{
2020-08-23 08:51:58 +02:00
$user = User :: find ( $journal [ 'user_id' ]);
/** @var BillRepositoryInterface $repository */
$repository = app ( BillRepositoryInterface :: class );
$repository -> setUser ( $user );
$billName = ( string ) $this -> action -> action_value ;
$bill = $repository -> findByName ( $billName );
if ( null !== $bill && $journal [ 'transaction_type_type' ] === TransactionType :: WITHDRAWAL ) {
DB :: table ( 'transaction_journals' )
-> where ( 'id' , '=' , $journal [ 'transaction_journal_id' ])
-> update ([ 'bill_id' => $bill -> id ]);
Log :: debug ( sprintf ( 'RuleAction LinkToBill set the bill of journal #%d to bill #%d ("%s").' , $journal [ 'transaction_journal_id' ], $bill -> id , $bill -> name ));
return true ;
}
Log :: error ( sprintf ( 'RuleAction LinkToBill could not set the bill of journal #%d to bill "%s": no such bill found or not a withdrawal.' , $journal [ 'transaction_journal_id' ], $billName ));
return false ;
2020-08-23 07:42:14 +02:00
}
2018-04-07 06:20:45 +02:00
}