From eb6506310754f76129c3c42f305dd649bf71f8a7 Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Fri, 8 Mar 2019 07:55:39 +0800 Subject: [PATCH] User can assign pic to an issue --- app/Http/Controllers/Issues/PicController.php | 23 ++++++++++++++++++++++ app/Http/Controllers/Projects/IssueController.php | 5 ++++- .../2019_03_03_210017_create_issues_table.php | 1 + resources/views/projects/issues/show.blade.php | 8 +++++++- routes/web.php | 3 +++ routes/web/projects.php | 5 +++++ tests/Feature/Projects/ProjectIssuesTest.php | 20 +++++++++++++++++++ 7 files changed, 63 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/Issues/PicController.php diff --git a/app/Http/Controllers/Issues/PicController.php b/app/Http/Controllers/Issues/PicController.php new file mode 100644 index 0000000..ff37216 --- /dev/null +++ b/app/Http/Controllers/Issues/PicController.php @@ -0,0 +1,23 @@ +validate([ + 'pic_id' => 'nullable|exists:users,id', + ]); + $issue->pic_id = $picData['pic_id']; + $issue->save(); + + flash(__('issue.pic_assigned'), 'success'); + + return back(); + } +} diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php index e13d772..5d7f8b3 100644 --- a/app/Http/Controllers/Projects/IssueController.php +++ b/app/Http/Controllers/Projects/IssueController.php @@ -2,6 +2,7 @@ namespace App\Http\Controllers\Projects; +use App\Entities\Users\User; use Illuminate\Http\Request; use App\Entities\Projects\Issue; use App\Entities\Projects\Project; @@ -40,7 +41,9 @@ class IssueController extends Controller public function show(Project $project, Issue $issue) { - return view('projects.issues.show', compact('project', 'issue')); + $users = User::all(); + + return view('projects.issues.show', compact('project', 'issue', 'users')); } public function edit(Project $project, Issue $issue) diff --git a/database/migrations/2019_03_03_210017_create_issues_table.php b/database/migrations/2019_03_03_210017_create_issues_table.php index f67ddbf..789511d 100644 --- a/database/migrations/2019_03_03_210017_create_issues_table.php +++ b/database/migrations/2019_03_03_210017_create_issues_table.php @@ -19,6 +19,7 @@ class CreateIssuesTable extends Migration $table->string('title', 60); $table->string('body'); $table->unsignedInteger('creator_id'); + $table->unsignedInteger('pic_id')->nullable(); $table->timestamps(); }); } diff --git a/resources/views/projects/issues/show.blade.php b/resources/views/projects/issues/show.blade.php index 4a8f716..b6dd413 100755 --- a/resources/views/projects/issues/show.blade.php +++ b/resources/views/projects/issues/show.blade.php @@ -5,7 +5,7 @@ @section('content-project')
-
+

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

@@ -19,5 +19,11 @@ +
+ {{ Form::model($issue, ['route' => ['issues.pic.update', $issue], 'method' => 'patch']) }} + {!! FormField::select('pic_id', $users, ['label' => __('issue.assign_pic')]) !!} + {{ Form::submit(__('issue.assign_pic'), ['class' => 'btn btn-success']) }} + {{ Form::close() }} +
@endsection diff --git a/routes/web.php b/routes/web.php index e7922bc..4fd2e73 100644 --- a/routes/web.php +++ b/routes/web.php @@ -1,4 +1,7 @@ runningUnitTests()) { + auth()->loginUsingId(1); +} require __DIR__.'/web/pages.php'; require __DIR__.'/web/users.php'; diff --git a/routes/web/projects.php b/routes/web/projects.php index 167a291..a04aab7 100644 --- a/routes/web/projects.php +++ b/routes/web/projects.php @@ -100,3 +100,8 @@ Route::group(['middleware' => ['auth']], function () { Route::patch('jobs/{job}/comments/{comment}', 'Jobs\CommentsController@update')->name('jobs.comments.update'); Route::delete('jobs/{job}/comments/{comment}', 'Jobs\CommentsController@destroy')->name('jobs.comments.destroy'); }); + +/** + * Issue PIC Routes + */ +Route::patch('issues/{issue}/assign_pic', 'Issues\PicController@update')->name('issues.pic.update'); diff --git a/tests/Feature/Projects/ProjectIssuesTest.php b/tests/Feature/Projects/ProjectIssuesTest.php index 43a6022..48dcbe0 100644 --- a/tests/Feature/Projects/ProjectIssuesTest.php +++ b/tests/Feature/Projects/ProjectIssuesTest.php @@ -126,4 +126,24 @@ class ProjectIssuesTest extends TestCase 'id' => $issue->id, ]); } + + /** @test */ + public function user_can_assign_someone_to_an_issue_as_pic() + { + $this->adminUserSigningIn(); + $worker = $this->createUser('worker'); + $issue = factory(Issue::class)->create(); + + $this->visitRoute('projects.issues.show', [$issue->project, $issue]); + $this->submitForm(__('issue.assign_pic'), [ + 'pic_id' => $worker->id, + ]); + $this->seeRouteIs('projects.issues.show', [$issue->project, $issue]); + $this->seeText(__('issue.pic_assigned')); + + $this->seeInDatabase('issues', [ + 'id' => $issue->id, + 'pic_id' => $worker->id, + ]); + } }