File: /var/www/ipsremont-demo/app/Models/Role.php
<?php
namespace App\Models;
use App\Traits\Sortable;
use Illuminate\Database\Eloquent\SoftDeletes;
/**
* @property int $id
* @property string $name
* @property string $slug
* @property string $type
* @property string $description
* @property string $deleted_at
* @property string $created_at
* @property string $updated_at
* @property int $deletable
* @property int $in_constructor
*/
class Role extends BaseModel
{
use SoftDeletes, Sortable;
const service = 'service'; //роль сервис
const manager = 'manager'; //роль менеджер
const admin = 'admin'; //роль админ
const ROLE_ID_ADMIN = 1;
const ROLE_ID_MANAGER = 2;
const ROLE_ID_SERVICE = 3;
protected $table = 'roles';
protected $fillable = [
'name',
'description',
];
protected static $labels = [
'name' => 'roles.name',
'description' => 'roles.description',
'type' => 'roles.type',
];
public static function columns()
{
return [
"fields" => [
[
"displayName" => 'grid.name',
"field" => "name",
"sort" => true,
"sortType" => 'asc',
],
[
"displayName" => 'grid.description',
"field" => "description",
"sort" => true,
"sortType" => 'asc',
],
[
"displayName" => 'grid.type',
"field" => "type",
"sort" => true,
"sortType" => 'asc',
],
[
"displayName" => 'grid.users',
"field" => "users",
"sort" => false,
"sortType" => 'asc',
],
[
"displayName" => '',
"field" => 'action',
"sort" => false,
],
],
"sortDefault" => [
[
"field" => 'type',
"sort" => 'asc',
],
[
"field" => 'name',
"sort" => 'asc',
],
],
];
}
public static function getEditableTypes()
{
return [
'manager' => 'manager',
'service' => 'service',
];
}
public static function getEditableTypesNames()
{
return [
'manager' => 'roles.manager',
'service' => 'roles.service',
];
}
public function permissions()
{
return $this->belongsToMany(Permission::class, 'roles_permissions');
}
/**
* Scope a query to only include active
*
* @param \Illuminate\Database\Eloquent\Builder $query
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeNotService($query)
{
return $query->where('type', '<>', self::service);
}
/**
* Scope a query to only include active
*
* @param \Illuminate\Database\Eloquent\Builder $query
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeService($query)
{
return $query->where('type', self::service);
}
/**
* Scope a query to only include active
*
* @param \Illuminate\Database\Eloquent\Builder $query
*
* @return \Illuminate\Database\Eloquent\Builder
*/
public function scopeForConstructor($query)
{
return $query->whereIn('type', self::getEditableTypes());
}
}