Browse Source

User can create issue with selected priority

pull/37/head
Nafies Luthfi 7 years ago
parent
commit
7b30caff8e
  1. 4
      app/Entities/Projects/Issue.php
  2. 1
      app/Entities/Projects/Priority.php
  3. 22
      app/Http/Controllers/Projects/IssueController.php
  4. 1
      resources/lang/en/issue.php
  5. 1
      resources/views/projects/issues/create.blade.php
  6. 18
      tests/Feature/Projects/ProjectIssuesTest.php

4
app/Entities/Projects/Issue.php

@ -8,7 +8,9 @@ use Illuminate\Database\Eloquent\Model;
class Issue extends Model class Issue extends Model
{ {
protected $fillable = ['project_id', 'title', 'body', 'pic_id', 'creator_id'];
protected $fillable = [
'project_id', 'title', 'body', 'priority_id', 'pic_id', 'creator_id',
];
public function project() public function project()
{ {

1
app/Entities/Projects/Priority.php

@ -13,7 +13,6 @@ class Priority extends ReferenceAbstract
]; ];
protected static $colors = [ protected static $colors = [
0 => 'yellow',
1 => 'info', 1 => 'info',
2 => 'warning', 2 => 'warning',
3 => 'danger', 3 => 'danger',

22
app/Http/Controllers/Projects/IssueController.php

@ -6,6 +6,7 @@ use App\Entities\Users\User;
use Illuminate\Http\Request; use Illuminate\Http\Request;
use App\Entities\Projects\Issue; use App\Entities\Projects\Issue;
use App\Entities\Projects\Project; use App\Entities\Projects\Project;
use App\Entities\Projects\Priority;
use App\Http\Controllers\Controller; use App\Http\Controllers\Controller;
use App\Entities\Projects\IssueStatus; use App\Entities\Projects\IssueStatus;
@ -21,23 +22,26 @@ class IssueController extends Controller
public function create(Project $project) public function create(Project $project)
{ {
$users = User::pluck('name', 'id'); $users = User::pluck('name', 'id');
$priorities = Priority::toArray();
return view('projects.issues.create', compact('project', 'users'));
return view('projects.issues.create', compact('project', 'users', 'priorities'));
} }
public function store(Request $request, Project $project) public function store(Request $request, Project $project)
{ {
$issueData = $request->validate([ $issueData = $request->validate([
'title' => 'required|max:60',
'body' => 'required|max:255',
'pic_id' => 'nullable|exists:users,id',
'title' => 'required|max:60',
'body' => 'required|max:255',
'priority_id' => 'required|in:1,2,3',
'pic_id' => 'nullable|exists:users,id',
]); ]);
Issue::create([ Issue::create([
'project_id' => $project->id,
'creator_id' => auth()->id(),
'title' => $issueData['title'],
'body' => $issueData['body'],
'pic_id' => $issueData['pic_id'],
'project_id' => $project->id,
'creator_id' => auth()->id(),
'title' => $issueData['title'],
'body' => $issueData['body'],
'priority_id' => $issueData['priority_id'],
'pic_id' => $issueData['pic_id'],
]); ]);
flash(__('issue.created'), 'success'); flash(__('issue.created'), 'success');

1
resources/lang/en/issue.php

@ -42,6 +42,7 @@ return [
'creator' => 'Issue Creator', 'creator' => 'Issue Creator',
// Priority // Priority
'priority' => 'Priority',
'minor' => 'Minor', 'minor' => 'Minor',
'major' => 'Major', 'major' => 'Major',
'critical' => 'Critical', 'critical' => 'Critical',

1
resources/views/projects/issues/create.blade.php

@ -18,6 +18,7 @@
<div class="panel-body"> <div class="panel-body">
{!! FormField::text('title', ['label' => __('issue.title')]) !!} {!! FormField::text('title', ['label' => __('issue.title')]) !!}
{!! FormField::textarea('body', ['label' => __('issue.body')]) !!} {!! FormField::textarea('body', ['label' => __('issue.body')]) !!}
{!! FormField::radios('priority_id', $priorities, ['label' => __('issue.priority'), 'placeholder' => false]) !!}
{!! FormField::select('pic_id', $users, ['label' => __('issue.pic')]) !!} {!! FormField::select('pic_id', $users, ['label' => __('issue.pic')]) !!}
</div> </div>
<div class="panel-footer"> <div class="panel-footer">

18
tests/Feature/Projects/ProjectIssuesTest.php

@ -37,20 +37,22 @@ class ProjectIssuesTest extends TestCase
$this->visitRoute('projects.issues.create', $project); $this->visitRoute('projects.issues.create', $project);
$this->submitForm(__('issue.create'), [ $this->submitForm(__('issue.create'), [
'title' => 'First Issue.',
'body' => 'First Issue description.',
'pic_id' => $admin->id,
'title' => 'First Issue.',
'body' => 'First Issue description.',
'priority_id' => 1,
'pic_id' => $admin->id,
]); ]);
$this->seePageIs(route('projects.issues.index', $project)); $this->seePageIs(route('projects.issues.index', $project));
$this->see(__('issue.created')); $this->see(__('issue.created'));
$this->seeInDatabase('issues', [ $this->seeInDatabase('issues', [
'project_id' => $project->id,
'title' => 'First Issue.',
'body' => 'First Issue description.',
'pic_id' => $admin->id,
'creator_id' => $admin->id,
'project_id' => $project->id,
'title' => 'First Issue.',
'body' => 'First Issue description.',
'priority_id' => 1,
'pic_id' => $admin->id,
'creator_id' => $admin->id,
]); ]);
} }

Loading…
Cancel
Save