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
}