diff --git a/app/Http/Controllers/RelatedController.php b/app/Http/Controllers/RelatedController.php index 59f112b2d7..6e5102bf52 100644 --- a/app/Http/Controllers/RelatedController.php +++ b/app/Http/Controllers/RelatedController.php @@ -1,16 +1,15 @@ 0) { - $set = Auth::user()->transactionjournals()->whereIn('id', $unique)->get(); - $set->each( + $journals = Auth::user()->transactionjournals()->whereIn('id', $unique)->get(); + $journals->each( function (TransactionJournal $journal) { /** @var Transaction $t */ foreach ($journal->transactions()->get() as $t) { @@ -54,11 +54,38 @@ class RelatedController extends Controller } ); - - return Response::json($set->toArray()); - } else { - return Response::json((new Collection)->toArray()); } + $parent = $journal; + + return view('related.alreadyRelated', compact('parent', 'journals')); + } + + /** + * @SuppressWarnings("CyclomaticComplexity") // It's exactly 5. So I don't mind. + * + * @param TransactionJournal $parentJournal + * @param TransactionJournal $childJournal + * + * @return \Illuminate\Http\JsonResponse + * @throws Exception + */ + public function getRemoveRelation(TransactionJournal $parentJournal, TransactionJournal $childJournal) + { + $groups = $parentJournal->transactiongroups()->get(); + /** @var TransactionGroup $group */ + foreach ($groups as $group) { + foreach ($group->transactionjournals()->get() as $loopJournal) { + if ($loopJournal->id == $childJournal->id) { + // remove from group: + $group->transactionjournals()->detach($childJournal); + } + } + if ($group->transactionjournals()->count() == 1) { + $group->delete(); + } + } + + return Redirect::to(URL::previous()); } /** @@ -130,34 +157,6 @@ class RelatedController extends Controller return Response::json(true); } - /** - * @SuppressWarnings("CyclomaticComplexity") // It's exactly 5. So I don't mind. - * - * @param TransactionJournal $parentJournal - * @param TransactionJournal $childJournal - * - * @return \Illuminate\Http\JsonResponse - * @throws Exception - */ - public function getRemoveRelation(TransactionJournal $parentJournal, TransactionJournal $childJournal) - { - $groups = $parentJournal->transactiongroups()->get(); - /** @var TransactionGroup $group */ - foreach ($groups as $group) { - foreach ($group->transactionjournals()->get() as $loopJournal) { - if ($loopJournal->id == $childJournal->id) { - // remove from group: - $group->transactionjournals()->detach($childJournal); - } - } - if ($group->transactionjournals()->count() == 1) { - $group->delete(); - } - } - - return Redirect::to(URL::previous()); - } - /** * @param TransactionJournal $journal * @@ -167,9 +166,11 @@ class RelatedController extends Controller { $search = e(trim(Input::get('searchValue'))); + $parent = $journal; $journals = $repository->searchRelated($search, $journal); - return view('related.searchResult',compact('journals')); + + return view('related.searchResult', compact('journals', 'search', 'parent')); } diff --git a/public/js/related-manager.js b/public/js/related-manager.js index 8ed80bbfaa..276532d77f 100644 --- a/public/js/related-manager.js +++ b/public/js/related-manager.js @@ -1,23 +1,40 @@ $(document).ready(function () { - $('.relateTransaction').click(relateTransaction); - $('.unrelate-checkbox').click(unrelateTransaction); + $('.relateTransaction').click(relateTransactionDialog); + //$('.unrelate-checkbox').click(unrelateTransaction); }); function unrelateTransaction(e) { var target = $(e.target); var id = target.data('id'); - var relatedTo = target.data('relatedto'); + var parent = target.data('parent'); - $.post('related/removeRelation/' + id + '/' + relatedTo, {_token: token}).success(function (data) { + if(typeof id == "undefined" && typeof parent == "undefined") { + target = target.parent(); + id = target.data('id'); + parent = target.data('parent'); + } + console.log('unlink ' + id + ' from ' + parent); + + $.post('related/removeRelation/' + id + '/' + parent, {_token: token}).success(function (data) { target.parent().parent().remove(); }).fail(function () { alert('Could not!'); }); + + return false; + + + //$.post('related/removeRelation/' + id + '/' + relatedTo, {_token: token}).success(function (data) { + // target.parent().parent().remove(); + //}).fail(function () { + // alert('Could not!'); + //}); + } -function relateTransaction(e) { +function relateTransactionDialog(e) { var target = $(e.target); var ID = target.data('id'); @@ -45,6 +62,8 @@ function searchRelatedTransactions(e, ID) { // post the results to some div. $('#relatedSearchResultsTitle').show(); $('#relatedSearchResults').empty().html(data); + // remove any clicks. + $('.relate').unbind('click').on('click', doRelateNewTransaction); }).fail(function () { alert('Could not search. Sorry.'); @@ -58,38 +77,35 @@ function doRelateNewTransaction(e) { // remove the row from the table: var target = $(e.target); var id = target.data('id'); - var relateToId = target.data('relateto'); - if (!target.checked) { - var relateID = target.data('id'); - $.post('related/relate/' + id + '/' + relateToId, {_token: token}).success(function (data) { - // success! - target.parent().parent().remove(); - getAlreadyRelatedTransactions(null, relateToId); - }).fail(function () { - // could not relate. - alert('Error!'); - }); + var parent = target.data('parent'); - - } else { - alert('remove again!'); + if (typeof id == "undefined" && typeof parent == "undefined") { + target = target.parent(); + console.log(target); + id = target.data('id'); + parent = target.data('parent'); } + + console.log('Relate ' + id + ' to ' + parent); + $.post('related/relate/' + parent + '/' + id, {_token: token}).success(function (data) { + // success! remove entry: + target.parent().parent().remove(); + // get related stuff (again). + getAlreadyRelatedTransactions(null, parent); + }).fail(function () { + // could not relate. + alert('Could not relate this transaction to the intended target.'); + }); + return false; } function getAlreadyRelatedTransactions(e, ID) { //#alreadyRelated $.get('related/alreadyRelated/' + ID).success(function (data) { - $('#alreadyRelated').empty(); - $.each(data, function (i, row) { - var tr = $(''); + $('#alreadyRelated').empty().html(data); + // some event triggers. + $('.unrelate').unbind('click').on('click', unrelateTransaction); - var checkBox = $('').append($('').attr('type', 'checkbox').data('relateto', ID).data('id', row.id).click(doRelateNewTransaction)); - var description = $('').text(row.description); - var amount = $('').html(row.amount); - tr.append(checkBox).append(description).append(amount); - $('#alreadyRelated').append(tr); - //$('#relatedSearchResults').append($('
').text(row.id)); - }); }).fail(function () { alert('Cannot get related stuff.'); }); diff --git a/resources/views/related/alreadyRelated.blade.php b/resources/views/related/alreadyRelated.blade.php new file mode 100644 index 0000000000..619d785dc2 --- /dev/null +++ b/resources/views/related/alreadyRelated.blade.php @@ -0,0 +1,62 @@ +@if($journals->count() > 0) + + @foreach($journals as $journal) + + + + + + + + +{{-- + + + + + + +@if(isset($account)) + @foreach($journal->transactions as $index => $t) + @if($t->account_id == $account->id) + {!! Amount::formatTransaction($t) !!} + @endif + @endforeach + @else + @foreach($journal->transactions as $index => $t) + @if($index == 0) + {!! Amount::formatTransaction($t) !!} + @endif + @endforeach + @endif + + + + --}} + @endforeach +
+ @if($journal->transactiontype->type == 'Withdrawal') + + @endif + @if($journal->transactiontype->type == 'Deposit') + + @endif + @if($journal->transactiontype->type == 'Transfer') + + @endif + {{$journal->date->format('jS M Y')}} + {{{$journal->description}}} + + @if($journal->transactiontype->type == 'Withdrawal') + {{Amount::formatTransaction($journal->transactions[0],false)}} + @endif + @if($journal->transactiontype->type == 'Deposit') + {{Amount::formatTransaction($journal->transactions[1],false)}} + @endif + @if($journal->transactiontype->type == 'Transfer') + {{Amount::formatTransaction($journal->transactions[1],false)}} + @endif +
+@else +

No related transactions

+@endif \ No newline at end of file diff --git a/resources/views/related/relate.blade.php b/resources/views/related/relate.blade.php index 7d8ad029d8..194b4d74a8 100644 --- a/resources/views/related/relate.blade.php +++ b/resources/views/related/relate.blade.php @@ -19,8 +19,7 @@
(Already) related transactions
-
-
+