Skip to content

Commit 6b009e9

Browse files
authored
Merge pull request #4 from laravel-enso/feature/addsTaskable
adds taskable & some scopes
2 parents 54895b9 + fc6de53 commit 6b009e9

File tree

3 files changed

+53
-0
lines changed

3 files changed

+53
-0
lines changed

src/Contracts/Taskable.php

+25
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace LaravelEnso\Tasks\Contracts;
4+
5+
use Carbon\Carbon;
6+
use LaravelEnso\Core\Models\User;
7+
8+
interface Taskable
9+
{
10+
public function name(): string;
11+
12+
public function description(): string;
13+
14+
public function allocatedTo(): ?User;
15+
16+
public function createdBy(): ?User;
17+
18+
public function updatedBy(): ?User;
19+
20+
public function reminder(): Carbon;
21+
22+
public function flag(): ?int;
23+
24+
public function completed(): bool;
25+
}

src/Models/Task.php

+5
Original file line numberDiff line numberDiff line change
@@ -54,6 +54,11 @@ public function scopePending($query)
5454
return $query->whereCompleted(false);
5555
}
5656

57+
public function scopeCompleted($query)
58+
{
59+
return $query->whereCompleted(true);
60+
}
61+
5762
public function setReminderAttribute($dateTime)
5863
{
5964
if (Carbon::now()->lessThan($dateTime)) {

src/Services/TaskableFactory.php

+23
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
<?php
2+
3+
namespace LaravelEnso\Tasks\Services;
4+
5+
use LaravelEnso\Tasks\Contracts\Taskable;
6+
use LaravelEnso\Tasks\Models\Task;
7+
8+
class TaskableFactory
9+
{
10+
public function create(Taskable $taskable): Task
11+
{
12+
return Task::create([
13+
'name' => $taskable->name(),
14+
'description' => $taskable->description(),
15+
'allocated_to' => optional($taskable->allocatedTo())->id,
16+
'flag' => $taskable->flag(),
17+
'reminder' => $taskable->reminder(),
18+
'completed' => $taskable->completed(),
19+
'created_by' => optional($taskable->createdBy())->id,
20+
'updated_by' => optional($taskable->updatedBy())->id,
21+
]);
22+
}
23+
}

0 commit comments

Comments
 (0)