2022-08-11 08:26:47 +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-11 08:26:47 +02:00
|
|
|
*
|
|
|
|
* @license https://www.elastic.co/licensing/elastic-license
|
|
|
|
*/
|
|
|
|
|
|
|
|
namespace App\Http\Controllers;
|
|
|
|
|
|
|
|
use App\Factory\BankTransactionFactory;
|
2022-11-11 00:28:25 +01:00
|
|
|
use App\Filters\BankTransactionFilters;
|
2023-01-22 04:49:15 +01:00
|
|
|
use App\Http\Requests\BankTransaction\BulkBankTransactionRequest;
|
2022-08-11 08:26:47 +02:00
|
|
|
use App\Http\Requests\BankTransaction\CreateBankTransactionRequest;
|
|
|
|
use App\Http\Requests\BankTransaction\DestroyBankTransactionRequest;
|
|
|
|
use App\Http\Requests\BankTransaction\EditBankTransactionRequest;
|
2022-09-15 05:58:42 +02:00
|
|
|
use App\Http\Requests\BankTransaction\MatchBankTransactionRequest;
|
2022-08-11 08:26:47 +02:00
|
|
|
use App\Http\Requests\BankTransaction\ShowBankTransactionRequest;
|
|
|
|
use App\Http\Requests\BankTransaction\StoreBankTransactionRequest;
|
|
|
|
use App\Http\Requests\BankTransaction\UpdateBankTransactionRequest;
|
2022-09-15 07:02:39 +02:00
|
|
|
use App\Jobs\Bank\MatchBankTransactions;
|
2022-08-11 08:26:47 +02:00
|
|
|
use App\Models\BankTransaction;
|
|
|
|
use App\Repositories\BankTransactionRepository;
|
|
|
|
use App\Transformers\BankTransactionTransformer;
|
2022-08-11 09:13:40 +02:00
|
|
|
use App\Utils\Traits\MakesHash;
|
2022-08-11 08:26:47 +02:00
|
|
|
|
|
|
|
class BankTransactionController extends BaseController
|
|
|
|
{
|
2022-08-11 09:13:40 +02:00
|
|
|
use MakesHash;
|
|
|
|
|
2022-08-11 08:26:47 +02:00
|
|
|
protected $entity_type = BankTransaction::class;
|
|
|
|
|
|
|
|
protected $entity_transformer = BankTransactionTransformer::class;
|
|
|
|
|
|
|
|
protected $bank_transaction_repo;
|
|
|
|
|
|
|
|
public function __construct(BankTransactionRepository $bank_transaction_repo)
|
|
|
|
{
|
|
|
|
parent::__construct();
|
|
|
|
|
|
|
|
$this->bank_transaction_repo = $bank_transaction_repo;
|
|
|
|
}
|
|
|
|
|
2022-11-11 00:28:25 +01:00
|
|
|
public function index(BankTransactionFilters $filters)
|
2022-08-11 08:26:47 +02:00
|
|
|
{
|
2022-11-11 00:28:25 +01:00
|
|
|
$bank_transactions = BankTransaction::filter($filters);
|
2022-08-11 08:26:47 +02:00
|
|
|
|
|
|
|
return $this->listResponse($bank_transactions);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function show(ShowBankTransactionRequest $request, BankTransaction $bank_transaction)
|
|
|
|
{
|
|
|
|
return $this->itemResponse($bank_transaction);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function edit(EditBankTransactionRequest $request, BankTransaction $bank_transaction)
|
|
|
|
{
|
|
|
|
return $this->itemResponse($bank_transaction);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function update(UpdateBankTransactionRequest $request, BankTransaction $bank_transaction)
|
|
|
|
{
|
|
|
|
//stubs for updating the model
|
|
|
|
$bank_transaction = $this->bank_transaction_repo->save($request->all(), $bank_transaction);
|
|
|
|
|
|
|
|
return $this->itemResponse($bank_transaction->fresh());
|
|
|
|
}
|
|
|
|
|
|
|
|
public function create(CreateBankTransactionRequest $request)
|
|
|
|
{
|
2023-07-26 01:27:16 +02:00
|
|
|
$bank_transaction = BankTransactionFactory::create(auth()->user()->company()->id, auth()->user()->id);
|
2022-08-11 08:26:47 +02:00
|
|
|
|
|
|
|
return $this->itemResponse($bank_transaction);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function store(StoreBankTransactionRequest $request)
|
|
|
|
{
|
|
|
|
//stub to store the model
|
2023-07-26 01:27:16 +02:00
|
|
|
$bank_transaction = $this->bank_transaction_repo->save($request->all(), BankTransactionFactory::create(auth()->user()->company()->id, auth()->user()->id));
|
2022-08-11 08:26:47 +02:00
|
|
|
|
|
|
|
return $this->itemResponse($bank_transaction);
|
|
|
|
}
|
|
|
|
|
|
|
|
public function destroy(DestroyBankTransactionRequest $request, BankTransaction $bank_transaction)
|
|
|
|
{
|
|
|
|
$this->bank_transaction_repo->delete($bank_transaction);
|
|
|
|
|
|
|
|
return $this->itemResponse($bank_transaction->fresh());
|
|
|
|
}
|
|
|
|
|
2023-01-22 04:49:15 +01:00
|
|
|
public function bulk(BulkBankTransactionRequest $request)
|
2022-08-11 09:13:40 +02:00
|
|
|
{
|
2023-01-22 04:49:15 +01:00
|
|
|
$action = $request->input('action');
|
2022-08-11 09:13:40 +02:00
|
|
|
|
|
|
|
$ids = request()->input('ids');
|
|
|
|
|
|
|
|
$bank_transactions = BankTransaction::withTrashed()->whereIn('id', $this->transformKeys($ids))->company()->get();
|
|
|
|
|
2023-02-16 02:36:09 +01:00
|
|
|
if ($action == 'convert_matched') { //catch this action
|
2023-01-22 04:49:15 +01:00
|
|
|
$this->bank_transaction_repo->convert_matched($bank_transactions);
|
2023-02-16 02:36:09 +01:00
|
|
|
} else {
|
2022-11-24 21:52:47 +01:00
|
|
|
$bank_transactions->each(function ($bank_transaction, $key) use ($action) {
|
2023-02-16 02:36:09 +01:00
|
|
|
$this->bank_transaction_repo->{$action}($bank_transaction);
|
2022-11-24 21:52:47 +01:00
|
|
|
});
|
|
|
|
}
|
|
|
|
|
2022-08-11 09:13:40 +02:00
|
|
|
/* Need to understand which permission are required for the given bulk action ie. view / edit */
|
|
|
|
|
|
|
|
return $this->listResponse(BankTransaction::withTrashed()->whereIn('id', $this->transformKeys($ids))->company());
|
|
|
|
}
|
|
|
|
|
2022-09-15 05:58:42 +02:00
|
|
|
public function match(MatchBankTransactionRequest $request)
|
2022-08-11 08:26:47 +02:00
|
|
|
{
|
2023-08-05 04:26:07 +02:00
|
|
|
/** @var \App\Models\User $user */
|
|
|
|
$user = auth()->user();
|
|
|
|
|
|
|
|
$bts = (new MatchBankTransactions($user->company()->id, $user->company()->db, $request->all()))->handle();
|
2022-09-22 08:20:54 +02:00
|
|
|
|
2022-10-24 12:20:29 +02:00
|
|
|
return $this->listResponse($bts);
|
2022-09-15 05:58:42 +02:00
|
|
|
}
|
2023-02-16 02:36:09 +01:00
|
|
|
}
|