diff --git a/app/Entities/Projects/Issue.php b/app/Entities/Projects/Issue.php index b8cf43d..535276f 100644 --- a/app/Entities/Projects/Issue.php +++ b/app/Entities/Projects/Issue.php @@ -25,6 +25,11 @@ class Issue extends Model return $this->belongsTo(User::class); } + public function getPriorityAttribute() + { + return Priority::getNameById($this->priority_id); + } + 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..2e61f52 --- /dev/null +++ b/app/Entities/Projects/Priority.php @@ -0,0 +1,36 @@ + 'minor', + 2 => 'major', + 3 => 'critical', + ]; + + protected static $colors = [ + 0 => 'yellow', + 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/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..2d81052 100644 --- a/resources/lang/en/issue.php +++ b/resources/lang/en/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/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/tests/Unit/Models/IssueTest.php b/tests/Unit/Models/IssueTest.php index f0a6b4e..1c61152 100644 --- a/tests/Unit/Models/IssueTest.php +++ b/tests/Unit/Models/IssueTest.php @@ -63,4 +63,12 @@ class IssueTest extends TestCase $this->assertEquals(''.$issue->status.'', $issue->status_label); } + + /** @test */ + public function an_issue_has_priority_attribute() + { + $issue = factory(Issue::class)->make(); + + $this->assertEquals(__('issue.minor'), $issue->priority); + } }