diff --git a/app/Entities/Projects/Issue.php b/app/Entities/Projects/Issue.php index b8cf43d..17a31af 100644 --- a/app/Entities/Projects/Issue.php +++ b/app/Entities/Projects/Issue.php @@ -8,7 +8,9 @@ use Illuminate\Database\Eloquent\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() { @@ -25,6 +27,18 @@ class Issue extends Model return $this->belongsTo(User::class); } + public function getPriorityAttribute() + { + return Priority::getNameById($this->priority_id); + } + + public function getPriorityLabelAttribute() + { + $classColor = Priority::getColorById($this->priority_id); + + return ''.$this->priority.''; + } + public function getStatusAttribute() { return IssueStatus::getNameById($this->status_id); diff --git a/app/Entities/Projects/Priority.php b/app/Entities/Projects/Priority.php new file mode 100644 index 0000000..da953f1 --- /dev/null +++ b/app/Entities/Projects/Priority.php @@ -0,0 +1,35 @@ + 'minor', + 2 => 'major', + 3 => 'critical', + ]; + + protected static $colors = [ + 1 => 'info', + 2 => 'warning', + 3 => 'danger', + ]; + + public static function getNameById($singleId) + { + return trans('issue.'.static::getById($singleId)); + } + + public static function toArray() + { + $lists = []; + foreach (static::$lists as $key => $value) { + $lists[$key] = trans('issue.'.$value); + } + + return $lists; + } +} diff --git a/app/Http/Controllers/Issues/OptionController.php b/app/Http/Controllers/Issues/OptionController.php index bad3511..a37a200 100644 --- a/app/Http/Controllers/Issues/OptionController.php +++ b/app/Http/Controllers/Issues/OptionController.php @@ -11,9 +11,11 @@ class OptionController extends Controller public function update(Request $request, Issue $issue) { $issueData = $request->validate([ - 'status_id' => 'required|in:0,1,2,3,4', - 'pic_id' => 'nullable|exists:users,id', + 'priority_id' => 'required|in:1,2,3', + 'status_id' => 'required|in:0,1,2,3,4', + 'pic_id' => 'nullable|exists:users,id', ]); + $issue->priority_id = $issueData['priority_id']; $issue->status_id = $issueData['status_id']; $issue->pic_id = $issueData['pic_id']; $issue->save(); diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php index 86fb337..1a0c603 100644 --- a/app/Http/Controllers/Projects/IssueController.php +++ b/app/Http/Controllers/Projects/IssueController.php @@ -6,6 +6,7 @@ use App\Entities\Users\User; use Illuminate\Http\Request; use App\Entities\Projects\Issue; use App\Entities\Projects\Project; +use App\Entities\Projects\Priority; use App\Http\Controllers\Controller; use App\Entities\Projects\IssueStatus; @@ -15,29 +16,32 @@ class IssueController extends Controller { $issues = $project->issues()->with(['pic', 'creator'])->get(); - return view('projects.issues', compact('project', 'issues')); + return view('projects.issues.index', compact('project', 'issues')); } public function create(Project $project) { $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) { $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([ - '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'); @@ -46,10 +50,13 @@ class IssueController extends Controller public function show(Project $project, Issue $issue) { + $priorities = Priority::toArray(); $statuses = IssueStatus::toArray(); $users = User::pluck('name', 'id'); - return view('projects.issues.show', compact('project', 'issue', 'users', 'statuses')); + return view('projects.issues.show', compact( + 'project', 'issue', 'users', 'statuses', 'priorities' + )); } public function edit(Project $project, Issue $issue) diff --git a/database/factories/IssueFactory.php b/database/factories/IssueFactory.php index 5c43722..2941f50 100644 --- a/database/factories/IssueFactory.php +++ b/database/factories/IssueFactory.php @@ -7,14 +7,15 @@ use App\Entities\Projects\Project; $factory->define(Issue::class, function (Faker $faker) { return [ - 'project_id' => function () { + 'project_id' => function () { return factory(Project::class)->create()->id; }, - 'title' => $faker->words(3, true), - 'body' => $faker->sentences(3, true), - 'creator_id' => function () { + 'title' => $faker->words(3, true), + 'body' => $faker->sentences(3, true), + 'creator_id' => function () { return factory(User::class)->create()->id; }, - 'status_id' => 0, + 'status_id' => 0, + 'priority_id' => 1, ]; }); 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 520a386..ea55458 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->unsignedTinyInteger('priority_id'); $table->unsignedInteger('pic_id')->nullable(); $table->unsignedTinyInteger('status_id')->default(0); $table->timestamps(); diff --git a/resources/lang/de/issue.php b/resources/lang/de/issue.php index 9def5f9..2d81052 100644 --- a/resources/lang/de/issue.php +++ b/resources/lang/de/issue.php @@ -41,6 +41,11 @@ return [ 'pic' => 'Issue PIC', 'creator' => 'Issue Creator', + // Priority + 'minor' => 'Minor', + 'major' => 'Major', + 'critical' => 'Critical', + // Statuses 'open' => 'Open', 'resolved' => 'Resolved', diff --git a/resources/lang/en/issue.php b/resources/lang/en/issue.php index 9def5f9..1be2737 100644 --- a/resources/lang/en/issue.php +++ b/resources/lang/en/issue.php @@ -41,6 +41,12 @@ return [ 'pic' => 'Issue PIC', 'creator' => 'Issue Creator', + // Priority + 'priority' => 'Priority', + 'minor' => 'Minor', + 'major' => 'Major', + 'critical' => 'Critical', + // Statuses 'open' => 'Open', 'resolved' => 'Resolved', diff --git a/resources/lang/id/issue.php b/resources/lang/id/issue.php index 8948b23..3946ac5 100644 --- a/resources/lang/id/issue.php +++ b/resources/lang/id/issue.php @@ -41,6 +41,11 @@ return [ 'pic' => 'PIC Issue', 'creator' => 'Pembuat Issue', + // Priority + 'minor' => 'Minor', + 'major' => 'Major', + 'critical' => 'Critical', + // Statuses 'open' => 'Open', 'resolved' => 'Selesai', diff --git a/resources/views/projects/issues/create.blade.php b/resources/views/projects/issues/create.blade.php index c7a7da7..1422715 100755 --- a/resources/views/projects/issues/create.blade.php +++ b/resources/views/projects/issues/create.blade.php @@ -18,6 +18,7 @@