2022-08-12 05:41:55 +02:00
< ? php
/**
* Invoice Ninja ( https :// invoiceninja . com ) .
*
* @ link https :// github . com / invoiceninja / invoiceninja source repository
*
2023-01-28 23:21:40 +01:00
* @ copyright Copyright ( c ) 2023. Invoice Ninja LLC ( https :// invoiceninja . com )
2022-08-12 05:41:55 +02:00
*
* @ license https :// www . elastic . co / licensing / elastic - license
*/
namespace App\Jobs\Ninja ;
2023-12-01 14:30:33 +01:00
use App\Jobs\Bank\ProcessBankTransactionsYodlee ;
use App\Jobs\Bank\ProcessBankTransactionsNordigen ;
2022-08-12 05:41:55 +02:00
use App\Libraries\MultiDB ;
use App\Models\Account ;
2023-12-01 14:30:33 +01:00
use App\Models\BankIntegration ;
2022-08-12 05:41:55 +02:00
use App\Utils\Ninja ;
use Illuminate\Bus\Queueable ;
use Illuminate\Contracts\Queue\ShouldQueue ;
use Illuminate\Foundation\Bus\Dispatchable ;
use Illuminate\Queue\InteractsWithQueue ;
use Illuminate\Queue\SerializesModels ;
class BankTransactionSync implements ShouldQueue
{
use Dispatchable , InteractsWithQueue , Queueable , SerializesModels ;
/**
* Create a new job instance .
*
* @ return void
*/
public function __construct ()
{
//
}
/**
* Execute the job .
*
* @ return void
*/
public function handle ()
{
//multiDB environment, need to
2023-12-01 14:30:33 +01:00
foreach ( MultiDB :: $dbs as $db ) {
2022-08-12 05:41:55 +02:00
MultiDB :: setDB ( $db );
2023-12-10 16:09:23 +01:00
if ( Ninja :: isSelfHost ()) { // @turbo124 @todo I migrated the schedule for the job within the kernel to execute on all platforms and use the same expression here to determine if yodlee can run or not. Please chek/verify
nlog ( " syncing transactions - yodlee " );
2022-09-14 07:50:44 +02:00
2023-12-10 16:09:23 +01:00
$a = Account :: with ( 'bank_integrations' ) -> whereNotNull ( 'bank_integration_yodlee_account_id' ) -> cursor () -> each ( function ( $account ) {
// $queue = Ninja::isHosted() ? 'bank' : 'default';
2022-08-12 05:41:55 +02:00
2023-12-10 16:09:23 +01:00
if ( $account -> isPaid () && $account -> plan == 'enterprise' ) {
$account -> bank_integrations () -> where ( 'integration_type' , BankIntegration :: INTEGRATION_TYPE_YODLEE ) -> andWhere ( 'auto_sync' , true ) -> cursor () -> each ( function ( $bank_integration ) use ( $account ) {
( new ProcessBankTransactionsYodlee ( $account , $bank_integration )) -> handle ();
});
}
});
}
2023-12-01 14:30:33 +01:00
nlog ( " syncing transactions - nordigen " );
2023-12-10 08:18:31 +01:00
$b = Account :: with ( 'bank_integrations' ) -> whereNotNull ( 'bank_integration_nordigen_secret_id' ) -> andWhereNotNull ( 'bank_integration_nordigen_secret_key' ) -> cursor () -> each ( function ( $account ) {
2023-12-01 14:30:33 +01:00
$account -> bank_integrations () -> where ( 'integration_type' , BankIntegration :: INTEGRATION_TYPE_NORDIGEN ) -> andWhere ( 'auto_sync' , true ) -> cursor () -> each ( function ( $bank_integration ) use ( $account ) {
( new ProcessBankTransactionsNordigen ( $account , $bank_integration )) -> handle ();
2022-11-26 04:38:09 +01:00
});
2023-12-01 14:30:33 +01:00
});
nlog ( " syncing transactions - done " );
2022-11-26 04:38:09 +01:00
}
2022-08-12 05:41:55 +02:00
}
}