From 6d47a8c32a9bdc51734800599ecd43b0403e2e54 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Denis=20Duli=C3=A7i?= Date: Thu, 11 Feb 2021 01:57:17 +0300 Subject: [PATCH] fixed #1830 --- app/Http/Controllers/Banking/Transfers.php | 57 +------------------ app/Models/Banking/Transfer.php | 19 ++++++- config/search-string.php | 13 +++++ resources/lang/en-GB/search_string.php | 2 + .../views/banking/transfers/index.blade.php | 17 ++++-- 5 files changed, 45 insertions(+), 63 deletions(-) diff --git a/app/Http/Controllers/Banking/Transfers.php b/app/Http/Controllers/Banking/Transfers.php index 70c6fc812..4f37c97f8 100644 --- a/app/Http/Controllers/Banking/Transfers.php +++ b/app/Http/Controllers/Banking/Transfers.php @@ -25,64 +25,11 @@ class Transfers extends Controller */ public function index() { - $data = []; - - $items = Transfer::with( + $transfers = Transfer::with( 'expense_transaction', 'expense_transaction.account', 'income_transaction', 'income_transaction.account' )->collect(['expense_transaction.paid_at' => 'desc']); - foreach ($items as $item) { - $income_transaction = $item->income_transaction; - $expense_transaction = $item->expense_transaction; - - $name = trans('transfers.messages.delete', [ - 'from' => $expense_transaction->account->name, - 'to' => $income_transaction->account->name, - 'amount' => money($expense_transaction->amount, $expense_transaction->currency_code, true) - ]); - - $data[] = (object) [ - 'id' => $item->id, - 'name' => $name, - 'from_account' => $expense_transaction->account->name, - 'to_account' => $income_transaction->account->name, - 'amount' => $expense_transaction->amount, - 'currency_code' => $expense_transaction->currency_code, - 'paid_at' => $expense_transaction->paid_at, - ]; - } - - $special_key = [ - 'expense_transaction.name' => 'from_account', - 'income_transaction.name' => 'to_account', - ]; - - $request = request(); - - if (isset($request['sort']) && array_key_exists($request['sort'], $special_key)) { - $sort_order = []; - - foreach ($data as $key => $value) { - $sort = $request['sort']; - - if (array_key_exists($request['sort'], $special_key)) { - $sort = $special_key[$request['sort']]; - } - - $sort_order[$key] = $value->{$sort}; - } - - $sort_type = (isset($request['order']) && $request['order'] == 'asc') ? SORT_ASC : SORT_DESC; - - array_multisort($sort_order, $sort_type, $data); - } - - $transfers = $request->expectsJson() ? $data : $this->paginate($data); - - $accounts = collect(Account::enabled()->orderBy('name')->pluck('name', 'id')) - ->prepend(trans('general.all_type', ['type' => trans_choice('general.accounts', 2)]), ''); - - return $this->response('banking.transfers.index', compact('transfers', 'accounts')); + return $this->response('banking.transfers.index', compact('transfers')); } /** diff --git a/app/Models/Banking/Transfer.php b/app/Models/Banking/Transfer.php index 08bdf65a7..0799abc1c 100644 --- a/app/Models/Banking/Transfer.php +++ b/app/Models/Banking/Transfer.php @@ -5,10 +5,11 @@ namespace App\Models\Banking; use App\Abstracts\Model; use App\Traits\Currencies; use Illuminate\Database\Eloquent\Factories\HasFactory; +use Znck\Eloquent\Traits\BelongsToThrough; class Transfer extends Model { - use HasFactory, Currencies; + use BelongsToThrough, Currencies, HasFactory; protected $table = 'transfers'; @@ -33,7 +34,13 @@ class Transfer extends Model public function expense_account() { - return $this->belongsTo('App\Models\Banking\Account', 'expense_transaction.account_id', 'id')->withDefault(['name' => trans('general.na')]); + return $this->belongsToThrough( + 'App\Models\Banking\Account', + 'App\Models\Banking\Transaction', + null, + '', + ['App\Models\Banking\Transaction' => 'expense_transaction_id'] + )->withDefault(['name' => trans('general.na')]); } public function income_transaction() @@ -43,7 +50,13 @@ class Transfer extends Model public function income_account() { - return $this->belongsTo('App\Models\Banking\Account', 'income_transaction.account_id', 'id')->withDefault(['name' => trans('general.na')]); + return $this->belongsToThrough( + 'App\Models\Banking\Account', + 'App\Models\Banking\Transaction', + null, + '', + ['App\Models\Banking\Transaction' => 'income_transaction_id'] + )->withDefault(['name' => trans('general.na')]); } /** diff --git a/config/search-string.php b/config/search-string.php index 64d4b5819..00ff96ba3 100644 --- a/config/search-string.php +++ b/config/search-string.php @@ -111,6 +111,19 @@ return [ ], ], + App\Models\Banking\Transfer::class => [ + 'columns' => [ + 'expense_account' => [ + 'relationship' => true, + 'route' => 'accounts.index', + ], + 'income_account' => [ + 'relationship' => true, + 'route' => 'accounts.index', + ], + ], + ], + App\Models\Common\Company::class => [ 'columns' => [ 'domain' => ['searchable' => true], diff --git a/resources/lang/en-GB/search_string.php b/resources/lang/en-GB/search_string.php index 7346ca3ca..05e9aef86 100644 --- a/resources/lang/en-GB/search_string.php +++ b/resources/lang/en-GB/search_string.php @@ -13,6 +13,8 @@ return [ 'issued_at' => 'Issue Date', 'symbol_first' => 'Symbol Position', 'reconciled' => 'Reconciled', + 'expense_account' => 'From Account', + 'income_account' => 'To Account', ], ]; diff --git a/resources/views/banking/transfers/index.blade.php b/resources/views/banking/transfers/index.blade.php index 6c4a63031..794e085c3 100644 --- a/resources/views/banking/transfers/index.blade.php +++ b/resources/views/banking/transfers/index.blade.php @@ -43,12 +43,19 @@ @foreach($transfers as $item) + @php + $item->name = trans('transfers.messages.delete', [ + 'from' => $item->expense_transaction->account->name, + 'to' => $item->income_transaction->account->name, + 'amount' => money($item->expense_transaction->amount, $item->expense_transaction->currency_code, true) + ]); + @endphp - {{ Form::bulkActionGroup($item->id, $item->from_account) }} - @date($item->paid_at) - {{ $item->from_account }} - {{ $item->to_account }} - @money($item->amount, $item->currency_code, true) + {{ Form::bulkActionGroup($item->id, $item->expense_transaction->account->name) }} + @date($item->expense_transaction->paid_at) + {{ $item->expense_transaction->account->name }} + {{ $item->income_transaction->account->name }} + @money($item->expense_transaction->amount, $item->expense_transaction->currency_code, true)