From 6a65b6aa80a9946b4799c40dfacd1d04530083e7 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 3 Dec 2017 18:11:01 +0800 Subject: [PATCH] Add invoice delete feature with deletation confirm page Restructure invoice detail page to invoice detail view partial --- .../Controllers/Invoices/InvoicesController.php | 16 ++++++++++ resources/views/invoices/edit.blade.php | 37 ++++++++++++++++++++++ resources/views/invoices/partials/detail.blade.php | 12 +++++++ resources/views/invoices/show.blade.php | 13 +------- tests/Feature/Invoices/ManageInvoicesTest.php | 30 ++++++++++++++++-- 5 files changed, 93 insertions(+), 15 deletions(-) create mode 100644 resources/views/invoices/partials/detail.blade.php diff --git a/app/Http/Controllers/Invoices/InvoicesController.php b/app/Http/Controllers/Invoices/InvoicesController.php index d79ee87..63f7252 100644 --- a/app/Http/Controllers/Invoices/InvoicesController.php +++ b/app/Http/Controllers/Invoices/InvoicesController.php @@ -48,6 +48,22 @@ class InvoicesController extends Controller return redirect()->route('invoices.show', $invoice); } + public function destroy(Invoice $invoice) + { + $this->validate(request(), [ + 'invoice_id' => 'required', + ]); + + if (request('invoice_id') == $invoice->id && $invoice->delete()) { + flash(trans('invoice.deleted'), 'warning'); + return redirect()->route('projects.invoices', $invoice->project_id); + } + + flash(trans('invoice.undeleted'), 'danger'); + + return back(); + } + public function pdf(Invoice $invoice) { return view('invoices.pdf', compact('invoice')); diff --git a/resources/views/invoices/edit.blade.php b/resources/views/invoices/edit.blade.php index 5d8e708..25b3384 100644 --- a/resources/views/invoices/edit.blade.php +++ b/resources/views/invoices/edit.blade.php @@ -3,6 +3,40 @@ @section('title', $invoice->number . ' - ' . trans('invoice.edit')) @section('content') + +@if (request('action') == 'delete') + +

+
+ {{ link_to_route('invoices.edit', trans('app.back'), $invoice, ['class' => 'btn btn-default']) }} +
+ {{ $invoice->number }} {{ trans('invoice.delete') }} +

+
+
+
+

{{ trans('invoice.delete') }}

+ @include('invoices.partials.detail') +
+ {{ trans('invoice.delete_confirm') }} +
+ +
+
+
+ +@else +

{{ link_to_route('invoices.show', trans('invoice.back_to_show'), $invoice, ['class' => 'btn btn-default']) }} @@ -35,6 +69,9 @@
+{{ link_to_route('invoices.edit', trans('invoice.delete'), [$invoice, 'action' => 'delete'], ['class'=>'btn btn-danger']) }} +@endif + @endsection @section('ext_css') diff --git a/resources/views/invoices/partials/detail.blade.php b/resources/views/invoices/partials/detail.blade.php new file mode 100644 index 0000000..875a76c --- /dev/null +++ b/resources/views/invoices/partials/detail.blade.php @@ -0,0 +1,12 @@ + + + + + + + + + + + +
{{ trans('invoice.number') }}{{ $invoice->number }}
{{ trans('invoice.date') }}{{ $invoice->date }}
{{ trans('invoice.due_date') }}{{ $invoice->due_date }}
{{ trans('invoice.project') }}{{ $invoice->project->nameLink() }}
{{ trans('invoice.customer') }}{{ $invoice->project->customer->nameLink() }}
{{ trans('invoice.items_count') }}{{ $invoice->items_count }}
{{ trans('invoice.creator') }}{{ $invoice->creator->name }}
{{ trans('invoice.amount') }}{{ formatRp($invoice->amount) }}
diff --git a/resources/views/invoices/show.blade.php b/resources/views/invoices/show.blade.php index 64de2f2..2de2e5c 100644 --- a/resources/views/invoices/show.blade.php +++ b/resources/views/invoices/show.blade.php @@ -14,18 +14,7 @@

{{ trans('invoice.detail') }}

- - - - - - - - - - - -
{{ trans('invoice.number') }}{{ $invoice->number }}
{{ trans('invoice.date') }}{{ $invoice->date }}
{{ trans('invoice.due_date') }}{{ $invoice->due_date }}
{{ trans('invoice.project') }}{{ $invoice->project->nameLink() }}
{{ trans('invoice.customer') }}{{ $invoice->project->customer->nameLink() }}
{{ trans('invoice.items_count') }}{{ $invoice->items_count }}
{{ trans('invoice.creator') }}{{ $invoice->creator->name }}
{{ trans('invoice.amount') }}{{ formatRp($invoice->amount) }}
+ @include('invoices.partials.detail')
diff --git a/tests/Feature/Invoices/ManageInvoicesTest.php b/tests/Feature/Invoices/ManageInvoicesTest.php index c868f5d..d8afbda 100644 --- a/tests/Feature/Invoices/ManageInvoicesTest.php +++ b/tests/Feature/Invoices/ManageInvoicesTest.php @@ -53,7 +53,7 @@ class ManageInvoicesTest extends TestCase } /** @test */ - public function user_can_add_invoice_item() + public function user_can_add_invoice_item_on_invoice_edit_page() { $this->adminUserSigningIn(); $invoice = factory(Invoice::class)->create(); @@ -84,7 +84,7 @@ class ManageInvoicesTest extends TestCase } /** @test */ - public function user_can_update_invoice_item() + public function user_can_update_invoice_item_on_invoice_edit_page() { $this->adminUserSigningIn(); @@ -115,7 +115,7 @@ class ManageInvoicesTest extends TestCase } /** @test */ - public function user_can_remove_invoice_item() + public function user_can_remove_invoice_item_on_invoice_edit_page() { $this->adminUserSigningIn(); @@ -142,4 +142,28 @@ class ManageInvoicesTest extends TestCase 'amount' => 1111, ]); } + + /** @test */ + public function user_can_delete_an_invoice() + { + $this->adminUserSigningIn(); + $invoice = factory(Invoice::class)->create(); + + $this->visit(route('invoices.edit', $invoice)); + + $this->click(trans('invoice.delete')); + $this->seePageIs(route('invoices.edit', [$invoice, 'action' => 'delete'])); + + $this->submitForm(trans('invoice.delete'), [ + 'invoice_id' => $invoice->id, + ]); + + $this->see(trans('invoice.deleted')); + + $this->seePageIs(route('projects.invoices', $invoice->project_id)); + + $this->dontSeeInDatabase('invoices', [ + 'id' => $invoice->id, + ]); + } }