diff --git a/app/Entities/Projects/Issue.php b/app/Entities/Projects/Issue.php index 00ef0a6..b8cf43d 100644 --- a/app/Entities/Projects/Issue.php +++ b/app/Entities/Projects/Issue.php @@ -24,4 +24,14 @@ class Issue extends Model { return $this->belongsTo(User::class); } + + public function getStatusAttribute() + { + return IssueStatus::getNameById($this->status_id); + } + + public function getStatusLabelAttribute() + { + return ''.$this->status.''; + } } diff --git a/app/Entities/Projects/IssueStatus.php b/app/Entities/Projects/IssueStatus.php new file mode 100644 index 0000000..159b60a --- /dev/null +++ b/app/Entities/Projects/IssueStatus.php @@ -0,0 +1,39 @@ + 'open', + 1 => 'resolved', + 2 => 'closed', + 3 => 'on_hold', + 4 => 'invalid', + ]; + + protected static $colors = [ + 0 => 'yellow', + 1 => 'green', + 2 => 'primary', + 3 => 'default', + 4 => 'warning', + ]; + + 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 new file mode 100644 index 0000000..bad3511 --- /dev/null +++ b/app/Http/Controllers/Issues/OptionController.php @@ -0,0 +1,24 @@ +validate([ + 'status_id' => 'required|in:0,1,2,3,4', + 'pic_id' => 'nullable|exists:users,id', + ]); + $issue->status_id = $issueData['status_id']; + $issue->pic_id = $issueData['pic_id']; + $issue->save(); + flash(__('issue.updated'), 'success'); + + return back(); + } +} diff --git a/app/Http/Controllers/Issues/PicController.php b/app/Http/Controllers/Issues/PicController.php deleted file mode 100644 index 8a5c63f..0000000 --- a/app/Http/Controllers/Issues/PicController.php +++ /dev/null @@ -1,27 +0,0 @@ -validate([ - 'pic_id' => 'nullable|exists:users,id', - ]); - $issue->pic_id = $picData['pic_id']; - $issue->save(); - - if ($issue->pic_id) { - flash(__('issue.pic_assigned'), 'success'); - } else { - flash(__('issue.pic_removed'), 'warning'); - } - - return back(); - } -} diff --git a/app/Http/Controllers/Projects/IssueController.php b/app/Http/Controllers/Projects/IssueController.php index 1dddc69..86fb337 100644 --- a/app/Http/Controllers/Projects/IssueController.php +++ b/app/Http/Controllers/Projects/IssueController.php @@ -7,6 +7,7 @@ use Illuminate\Http\Request; use App\Entities\Projects\Issue; use App\Entities\Projects\Project; use App\Http\Controllers\Controller; +use App\Entities\Projects\IssueStatus; class IssueController extends Controller { @@ -45,9 +46,10 @@ class IssueController extends Controller public function show(Project $project, Issue $issue) { + $statuses = IssueStatus::toArray(); $users = User::pluck('name', 'id'); - return view('projects.issues.show', compact('project', 'issue', 'users')); + return view('projects.issues.show', compact('project', 'issue', 'users', 'statuses')); } public function edit(Project $project, Issue $issue) diff --git a/database/factories/IssueFactory.php b/database/factories/IssueFactory.php index 859781d..5c43722 100644 --- a/database/factories/IssueFactory.php +++ b/database/factories/IssueFactory.php @@ -15,5 +15,6 @@ $factory->define(Issue::class, function (Faker $faker) { 'creator_id' => function () { return factory(User::class)->create()->id; }, + 'status_id' => 0, ]; }); 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 789511d..520a386 100644 --- a/database/migrations/2019_03_03_210017_create_issues_table.php +++ b/database/migrations/2019_03_03_210017_create_issues_table.php @@ -20,6 +20,7 @@ class CreateIssuesTable extends Migration $table->string('body'); $table->unsignedInteger('creator_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 de4bc36..9def5f9 100644 --- a/resources/lang/de/issue.php +++ b/resources/lang/de/issue.php @@ -40,4 +40,11 @@ return [ 'project' => 'Issue Project', 'pic' => 'Issue PIC', 'creator' => 'Issue Creator', + + // Statuses + 'open' => 'Open', + 'resolved' => 'Resolved', + 'closed' => 'Closed', + 'on_hold' => 'On Hold', + 'invalid' => 'Invalid', ]; diff --git a/resources/lang/en/issue.php b/resources/lang/en/issue.php index de4bc36..9def5f9 100644 --- a/resources/lang/en/issue.php +++ b/resources/lang/en/issue.php @@ -40,4 +40,11 @@ return [ 'project' => 'Issue Project', 'pic' => 'Issue PIC', 'creator' => 'Issue Creator', + + // Statuses + 'open' => 'Open', + 'resolved' => 'Resolved', + 'closed' => 'Closed', + 'on_hold' => 'On Hold', + 'invalid' => 'Invalid', ]; diff --git a/resources/lang/id/issue.php b/resources/lang/id/issue.php index 200859e..8948b23 100644 --- a/resources/lang/id/issue.php +++ b/resources/lang/id/issue.php @@ -40,4 +40,11 @@ return [ 'project' => 'Project Issue', 'pic' => 'PIC Issue', 'creator' => 'Pembuat Issue', + + // Statuses + 'open' => 'Open', + 'resolved' => 'Selesai', + 'closed' => 'Ditutup', + 'on_hold' => 'Ditunda', + 'invalid' => 'Tidak Valid', ]; diff --git a/resources/views/projects/issues.blade.php b/resources/views/projects/issues.blade.php index b05420d..890da34 100755 --- a/resources/views/projects/issues.blade.php +++ b/resources/views/projects/issues.blade.php @@ -17,6 +17,7 @@ {{ __('app.table_no') }} {{ __('issue.title') }} + {{ __('app.status') }} {{ __('issue.pic') }} {{ __('issue.creator') }} {{ __('app.action') }} @@ -29,6 +30,7 @@ {{ $no }} {{ $issue->title }} + {!! $issue->status_label !!} {{ $issue->pic->name }} {{ $issue->creator->name }} @@ -41,7 +43,7 @@ @empty - {{ __('issue.empty') }} + {{ __('issue.empty') }} @endforelse diff --git a/resources/views/projects/issues/show.blade.php b/resources/views/projects/issues/show.blade.php index 191b16d..70bf183 100755 --- a/resources/views/projects/issues/show.blade.php +++ b/resources/views/projects/issues/show.blade.php @@ -12,7 +12,12 @@
-

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

+
+

+
{!! $issue->status_label !!}
+ {{ __('issue.detail') }} +

+
@@ -27,10 +32,11 @@
- {{ Form::model($issue, ['route' => ['issues.pic.update', $issue], 'method' => 'patch']) }} + {{ Form::model($issue, ['route' => ['issues.options.update', $issue], 'method' => 'patch']) }}

{{ __('app.action') }}

+ {!! FormField::radios('status_id', $statuses, ['label' => __('app.status')]) !!} {!! FormField::select('pic_id', $users, ['label' => __('issue.assign_pic'), 'placeholder' => __('issue.select_pic')]) !!}
{{ __('issue.title') }}{{ $issue->title }}