From 0f9b813a626e6e10aa9b0676199e9d94c4b8886d Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Sun, 17 Mar 2019 23:29:25 +0800 Subject: [PATCH] New entry issue has open status by default --- app/Entities/Projects/Issue.php | 5 +++ app/Entities/Projects/IssueStatus.php | 39 ++++++++++++++++++++++ database/factories/IssueFactory.php | 1 + .../2019_03_03_210017_create_issues_table.php | 1 + resources/lang/de/issue.php | 3 ++ resources/lang/en/issue.php | 3 ++ resources/lang/id/issue.php | 3 ++ tests/Unit/Models/IssueTest.php | 8 +++++ 8 files changed, 63 insertions(+) create mode 100644 app/Entities/Projects/IssueStatus.php diff --git a/app/Entities/Projects/Issue.php b/app/Entities/Projects/Issue.php index 00ef0a6..8bc9ec4 100644 --- a/app/Entities/Projects/Issue.php +++ b/app/Entities/Projects/Issue.php @@ -24,4 +24,9 @@ class Issue extends Model { return $this->belongsTo(User::class); } + + public function getStatusAttribute() + { + return IssueStatus::getNameById($this->status_id); + } } 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/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..4417898 100644 --- a/resources/lang/de/issue.php +++ b/resources/lang/de/issue.php @@ -40,4 +40,7 @@ return [ 'project' => 'Issue Project', 'pic' => 'Issue PIC', 'creator' => 'Issue Creator', + + // Statuses + 'open' => 'Open', ]; diff --git a/resources/lang/en/issue.php b/resources/lang/en/issue.php index de4bc36..4417898 100644 --- a/resources/lang/en/issue.php +++ b/resources/lang/en/issue.php @@ -40,4 +40,7 @@ return [ 'project' => 'Issue Project', 'pic' => 'Issue PIC', 'creator' => 'Issue Creator', + + // Statuses + 'open' => 'Open', ]; diff --git a/resources/lang/id/issue.php b/resources/lang/id/issue.php index 200859e..c9f914c 100644 --- a/resources/lang/id/issue.php +++ b/resources/lang/id/issue.php @@ -40,4 +40,7 @@ return [ 'project' => 'Project Issue', 'pic' => 'PIC Issue', 'creator' => 'Pembuat Issue', + + // Statuses + 'open' => 'Open', ]; diff --git a/tests/Unit/Models/IssueTest.php b/tests/Unit/Models/IssueTest.php index 0f73412..9f658cc 100644 --- a/tests/Unit/Models/IssueTest.php +++ b/tests/Unit/Models/IssueTest.php @@ -47,4 +47,12 @@ class IssueTest extends TestCase $this->assertInstanceOf(User::class, $issue->creator); $this->assertEquals($issue->creator_id, $issue->creator->id); } + + /** @test */ + public function an_issue_has_status_attribute() + { + $issue = factory(Issue::class)->make(); + + $this->assertEquals(__('issue.open'), $issue->status); + } }