Skip to content

Commit

Permalink
allow null for reason
Browse files Browse the repository at this point in the history
  • Loading branch information
lostincode committed Jul 19, 2018
1 parent 5e0d403 commit 388ad61
Show file tree
Hide file tree
Showing 2 changed files with 20 additions and 12 deletions.
2 changes: 1 addition & 1 deletion README.md
Original file line number Diff line number Diff line change
Expand Up @@ -169,7 +169,7 @@ $allNonInitiatedOrPendingModels = Model::otherCurrentStatus('initiated', 'pendin
You can add custom validation when setting a status by overwriting the `isValidStatus` method:

```php
public function isValidStatus(string $name, string $description = ''): bool
public function isValidStatus(string $name, ?string $reason = null): bool
{
...

Expand Down
30 changes: 19 additions & 11 deletions src/HasStatuses.php
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ public function status(): ?Status
return $this->latestStatus();
}

public function setStatus(string $name, string $reason = ''): self
public function setStatus(string $name, ?string $reason = null): self
{
if (! $this->isValidStatus($name, $reason)) {
throw InvalidStatus::create($name);
Expand All @@ -32,7 +32,7 @@ public function setStatus(string $name, string $reason = ''): self
return $this->forceSetStatus($name, $reason);
}

public function isValidStatus(string $name, string $reason = ''): bool
public function isValidStatus(string $name, ?string $reason = null): bool
{
return true;
}
Expand All @@ -59,19 +59,23 @@ public function scopeCurrentStatus(Builder $builder, ...$names)
{
$names = is_array($names) ? array_flatten($names) : func_get_args();
$builder
->whereHas('statuses',
->whereHas(
'statuses',
function (Builder $query) use ($names) {
$query
->whereIn('name', $names)
->whereIn('id',
->whereIn(
'id',
function (QueryBuilder $query) {
$query
->select(DB::raw('max(id)'))
->from($this->getStatusTableName())
->where('model_type', $this->getStatusModelType())
->groupBy($this->getModelKeyColumnName());
});
});
}
);
}
);
}

/**
Expand All @@ -83,19 +87,23 @@ public function scopeOtherCurrentStatus(Builder $builder, ...$names)
{
$names = is_array($names) ? array_flatten($names) : func_get_args();
$builder
->whereHas('statuses',
->whereHas(
'statuses',
function (Builder $query) use ($names) {
$query
->whereNotIn('name', $names)
->whereIn('id',
->whereIn(
'id',
function (QueryBuilder $query) use ($names) {
$query
->select(DB::raw('max(id)'))
->from($this->getStatusTableName())
->where('model_type', $this->getStatusModelType())
->groupBy($this->getModelKeyColumnName());
});
})
}
);
}
)
->orWhereDoesntHave('statuses');
}

Expand All @@ -104,7 +112,7 @@ public function getStatusAttribute(): string
return (string) $this->latestStatus();
}

public function forceSetStatus(string $name, string $reason = ''): self
public function forceSetStatus(string $name, ?string $reason = null): self
{
$oldStatus = $this->latestStatus();

Expand Down

0 comments on commit 388ad61

Please sign in to comment.