Added an approved flag to organisations with a status column as an indicator, pending registration/approval workflow
This commit is contained in:
@@ -10,6 +10,7 @@
|
||||
namespace UserFrosting\Sprinkle\Organisations\Sprunje;
|
||||
|
||||
use UserFrosting\Sprinkle\Core\Sprunje\Sprunje;
|
||||
use UserFrosting\Sprinkle\Core\Facades\Translator;
|
||||
|
||||
/**
|
||||
* OrganisationSprunje.
|
||||
@@ -22,18 +23,24 @@ class OrganisationSprunje extends Sprunje
|
||||
{
|
||||
protected $name = 'organisations';
|
||||
|
||||
protected $listable = [
|
||||
'status',
|
||||
];
|
||||
|
||||
protected $sortable = [
|
||||
'name',
|
||||
'description',
|
||||
'member_count',
|
||||
'admin_count'
|
||||
'admin_count',
|
||||
'status',
|
||||
];
|
||||
|
||||
protected $filterable = [
|
||||
'name',
|
||||
'description',
|
||||
'member_count',
|
||||
'admin_count'
|
||||
'admin_count',
|
||||
'status',
|
||||
];
|
||||
|
||||
/**
|
||||
@@ -43,4 +50,63 @@ class OrganisationSprunje extends Sprunje
|
||||
{
|
||||
return $this->classMapper->createInstance('organisation')->newQuery()->joinMemberCounts();
|
||||
}
|
||||
|
||||
/**
|
||||
* Filter by status (approved, pending).
|
||||
*
|
||||
* @param Builder $query
|
||||
* @param mixed $value
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
protected function filterStatus($query, $value)
|
||||
{
|
||||
// Split value on separator for OR queries
|
||||
$values = explode($this->orSeparator, $value);
|
||||
$query->where(function ($query) use ($values) {
|
||||
foreach ($values as $value) {
|
||||
if ($value == 'approved') {
|
||||
$query->orWhere('flag_approved', 1);
|
||||
} elseif ($value == 'pending') {
|
||||
$query->orWhere('flag_approved', 0);
|
||||
}
|
||||
}
|
||||
});
|
||||
|
||||
return $this;
|
||||
}
|
||||
|
||||
/**
|
||||
* Return a list of possible user statuses.
|
||||
*
|
||||
* @return array
|
||||
*/
|
||||
protected function listStatus()
|
||||
{
|
||||
return [
|
||||
[
|
||||
'value' => 'approved',
|
||||
'text' => Translator::translate('APPROVED'),
|
||||
],
|
||||
[
|
||||
'value' => 'pending',
|
||||
'text' => Translator::translate('PENDING'),
|
||||
],
|
||||
];
|
||||
}
|
||||
|
||||
/**
|
||||
* Sort approved, pending
|
||||
*
|
||||
* @param Builder $query
|
||||
* @param string $direction
|
||||
*
|
||||
* @return self
|
||||
*/
|
||||
protected function sortStatus($query, $direction)
|
||||
{
|
||||
$query->orderBy('flag_approved', ($direction === 'desc' ? 'asc' : 'desc'));
|
||||
|
||||
return $this;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user