From d2ece73d44592641e344a34d4be613227427bcd5 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 7 Mar 2019 21:42:17 +0800 Subject: [PATCH] Add issue deletion feature --- app/Http/Controllers/Projects/IssueController.php | 14 +++++++ resources/views/projects/issues/edit.blade.php | 47 +++++++++++++++++------ routes/web/projects.php | 1 + tests/Feature/Projects/ProjectIssuesTest.php | 10 ++++- 4 files changed, 59 insertions(+), 13 deletions(-) diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php index 16147d8..e13d772 100644 --- a/app/Http/Controllers/Projects/IssueController.php +++ b/app/Http/Controllers/Projects/IssueController.php @@ -62,4 +62,18 @@ class IssueController extends Controller return redirect()->route('projects.issues.show', [$project, $issue]); } + + public function destroy(Request $request, Project $project, Issue $issue) + { + $request->validate(['issue_id' => 'required']); + + if ($request->get('issue_id') == $issue->id && $issue->delete()) { + flash(__('issue.deleted'), 'warning'); + + return redirect()->route('projects.issues.index', $project); + } + flash(__('issue.undeleted'), 'danger'); + + return back(); + } } diff --git a/resources/views/projects/issues/edit.blade.php b/resources/views/projects/issues/edit.blade.php index cbd2194..7746ce3 100755 --- a/resources/views/projects/issues/edit.blade.php +++ b/resources/views/projects/issues/edit.blade.php @@ -5,19 +5,44 @@ @section('content-project')
- {{ Form::model($issue, ['route' => ['projects.issues.update', $project, $issue], 'method' => 'patch']) }} -
-

{{ __('issue.update') }}

-
- {!! FormField::text('title', ['label' => __('issue.title')]) !!} - {!! FormField::textarea('body', ['label' => __('issue.body')]) !!} + @if (request('action') == 'delete' && $issue) +
+

{{ __('issue.delete') }}

+
+ +

{{ $issue->title }}

+ +

{{ $issue->body }}

+ {!! $errors->first('issue_id', ':message') !!} +
+
+
{{ __('issue.delete_confirm') }}
+
- - {{ Form::close() }} + {{ Form::close() }} + @endif
@endsection diff --git a/routes/web/projects.php b/routes/web/projects.php index 53b6af9..167a291 100644 --- a/routes/web/projects.php +++ b/routes/web/projects.php @@ -54,6 +54,7 @@ Route::group(['middleware' => ['auth'], 'namespace' => 'Projects'], function () Route::get('projects/{project}/issues/{issue}', 'IssueController@show')->name('projects.issues.show'); Route::get('projects/{project}/issues/{issue}/edit', 'IssueController@edit')->name('projects.issues.edit'); Route::patch('projects/{project}/issues/{issue}', 'IssueController@update')->name('projects.issues.update'); + Route::delete('projects/{project}/issues/{issue}', 'IssueController@destroy')->name('projects.issues.destroy'); /* * Tasks Routes diff --git a/tests/Feature/Projects/ProjectIssuesTest.php b/tests/Feature/Projects/ProjectIssuesTest.php index 7ae6f45..43a6022 100644 --- a/tests/Feature/Projects/ProjectIssuesTest.php +++ b/tests/Feature/Projects/ProjectIssuesTest.php @@ -109,12 +109,18 @@ class ProjectIssuesTest extends TestCase 'project_id' => $project->id, ]); - $this->visitRoute('projects.issues.index', $project); + $this->visitRoute('projects.issues.edit', [$project, $issue]); + $this->seeElement('a', ['id' => 'delete-issue-'.$issue->id]); + + $this->click('delete-issue-'.$issue->id); + + $this->seePageIs(route('projects.issues.edit', [$project, $issue, 'action' => 'delete'])); $this->seeElement('button', ['id' => 'delete-issue-'.$issue->id]); + $this->press('delete-issue-'.$issue->id); $this->seePageIs(route('projects.issues.index', $project)); - $this->see(__('issue.deleted')); + $this->seeText(__('issue.deleted')); $this->dontSeeInDatabase('issues', [ 'id' => $issue->id,